17067 lines
2.9 MiB
Plaintext
17067 lines
2.9 MiB
Plaintext
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||
<head>
|
||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||
<meta name="generator" content="Doxygen 1.8.17"/>
|
||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||
<title>CocoaTweet: build/_deps/json-src/include/nlohmann/json.hpp Source File</title>
|
||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||
<script type="text/javascript" src="jquery.js"></script>
|
||
<script type="text/javascript" src="dynsections.js"></script>
|
||
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
||
<script type="text/javascript" src="search/searchdata.js"></script>
|
||
<script type="text/javascript" src="search/search.js"></script>
|
||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||
</head>
|
||
<body>
|
||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||
<div id="titlearea">
|
||
<table cellspacing="0" cellpadding="0">
|
||
<tbody>
|
||
<tr style="height: 56px;">
|
||
<td id="projectalign" style="padding-left: 0.5em;">
|
||
<div id="projectname">CocoaTweet
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
<!-- end header part -->
|
||
<!-- Generated by Doxygen 1.8.17 -->
|
||
<script type="text/javascript">
|
||
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
|
||
var searchBox = new SearchBox("searchBox", "search",false,'Search');
|
||
/* @license-end */
|
||
</script>
|
||
<script type="text/javascript" src="menudata.js"></script>
|
||
<script type="text/javascript" src="menu.js"></script>
|
||
<script type="text/javascript">
|
||
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
|
||
$(function() {
|
||
initMenu('',true,false,'search.php','Search');
|
||
$(document).ready(function() { init_search(); });
|
||
});
|
||
/* @license-end */</script>
|
||
<div id="main-nav"></div>
|
||
<!-- window showing the filter options -->
|
||
<div id="MSearchSelectWindow"
|
||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||
</div>
|
||
|
||
<!-- iframe showing the search results (closed by default) -->
|
||
<div id="MSearchResultsWindow">
|
||
<iframe src="javascript:void(0)" frameborder="0"
|
||
name="MSearchResults" id="MSearchResults">
|
||
</iframe>
|
||
</div>
|
||
|
||
<div id="nav-path" class="navpath">
|
||
<ul>
|
||
<li class="navelem"><a class="el" href="dir_4fef79e7177ba769987a8da36c892c5f.html">build</a></li><li class="navelem"><a class="el" href="dir_a57a94e38c03835eed49274b75b0176d.html">_deps</a></li><li class="navelem"><a class="el" href="dir_06bf8d3e2008620d16ac418f1dde3e85.html">json-src</a></li><li class="navelem"><a class="el" href="dir_7b204e709373ad92a397cb8b8f7260f0.html">include</a></li><li class="navelem"><a class="el" href="dir_0c442c3451b59b63dfe09a0379a94178.html">nlohmann</a></li> </ul>
|
||
</div>
|
||
</div><!-- top -->
|
||
<div class="header">
|
||
<div class="headertitle">
|
||
<div class="title">json.hpp</div> </div>
|
||
</div><!--header-->
|
||
<div class="contents">
|
||
<a href="json_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div>
|
||
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> __ _____ _____ _____</span></div>
|
||
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> __| | __| | | | JSON for Modern C++</span></div>
|
||
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">| | |__ | | | | | | version 3.7.3</span></div>
|
||
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">|_____|_____|_____|_|___| https://github.com/nlohmann/json</span></div>
|
||
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"></span> </div>
|
||
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">Licensed under the MIT License <http://opensource.org/licenses/MIT>.</span></div>
|
||
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">SPDX-License-Identifier: MIT</span></div>
|
||
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">Copyright (c) 2013-2019 Niels Lohmann <http://nlohmann.me>.</span></div>
|
||
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"></span> </div>
|
||
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">Permission is hereby granted, free of charge, to any person obtaining a copy</span></div>
|
||
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment">of this software and associated documentation files (the "Software"), to deal</span></div>
|
||
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment">in the Software without restriction, including without limitation the rights</span></div>
|
||
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">to use, copy, modify, merge, publish, distribute, sublicense, and/or sell</span></div>
|
||
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">copies of the Software, and to permit persons to whom the Software is</span></div>
|
||
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment">furnished to do so, subject to the following conditions:</span></div>
|
||
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"></span> </div>
|
||
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment">The above copyright notice and this permission notice shall be included in all</span></div>
|
||
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment">copies or substantial portions of the Software.</span></div>
|
||
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"></span> </div>
|
||
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment">THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR</span></div>
|
||
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment">IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,</span></div>
|
||
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment">FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE</span></div>
|
||
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment">AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER</span></div>
|
||
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment">LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,</span></div>
|
||
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment">OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE</span></div>
|
||
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment">SOFTWARE.</span></div>
|
||
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment">*/</span></div>
|
||
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  </div>
|
||
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#ifndef INCLUDE_NLOHMANN_JSON_HPP_</span></div>
|
||
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#define INCLUDE_NLOHMANN_JSON_HPP_</span></div>
|
||
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  </div>
|
||
<div class="line"><a name="l00033"></a><span class="lineno"><a class="line" href="json_8hpp.html#a7c94253db90041af11dd946a49f0f8a4"> 33</a></span> <span class="preprocessor">#define NLOHMANN_JSON_VERSION_MAJOR 3</span></div>
|
||
<div class="line"><a name="l00034"></a><span class="lineno"><a class="line" href="json_8hpp.html#ab5ca1e164894d78d3276d2e5fe58c5e3"> 34</a></span> <span class="preprocessor">#define NLOHMANN_JSON_VERSION_MINOR 7</span></div>
|
||
<div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="json_8hpp.html#a307e0238ebc35e99ea45c68823eb83eb"> 35</a></span> <span class="preprocessor">#define NLOHMANN_JSON_VERSION_PATCH 3</span></div>
|
||
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  </div>
|
||
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#include <algorithm></span> <span class="comment">// all_of, find, for_each</span></div>
|
||
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="preprocessor">#include <cassert></span> <span class="comment">// assert</span></div>
|
||
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="preprocessor">#include <ciso646></span> <span class="comment">// and, not, or</span></div>
|
||
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="preprocessor">#include <cstddef></span> <span class="comment">// nullptr_t, ptrdiff_t, size_t</span></div>
|
||
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="preprocessor">#include <functional></span> <span class="comment">// hash, less</span></div>
|
||
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="preprocessor">#include <initializer_list></span> <span class="comment">// initializer_list</span></div>
|
||
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="preprocessor">#include <iosfwd></span> <span class="comment">// istream, ostream</span></div>
|
||
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="preprocessor">#include <iterator></span> <span class="comment">// random_access_iterator_tag</span></div>
|
||
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="preprocessor">#include <memory></span> <span class="comment">// unique_ptr</span></div>
|
||
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="preprocessor">#include <numeric></span> <span class="comment">// accumulate</span></div>
|
||
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="preprocessor">#include <string></span> <span class="comment">// string, stoi, to_string</span></div>
|
||
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="preprocessor">#include <utility></span> <span class="comment">// declval, forward, move, pair, swap</span></div>
|
||
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="preprocessor">#include <vector></span> <span class="comment">// vector</span></div>
|
||
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  </div>
|
||
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="comment">// #include <nlohmann/adl_serializer.hpp></span></div>
|
||
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  </div>
|
||
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  </div>
|
||
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="preprocessor">#include <utility></span></div>
|
||
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  </div>
|
||
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="comment">// #include <nlohmann/detail/conversions/from_json.hpp></span></div>
|
||
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  </div>
|
||
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  </div>
|
||
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="preprocessor">#include <algorithm></span> <span class="comment">// transform</span></div>
|
||
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="preprocessor">#include <array></span> <span class="comment">// array</span></div>
|
||
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="preprocessor">#include <ciso646></span> <span class="comment">// and, not</span></div>
|
||
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="preprocessor">#include <forward_list></span> <span class="comment">// forward_list</span></div>
|
||
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="preprocessor">#include <iterator></span> <span class="comment">// inserter, front_inserter, end</span></div>
|
||
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="preprocessor">#include <map></span> <span class="comment">// map</span></div>
|
||
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="preprocessor">#include <string></span> <span class="comment">// string</span></div>
|
||
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span> <span class="preprocessor">#include <tuple></span> <span class="comment">// tuple, make_tuple</span></div>
|
||
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="preprocessor">#include <type_traits></span> <span class="comment">// is_arithmetic, is_same, is_enum, underlying_type, is_convertible</span></div>
|
||
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span> <span class="preprocessor">#include <unordered_map></span> <span class="comment">// unordered_map</span></div>
|
||
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span> <span class="preprocessor">#include <utility></span> <span class="comment">// pair, declval</span></div>
|
||
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <span class="preprocessor">#include <valarray></span> <span class="comment">// valarray</span></div>
|
||
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  </div>
|
||
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="comment">// #include <nlohmann/detail/exceptions.hpp></span></div>
|
||
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  </div>
|
||
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  </div>
|
||
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span> <span class="preprocessor">#include <exception></span> <span class="comment">// exception</span></div>
|
||
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span> <span class="preprocessor">#include <stdexcept></span> <span class="comment">// runtime_error</span></div>
|
||
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span> <span class="preprocessor">#include <string></span> <span class="comment">// to_string</span></div>
|
||
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  </div>
|
||
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span> <span class="comment">// #include <nlohmann/detail/input/position_t.hpp></span></div>
|
||
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  </div>
|
||
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  </div>
|
||
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span> <span class="preprocessor">#include <cstddef></span> <span class="comment">// size_t</span></div>
|
||
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  </div>
|
||
<div class="line"><a name="l00084"></a><span class="lineno"><a class="line" href="namespacenlohmann.html"> 84</a></span> <span class="keyword">namespace </span><a class="code" href="namespacenlohmann.html">nlohmann</a></div>
|
||
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span> {</div>
|
||
<div class="line"><a name="l00086"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html"> 86</a></span> <span class="keyword">namespace </span>detail</div>
|
||
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span> {</div>
|
||
<div class="line"><a name="l00089"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1position__t.html"> 89</a></span> <span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1position__t.html">position_t</a></div>
|
||
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span> {</div>
|
||
<div class="line"><a name="l00092"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1position__t.html#a94cf85cd91d478c20ae143eba906ea1a"> 92</a></span>  std::size_t <a class="code" href="structnlohmann_1_1detail_1_1position__t.html#a94cf85cd91d478c20ae143eba906ea1a">chars_read_total</a> = 0;</div>
|
||
<div class="line"><a name="l00094"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1position__t.html#a74df94563dd32102152ceb8c6d9041d8"> 94</a></span>  std::size_t <a class="code" href="structnlohmann_1_1detail_1_1position__t.html#a74df94563dd32102152ceb8c6d9041d8">chars_read_current_line</a> = 0;</div>
|
||
<div class="line"><a name="l00096"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1position__t.html#a4bbad8bc2c0d17c1b61c3ce729908b71"> 96</a></span>  std::size_t <a class="code" href="structnlohmann_1_1detail_1_1position__t.html#a4bbad8bc2c0d17c1b61c3ce729908b71">lines_read</a> = 0;</div>
|
||
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  </div>
|
||
<div class="line"><a name="l00099"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1position__t.html#ac9ad1e0f143f162e2e0c979cd678d683"> 99</a></span>  constexpr <span class="keyword">operator</span> size_t()<span class="keyword"> const</span></div>
|
||
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span> <span class="keyword"> </span>{</div>
|
||
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keywordflow">return</span> <a class="code" href="structnlohmann_1_1detail_1_1position__t.html#a94cf85cd91d478c20ae143eba906ea1a">chars_read_total</a>;</div>
|
||
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  }</div>
|
||
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span> };</div>
|
||
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  </div>
|
||
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span> } <span class="comment">// namespace detail</span></div>
|
||
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span> } <span class="comment">// namespace nlohmann</span></div>
|
||
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  </div>
|
||
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span> <span class="comment">// #include <nlohmann/detail/macro_scope.hpp></span></div>
|
||
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  </div>
|
||
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  </div>
|
||
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span> <span class="preprocessor">#include <utility></span> <span class="comment">// pair</span></div>
|
||
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span> <span class="comment">// #include <nlohmann/thirdparty/hedley/hedley.hpp></span></div>
|
||
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span> <span class="comment">/* Hedley - https://nemequ.github.io/hedley</span></div>
|
||
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span> <span class="comment"> * Created by Evan Nemerson <evan@nemerson.com></span></div>
|
||
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span> <span class="comment"> *</span></div>
|
||
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span> <span class="comment"> * To the extent possible under law, the author(s) have dedicated all</span></div>
|
||
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span> <span class="comment"> * copyright and related and neighboring rights to this software to</span></div>
|
||
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span> <span class="comment"> * the public domain worldwide. This software is distributed without</span></div>
|
||
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span> <span class="comment"> * any warranty.</span></div>
|
||
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span> <span class="comment"> *</span></div>
|
||
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span> <span class="comment"> * For details, see <http://creativecommons.org/publicdomain/zero/1.0/>.</span></div>
|
||
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span> <span class="comment"> * SPDX-License-Identifier: CC0-1.0</span></div>
|
||
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span> <span class="comment"> */</span></div>
|
||
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  </div>
|
||
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span> <span class="preprocessor">#if !defined(JSON_HEDLEY_VERSION) || (JSON_HEDLEY_VERSION < 11)</span></div>
|
||
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span> <span class="preprocessor">#if defined(JSON_HEDLEY_VERSION)</span></div>
|
||
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span> <span class="preprocessor"> #undef JSON_HEDLEY_VERSION</span></div>
|
||
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00129"></a><span class="lineno"><a class="line" href="json_8hpp.html#ae4654024695783bdf7cbd900f0e0634a"> 129</a></span> <span class="preprocessor">#define JSON_HEDLEY_VERSION 11</span></div>
|
||
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  </div>
|
||
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span> <span class="preprocessor">#if defined(JSON_HEDLEY_STRINGIFY_EX)</span></div>
|
||
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span> <span class="preprocessor"> #undef JSON_HEDLEY_STRINGIFY_EX</span></div>
|
||
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00134"></a><span class="lineno"><a class="line" href="json_8hpp.html#a8b50e69690eed3a7e11797b1122b4302"> 134</a></span> <span class="preprocessor">#define JSON_HEDLEY_STRINGIFY_EX(x) #x</span></div>
|
||
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  </div>
|
||
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span> <span class="preprocessor">#if defined(JSON_HEDLEY_STRINGIFY)</span></div>
|
||
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span> <span class="preprocessor"> #undef JSON_HEDLEY_STRINGIFY</span></div>
|
||
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00139"></a><span class="lineno"><a class="line" href="json_8hpp.html#a9b2aefadecfe77306599a08b0d8147ca"> 139</a></span> <span class="preprocessor">#define JSON_HEDLEY_STRINGIFY(x) JSON_HEDLEY_STRINGIFY_EX(x)</span></div>
|
||
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  </div>
|
||
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span> <span class="preprocessor">#if defined(JSON_HEDLEY_CONCAT_EX)</span></div>
|
||
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span> <span class="preprocessor"> #undef JSON_HEDLEY_CONCAT_EX</span></div>
|
||
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00144"></a><span class="lineno"><a class="line" href="json_8hpp.html#aee52531ff30270c04958309efa66a5da"> 144</a></span> <span class="preprocessor">#define JSON_HEDLEY_CONCAT_EX(a,b) a##b</span></div>
|
||
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  </div>
|
||
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span> <span class="preprocessor">#if defined(JSON_HEDLEY_CONCAT)</span></div>
|
||
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span> <span class="preprocessor"> #undef JSON_HEDLEY_CONCAT</span></div>
|
||
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00149"></a><span class="lineno"><a class="line" href="json_8hpp.html#a4ec16c2642fdc5876d8dbeab3445b313"> 149</a></span> <span class="preprocessor">#define JSON_HEDLEY_CONCAT(a,b) JSON_HEDLEY_CONCAT_EX(a,b)</span></div>
|
||
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  </div>
|
||
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span> <span class="preprocessor">#if defined(JSON_HEDLEY_VERSION_ENCODE)</span></div>
|
||
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span> <span class="preprocessor"> #undef JSON_HEDLEY_VERSION_ENCODE</span></div>
|
||
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00154"></a><span class="lineno"><a class="line" href="json_8hpp.html#aa1da535c59b21f70e5967b66473543f0"> 154</a></span> <span class="preprocessor">#define JSON_HEDLEY_VERSION_ENCODE(major,minor,revision) (((major) * 1000000) + ((minor) * 1000) + (revision))</span></div>
|
||
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  </div>
|
||
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span> <span class="preprocessor">#if defined(JSON_HEDLEY_VERSION_DECODE_MAJOR)</span></div>
|
||
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span> <span class="preprocessor"> #undef JSON_HEDLEY_VERSION_DECODE_MAJOR</span></div>
|
||
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00159"></a><span class="lineno"><a class="line" href="json_8hpp.html#a50f81c80525d6fbce743d5d28b53ff73"> 159</a></span> <span class="preprocessor">#define JSON_HEDLEY_VERSION_DECODE_MAJOR(version) ((version) / 1000000)</span></div>
|
||
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  </div>
|
||
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span> <span class="preprocessor">#if defined(JSON_HEDLEY_VERSION_DECODE_MINOR)</span></div>
|
||
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span> <span class="preprocessor"> #undef JSON_HEDLEY_VERSION_DECODE_MINOR</span></div>
|
||
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00164"></a><span class="lineno"><a class="line" href="json_8hpp.html#ae55f01749c4cc564b20b0f2650f10519"> 164</a></span> <span class="preprocessor">#define JSON_HEDLEY_VERSION_DECODE_MINOR(version) (((version) % 1000000) / 1000)</span></div>
|
||
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  </div>
|
||
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span> <span class="preprocessor">#if defined(JSON_HEDLEY_VERSION_DECODE_REVISION)</span></div>
|
||
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span> <span class="preprocessor"> #undef JSON_HEDLEY_VERSION_DECODE_REVISION</span></div>
|
||
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00169"></a><span class="lineno"><a class="line" href="json_8hpp.html#a2d04cc47c899e9addd019e0e7d1ebdbb"> 169</a></span> <span class="preprocessor">#define JSON_HEDLEY_VERSION_DECODE_REVISION(version) ((version) % 1000)</span></div>
|
||
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  </div>
|
||
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span> <span class="preprocessor">#if defined(JSON_HEDLEY_GNUC_VERSION)</span></div>
|
||
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span> <span class="preprocessor"> #undef JSON_HEDLEY_GNUC_VERSION</span></div>
|
||
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span> <span class="preprocessor">#if defined(__GNUC__) && defined(__GNUC_PATCHLEVEL__)</span></div>
|
||
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span> <span class="preprocessor"> #define JSON_HEDLEY_GNUC_VERSION JSON_HEDLEY_VERSION_ENCODE(__GNUC__, __GNUC_MINOR__, __GNUC_PATCHLEVEL__)</span></div>
|
||
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span> <span class="preprocessor">#elif defined(__GNUC__)</span></div>
|
||
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span> <span class="preprocessor"> #define JSON_HEDLEY_GNUC_VERSION JSON_HEDLEY_VERSION_ENCODE(__GNUC__, __GNUC_MINOR__, 0)</span></div>
|
||
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  </div>
|
||
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span> <span class="preprocessor">#if defined(JSON_HEDLEY_GNUC_VERSION_CHECK)</span></div>
|
||
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span> <span class="preprocessor"> #undef JSON_HEDLEY_GNUC_VERSION_CHECK</span></div>
|
||
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span> <span class="preprocessor">#if defined(JSON_HEDLEY_GNUC_VERSION)</span></div>
|
||
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span> <span class="preprocessor"> #define JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_GNUC_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))</span></div>
|
||
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span> <span class="preprocessor">#else</span></div>
|
||
<div class="line"><a name="l00186"></a><span class="lineno"><a class="line" href="json_8hpp.html#a074e795380699252f28c9526ca83e586"> 186</a></span> <span class="preprocessor"> #define JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) (0)</span></div>
|
||
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  </div>
|
||
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span> <span class="preprocessor">#if defined(JSON_HEDLEY_MSVC_VERSION)</span></div>
|
||
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span> <span class="preprocessor"> #undef JSON_HEDLEY_MSVC_VERSION</span></div>
|
||
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span> <span class="preprocessor">#if defined(_MSC_FULL_VER) && (_MSC_FULL_VER >= 140000000)</span></div>
|
||
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span> <span class="preprocessor"> #define JSON_HEDLEY_MSVC_VERSION JSON_HEDLEY_VERSION_ENCODE(_MSC_FULL_VER / 10000000, (_MSC_FULL_VER % 10000000) / 100000, (_MSC_FULL_VER % 100000) / 100)</span></div>
|
||
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span> <span class="preprocessor">#elif defined(_MSC_FULL_VER)</span></div>
|
||
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span> <span class="preprocessor"> #define JSON_HEDLEY_MSVC_VERSION JSON_HEDLEY_VERSION_ENCODE(_MSC_FULL_VER / 1000000, (_MSC_FULL_VER % 1000000) / 10000, (_MSC_FULL_VER % 10000) / 10)</span></div>
|
||
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span> <span class="preprocessor">#elif defined(_MSC_VER)</span></div>
|
||
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span> <span class="preprocessor"> #define JSON_HEDLEY_MSVC_VERSION JSON_HEDLEY_VERSION_ENCODE(_MSC_VER / 100, _MSC_VER % 100, 0)</span></div>
|
||
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  </div>
|
||
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span> <span class="preprocessor">#if defined(JSON_HEDLEY_MSVC_VERSION_CHECK)</span></div>
|
||
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span> <span class="preprocessor"> #undef JSON_HEDLEY_MSVC_VERSION_CHECK</span></div>
|
||
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span> <span class="preprocessor">#if !defined(_MSC_VER)</span></div>
|
||
<div class="line"><a name="l00204"></a><span class="lineno"><a class="line" href="json_8hpp.html#ac3dc0b5b04f307fc875f9470c0cc841f"> 204</a></span> <span class="preprocessor"> #define JSON_HEDLEY_MSVC_VERSION_CHECK(major,minor,patch) (0)</span></div>
|
||
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span> <span class="preprocessor">#elif defined(_MSC_VER) && (_MSC_VER >= 1400)</span></div>
|
||
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span> <span class="preprocessor"> #define JSON_HEDLEY_MSVC_VERSION_CHECK(major,minor,patch) (_MSC_FULL_VER >= ((major * 10000000) + (minor * 100000) + (patch)))</span></div>
|
||
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span> <span class="preprocessor">#elif defined(_MSC_VER) && (_MSC_VER >= 1200)</span></div>
|
||
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span> <span class="preprocessor"> #define JSON_HEDLEY_MSVC_VERSION_CHECK(major,minor,patch) (_MSC_FULL_VER >= ((major * 1000000) + (minor * 10000) + (patch)))</span></div>
|
||
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span> <span class="preprocessor">#else</span></div>
|
||
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span> <span class="preprocessor"> #define JSON_HEDLEY_MSVC_VERSION_CHECK(major,minor,patch) (_MSC_VER >= ((major * 100) + (minor)))</span></div>
|
||
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  </div>
|
||
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span> <span class="preprocessor">#if defined(JSON_HEDLEY_INTEL_VERSION)</span></div>
|
||
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span> <span class="preprocessor"> #undef JSON_HEDLEY_INTEL_VERSION</span></div>
|
||
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span> <span class="preprocessor">#if defined(__INTEL_COMPILER) && defined(__INTEL_COMPILER_UPDATE)</span></div>
|
||
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span> <span class="preprocessor"> #define JSON_HEDLEY_INTEL_VERSION JSON_HEDLEY_VERSION_ENCODE(__INTEL_COMPILER / 100, __INTEL_COMPILER % 100, __INTEL_COMPILER_UPDATE)</span></div>
|
||
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span> <span class="preprocessor">#elif defined(__INTEL_COMPILER)</span></div>
|
||
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span> <span class="preprocessor"> #define JSON_HEDLEY_INTEL_VERSION JSON_HEDLEY_VERSION_ENCODE(__INTEL_COMPILER / 100, __INTEL_COMPILER % 100, 0)</span></div>
|
||
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  </div>
|
||
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span> <span class="preprocessor">#if defined(JSON_HEDLEY_INTEL_VERSION_CHECK)</span></div>
|
||
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span> <span class="preprocessor"> #undef JSON_HEDLEY_INTEL_VERSION_CHECK</span></div>
|
||
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span> <span class="preprocessor">#if defined(JSON_HEDLEY_INTEL_VERSION)</span></div>
|
||
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span> <span class="preprocessor"> #define JSON_HEDLEY_INTEL_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_INTEL_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))</span></div>
|
||
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span> <span class="preprocessor">#else</span></div>
|
||
<div class="line"><a name="l00228"></a><span class="lineno"><a class="line" href="json_8hpp.html#ae51b1abb6876168df25d3f36fa335c94"> 228</a></span> <span class="preprocessor"> #define JSON_HEDLEY_INTEL_VERSION_CHECK(major,minor,patch) (0)</span></div>
|
||
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  </div>
|
||
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span> <span class="preprocessor">#if defined(JSON_HEDLEY_PGI_VERSION)</span></div>
|
||
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span> <span class="preprocessor"> #undef JSON_HEDLEY_PGI_VERSION</span></div>
|
||
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span> <span class="preprocessor">#if defined(__PGI) && defined(__PGIC__) && defined(__PGIC_MINOR__) && defined(__PGIC_PATCHLEVEL__)</span></div>
|
||
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span> <span class="preprocessor"> #define JSON_HEDLEY_PGI_VERSION JSON_HEDLEY_VERSION_ENCODE(__PGIC__, __PGIC_MINOR__, __PGIC_PATCHLEVEL__)</span></div>
|
||
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  </div>
|
||
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span> <span class="preprocessor">#if defined(JSON_HEDLEY_PGI_VERSION_CHECK)</span></div>
|
||
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span> <span class="preprocessor"> #undef JSON_HEDLEY_PGI_VERSION_CHECK</span></div>
|
||
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span> <span class="preprocessor">#if defined(JSON_HEDLEY_PGI_VERSION)</span></div>
|
||
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span> <span class="preprocessor"> #define JSON_HEDLEY_PGI_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_PGI_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))</span></div>
|
||
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span> <span class="preprocessor">#else</span></div>
|
||
<div class="line"><a name="l00244"></a><span class="lineno"><a class="line" href="json_8hpp.html#a009a77cb8a9fd33aafff173bb945128d"> 244</a></span> <span class="preprocessor"> #define JSON_HEDLEY_PGI_VERSION_CHECK(major,minor,patch) (0)</span></div>
|
||
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  </div>
|
||
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span> <span class="preprocessor">#if defined(JSON_HEDLEY_SUNPRO_VERSION)</span></div>
|
||
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span> <span class="preprocessor"> #undef JSON_HEDLEY_SUNPRO_VERSION</span></div>
|
||
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span> <span class="preprocessor">#if defined(__SUNPRO_C) && (__SUNPRO_C > 0x1000)</span></div>
|
||
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span> <span class="preprocessor"> #define JSON_HEDLEY_SUNPRO_VERSION JSON_HEDLEY_VERSION_ENCODE((((__SUNPRO_C >> 16) & 0xf) * 10) + ((__SUNPRO_C >> 12) & 0xf), (((__SUNPRO_C >> 8) & 0xf) * 10) + ((__SUNPRO_C >> 4) & 0xf), (__SUNPRO_C & 0xf) * 10)</span></div>
|
||
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span> <span class="preprocessor">#elif defined(__SUNPRO_C)</span></div>
|
||
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span> <span class="preprocessor"> #define JSON_HEDLEY_SUNPRO_VERSION JSON_HEDLEY_VERSION_ENCODE((__SUNPRO_C >> 8) & 0xf, (__SUNPRO_C >> 4) & 0xf, (__SUNPRO_C) & 0xf)</span></div>
|
||
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span> <span class="preprocessor">#elif defined(__SUNPRO_CC) && (__SUNPRO_CC > 0x1000)</span></div>
|
||
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span> <span class="preprocessor"> #define JSON_HEDLEY_SUNPRO_VERSION JSON_HEDLEY_VERSION_ENCODE((((__SUNPRO_CC >> 16) & 0xf) * 10) + ((__SUNPRO_CC >> 12) & 0xf), (((__SUNPRO_CC >> 8) & 0xf) * 10) + ((__SUNPRO_CC >> 4) & 0xf), (__SUNPRO_CC & 0xf) * 10)</span></div>
|
||
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span> <span class="preprocessor">#elif defined(__SUNPRO_CC)</span></div>
|
||
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span> <span class="preprocessor"> #define JSON_HEDLEY_SUNPRO_VERSION JSON_HEDLEY_VERSION_ENCODE((__SUNPRO_CC >> 8) & 0xf, (__SUNPRO_CC >> 4) & 0xf, (__SUNPRO_CC) & 0xf)</span></div>
|
||
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  </div>
|
||
<div class="line"><a name="l00260"></a><span class="lineno"> 260</span> <span class="preprocessor">#if defined(JSON_HEDLEY_SUNPRO_VERSION_CHECK)</span></div>
|
||
<div class="line"><a name="l00261"></a><span class="lineno"> 261</span> <span class="preprocessor"> #undef JSON_HEDLEY_SUNPRO_VERSION_CHECK</span></div>
|
||
<div class="line"><a name="l00262"></a><span class="lineno"> 262</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00263"></a><span class="lineno"> 263</span> <span class="preprocessor">#if defined(JSON_HEDLEY_SUNPRO_VERSION)</span></div>
|
||
<div class="line"><a name="l00264"></a><span class="lineno"> 264</span> <span class="preprocessor"> #define JSON_HEDLEY_SUNPRO_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_SUNPRO_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))</span></div>
|
||
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span> <span class="preprocessor">#else</span></div>
|
||
<div class="line"><a name="l00266"></a><span class="lineno"><a class="line" href="json_8hpp.html#a4b6d318de76d6d23850ec1a588bdeffa"> 266</a></span> <span class="preprocessor"> #define JSON_HEDLEY_SUNPRO_VERSION_CHECK(major,minor,patch) (0)</span></div>
|
||
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  </div>
|
||
<div class="line"><a name="l00269"></a><span class="lineno"> 269</span> <span class="preprocessor">#if defined(JSON_HEDLEY_EMSCRIPTEN_VERSION)</span></div>
|
||
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span> <span class="preprocessor"> #undef JSON_HEDLEY_EMSCRIPTEN_VERSION</span></div>
|
||
<div class="line"><a name="l00271"></a><span class="lineno"> 271</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00272"></a><span class="lineno"> 272</span> <span class="preprocessor">#if defined(__EMSCRIPTEN__)</span></div>
|
||
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span> <span class="preprocessor"> #define JSON_HEDLEY_EMSCRIPTEN_VERSION JSON_HEDLEY_VERSION_ENCODE(__EMSCRIPTEN_major__, __EMSCRIPTEN_minor__, __EMSCRIPTEN_tiny__)</span></div>
|
||
<div class="line"><a name="l00274"></a><span class="lineno"> 274</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  </div>
|
||
<div class="line"><a name="l00276"></a><span class="lineno"> 276</span> <span class="preprocessor">#if defined(JSON_HEDLEY_EMSCRIPTEN_VERSION_CHECK)</span></div>
|
||
<div class="line"><a name="l00277"></a><span class="lineno"> 277</span> <span class="preprocessor"> #undef JSON_HEDLEY_EMSCRIPTEN_VERSION_CHECK</span></div>
|
||
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00279"></a><span class="lineno"> 279</span> <span class="preprocessor">#if defined(JSON_HEDLEY_EMSCRIPTEN_VERSION)</span></div>
|
||
<div class="line"><a name="l00280"></a><span class="lineno"> 280</span> <span class="preprocessor"> #define JSON_HEDLEY_EMSCRIPTEN_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_EMSCRIPTEN_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))</span></div>
|
||
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span> <span class="preprocessor">#else</span></div>
|
||
<div class="line"><a name="l00282"></a><span class="lineno"><a class="line" href="json_8hpp.html#a472a0656b154bb30cf6e8fb8a31b9209"> 282</a></span> <span class="preprocessor"> #define JSON_HEDLEY_EMSCRIPTEN_VERSION_CHECK(major,minor,patch) (0)</span></div>
|
||
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  </div>
|
||
<div class="line"><a name="l00285"></a><span class="lineno"> 285</span> <span class="preprocessor">#if defined(JSON_HEDLEY_ARM_VERSION)</span></div>
|
||
<div class="line"><a name="l00286"></a><span class="lineno"> 286</span> <span class="preprocessor"> #undef JSON_HEDLEY_ARM_VERSION</span></div>
|
||
<div class="line"><a name="l00287"></a><span class="lineno"> 287</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00288"></a><span class="lineno"> 288</span> <span class="preprocessor">#if defined(__CC_ARM) && defined(__ARMCOMPILER_VERSION)</span></div>
|
||
<div class="line"><a name="l00289"></a><span class="lineno"> 289</span> <span class="preprocessor"> #define JSON_HEDLEY_ARM_VERSION JSON_HEDLEY_VERSION_ENCODE(__ARMCOMPILER_VERSION / 1000000, (__ARMCOMPILER_VERSION % 1000000) / 10000, (__ARMCOMPILER_VERSION % 10000) / 100)</span></div>
|
||
<div class="line"><a name="l00290"></a><span class="lineno"> 290</span> <span class="preprocessor">#elif defined(__CC_ARM) && defined(__ARMCC_VERSION)</span></div>
|
||
<div class="line"><a name="l00291"></a><span class="lineno"> 291</span> <span class="preprocessor"> #define JSON_HEDLEY_ARM_VERSION JSON_HEDLEY_VERSION_ENCODE(__ARMCC_VERSION / 1000000, (__ARMCC_VERSION % 1000000) / 10000, (__ARMCC_VERSION % 10000) / 100)</span></div>
|
||
<div class="line"><a name="l00292"></a><span class="lineno"> 292</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  </div>
|
||
<div class="line"><a name="l00294"></a><span class="lineno"> 294</span> <span class="preprocessor">#if defined(JSON_HEDLEY_ARM_VERSION_CHECK)</span></div>
|
||
<div class="line"><a name="l00295"></a><span class="lineno"> 295</span> <span class="preprocessor"> #undef JSON_HEDLEY_ARM_VERSION_CHECK</span></div>
|
||
<div class="line"><a name="l00296"></a><span class="lineno"> 296</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00297"></a><span class="lineno"> 297</span> <span class="preprocessor">#if defined(JSON_HEDLEY_ARM_VERSION)</span></div>
|
||
<div class="line"><a name="l00298"></a><span class="lineno"> 298</span> <span class="preprocessor"> #define JSON_HEDLEY_ARM_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_ARM_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))</span></div>
|
||
<div class="line"><a name="l00299"></a><span class="lineno"> 299</span> <span class="preprocessor">#else</span></div>
|
||
<div class="line"><a name="l00300"></a><span class="lineno"><a class="line" href="json_8hpp.html#aec1d1b1e286d1610ff11dbb29bf3e8cf"> 300</a></span> <span class="preprocessor"> #define JSON_HEDLEY_ARM_VERSION_CHECK(major,minor,patch) (0)</span></div>
|
||
<div class="line"><a name="l00301"></a><span class="lineno"> 301</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  </div>
|
||
<div class="line"><a name="l00303"></a><span class="lineno"> 303</span> <span class="preprocessor">#if defined(JSON_HEDLEY_IBM_VERSION)</span></div>
|
||
<div class="line"><a name="l00304"></a><span class="lineno"> 304</span> <span class="preprocessor"> #undef JSON_HEDLEY_IBM_VERSION</span></div>
|
||
<div class="line"><a name="l00305"></a><span class="lineno"> 305</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00306"></a><span class="lineno"> 306</span> <span class="preprocessor">#if defined(__ibmxl__)</span></div>
|
||
<div class="line"><a name="l00307"></a><span class="lineno"> 307</span> <span class="preprocessor"> #define JSON_HEDLEY_IBM_VERSION JSON_HEDLEY_VERSION_ENCODE(__ibmxl_version__, __ibmxl_release__, __ibmxl_modification__)</span></div>
|
||
<div class="line"><a name="l00308"></a><span class="lineno"> 308</span> <span class="preprocessor">#elif defined(__xlC__) && defined(__xlC_ver__)</span></div>
|
||
<div class="line"><a name="l00309"></a><span class="lineno"> 309</span> <span class="preprocessor"> #define JSON_HEDLEY_IBM_VERSION JSON_HEDLEY_VERSION_ENCODE(__xlC__ >> 8, __xlC__ & 0xff, (__xlC_ver__ >> 8) & 0xff)</span></div>
|
||
<div class="line"><a name="l00310"></a><span class="lineno"> 310</span> <span class="preprocessor">#elif defined(__xlC__)</span></div>
|
||
<div class="line"><a name="l00311"></a><span class="lineno"> 311</span> <span class="preprocessor"> #define JSON_HEDLEY_IBM_VERSION JSON_HEDLEY_VERSION_ENCODE(__xlC__ >> 8, __xlC__ & 0xff, 0)</span></div>
|
||
<div class="line"><a name="l00312"></a><span class="lineno"> 312</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  </div>
|
||
<div class="line"><a name="l00314"></a><span class="lineno"> 314</span> <span class="preprocessor">#if defined(JSON_HEDLEY_IBM_VERSION_CHECK)</span></div>
|
||
<div class="line"><a name="l00315"></a><span class="lineno"> 315</span> <span class="preprocessor"> #undef JSON_HEDLEY_IBM_VERSION_CHECK</span></div>
|
||
<div class="line"><a name="l00316"></a><span class="lineno"> 316</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00317"></a><span class="lineno"> 317</span> <span class="preprocessor">#if defined(JSON_HEDLEY_IBM_VERSION)</span></div>
|
||
<div class="line"><a name="l00318"></a><span class="lineno"> 318</span> <span class="preprocessor"> #define JSON_HEDLEY_IBM_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_IBM_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))</span></div>
|
||
<div class="line"><a name="l00319"></a><span class="lineno"> 319</span> <span class="preprocessor">#else</span></div>
|
||
<div class="line"><a name="l00320"></a><span class="lineno"><a class="line" href="json_8hpp.html#a66ec7d7c320280d6e75cb3634048cd49"> 320</a></span> <span class="preprocessor"> #define JSON_HEDLEY_IBM_VERSION_CHECK(major,minor,patch) (0)</span></div>
|
||
<div class="line"><a name="l00321"></a><span class="lineno"> 321</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  </div>
|
||
<div class="line"><a name="l00323"></a><span class="lineno"> 323</span> <span class="preprocessor">#if defined(JSON_HEDLEY_TI_VERSION)</span></div>
|
||
<div class="line"><a name="l00324"></a><span class="lineno"> 324</span> <span class="preprocessor"> #undef JSON_HEDLEY_TI_VERSION</span></div>
|
||
<div class="line"><a name="l00325"></a><span class="lineno"> 325</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00326"></a><span class="lineno"> 326</span> <span class="preprocessor">#if defined(__TI_COMPILER_VERSION__)</span></div>
|
||
<div class="line"><a name="l00327"></a><span class="lineno"> 327</span> <span class="preprocessor"> #define JSON_HEDLEY_TI_VERSION JSON_HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000))</span></div>
|
||
<div class="line"><a name="l00328"></a><span class="lineno"> 328</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  </div>
|
||
<div class="line"><a name="l00330"></a><span class="lineno"> 330</span> <span class="preprocessor">#if defined(JSON_HEDLEY_TI_VERSION_CHECK)</span></div>
|
||
<div class="line"><a name="l00331"></a><span class="lineno"> 331</span> <span class="preprocessor"> #undef JSON_HEDLEY_TI_VERSION_CHECK</span></div>
|
||
<div class="line"><a name="l00332"></a><span class="lineno"> 332</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00333"></a><span class="lineno"> 333</span> <span class="preprocessor">#if defined(JSON_HEDLEY_TI_VERSION)</span></div>
|
||
<div class="line"><a name="l00334"></a><span class="lineno"> 334</span> <span class="preprocessor"> #define JSON_HEDLEY_TI_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TI_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))</span></div>
|
||
<div class="line"><a name="l00335"></a><span class="lineno"> 335</span> <span class="preprocessor">#else</span></div>
|
||
<div class="line"><a name="l00336"></a><span class="lineno"><a class="line" href="json_8hpp.html#a3d620ef5f95be933b3d8e24d4fc5b6d5"> 336</a></span> <span class="preprocessor"> #define JSON_HEDLEY_TI_VERSION_CHECK(major,minor,patch) (0)</span></div>
|
||
<div class="line"><a name="l00337"></a><span class="lineno"> 337</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  </div>
|
||
<div class="line"><a name="l00339"></a><span class="lineno"> 339</span> <span class="preprocessor">#if defined(JSON_HEDLEY_CRAY_VERSION)</span></div>
|
||
<div class="line"><a name="l00340"></a><span class="lineno"> 340</span> <span class="preprocessor"> #undef JSON_HEDLEY_CRAY_VERSION</span></div>
|
||
<div class="line"><a name="l00341"></a><span class="lineno"> 341</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00342"></a><span class="lineno"> 342</span> <span class="preprocessor">#if defined(_CRAYC)</span></div>
|
||
<div class="line"><a name="l00343"></a><span class="lineno"> 343</span> <span class="preprocessor"> #if defined(_RELEASE_PATCHLEVEL)</span></div>
|
||
<div class="line"><a name="l00344"></a><span class="lineno"> 344</span> <span class="preprocessor"> #define JSON_HEDLEY_CRAY_VERSION JSON_HEDLEY_VERSION_ENCODE(_RELEASE_MAJOR, _RELEASE_MINOR, _RELEASE_PATCHLEVEL)</span></div>
|
||
<div class="line"><a name="l00345"></a><span class="lineno"> 345</span> <span class="preprocessor"> #else</span></div>
|
||
<div class="line"><a name="l00346"></a><span class="lineno"> 346</span> <span class="preprocessor"> #define JSON_HEDLEY_CRAY_VERSION JSON_HEDLEY_VERSION_ENCODE(_RELEASE_MAJOR, _RELEASE_MINOR, 0)</span></div>
|
||
<div class="line"><a name="l00347"></a><span class="lineno"> 347</span> <span class="preprocessor"> #endif</span></div>
|
||
<div class="line"><a name="l00348"></a><span class="lineno"> 348</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  </div>
|
||
<div class="line"><a name="l00350"></a><span class="lineno"> 350</span> <span class="preprocessor">#if defined(JSON_HEDLEY_CRAY_VERSION_CHECK)</span></div>
|
||
<div class="line"><a name="l00351"></a><span class="lineno"> 351</span> <span class="preprocessor"> #undef JSON_HEDLEY_CRAY_VERSION_CHECK</span></div>
|
||
<div class="line"><a name="l00352"></a><span class="lineno"> 352</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00353"></a><span class="lineno"> 353</span> <span class="preprocessor">#if defined(JSON_HEDLEY_CRAY_VERSION)</span></div>
|
||
<div class="line"><a name="l00354"></a><span class="lineno"> 354</span> <span class="preprocessor"> #define JSON_HEDLEY_CRAY_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_CRAY_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))</span></div>
|
||
<div class="line"><a name="l00355"></a><span class="lineno"> 355</span> <span class="preprocessor">#else</span></div>
|
||
<div class="line"><a name="l00356"></a><span class="lineno"><a class="line" href="json_8hpp.html#a5d9ed879aa65e4db12a81ee95529c3e4"> 356</a></span> <span class="preprocessor"> #define JSON_HEDLEY_CRAY_VERSION_CHECK(major,minor,patch) (0)</span></div>
|
||
<div class="line"><a name="l00357"></a><span class="lineno"> 357</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  </div>
|
||
<div class="line"><a name="l00359"></a><span class="lineno"> 359</span> <span class="preprocessor">#if defined(JSON_HEDLEY_IAR_VERSION)</span></div>
|
||
<div class="line"><a name="l00360"></a><span class="lineno"> 360</span> <span class="preprocessor"> #undef JSON_HEDLEY_IAR_VERSION</span></div>
|
||
<div class="line"><a name="l00361"></a><span class="lineno"> 361</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00362"></a><span class="lineno"> 362</span> <span class="preprocessor">#if defined(__IAR_SYSTEMS_ICC__)</span></div>
|
||
<div class="line"><a name="l00363"></a><span class="lineno"> 363</span> <span class="preprocessor"> #if __VER__ > 1000</span></div>
|
||
<div class="line"><a name="l00364"></a><span class="lineno"> 364</span> <span class="preprocessor"> #define JSON_HEDLEY_IAR_VERSION JSON_HEDLEY_VERSION_ENCODE((__VER__ / 1000000), ((__VER__ / 1000) % 1000), (__VER__ % 1000))</span></div>
|
||
<div class="line"><a name="l00365"></a><span class="lineno"> 365</span> <span class="preprocessor"> #else</span></div>
|
||
<div class="line"><a name="l00366"></a><span class="lineno"> 366</span> <span class="preprocessor"> #define JSON_HEDLEY_IAR_VERSION JSON_HEDLEY_VERSION_ENCODE(VER / 100, __VER__ % 100, 0)</span></div>
|
||
<div class="line"><a name="l00367"></a><span class="lineno"> 367</span> <span class="preprocessor"> #endif</span></div>
|
||
<div class="line"><a name="l00368"></a><span class="lineno"> 368</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  </div>
|
||
<div class="line"><a name="l00370"></a><span class="lineno"> 370</span> <span class="preprocessor">#if defined(JSON_HEDLEY_IAR_VERSION_CHECK)</span></div>
|
||
<div class="line"><a name="l00371"></a><span class="lineno"> 371</span> <span class="preprocessor"> #undef JSON_HEDLEY_IAR_VERSION_CHECK</span></div>
|
||
<div class="line"><a name="l00372"></a><span class="lineno"> 372</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00373"></a><span class="lineno"> 373</span> <span class="preprocessor">#if defined(JSON_HEDLEY_IAR_VERSION)</span></div>
|
||
<div class="line"><a name="l00374"></a><span class="lineno"> 374</span> <span class="preprocessor"> #define JSON_HEDLEY_IAR_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_IAR_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))</span></div>
|
||
<div class="line"><a name="l00375"></a><span class="lineno"> 375</span> <span class="preprocessor">#else</span></div>
|
||
<div class="line"><a name="l00376"></a><span class="lineno"><a class="line" href="json_8hpp.html#a8788394855e9b5a1cc32327db5a613cb"> 376</a></span> <span class="preprocessor"> #define JSON_HEDLEY_IAR_VERSION_CHECK(major,minor,patch) (0)</span></div>
|
||
<div class="line"><a name="l00377"></a><span class="lineno"> 377</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  </div>
|
||
<div class="line"><a name="l00379"></a><span class="lineno"> 379</span> <span class="preprocessor">#if defined(JSON_HEDLEY_TINYC_VERSION)</span></div>
|
||
<div class="line"><a name="l00380"></a><span class="lineno"> 380</span> <span class="preprocessor"> #undef JSON_HEDLEY_TINYC_VERSION</span></div>
|
||
<div class="line"><a name="l00381"></a><span class="lineno"> 381</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00382"></a><span class="lineno"> 382</span> <span class="preprocessor">#if defined(__TINYC__)</span></div>
|
||
<div class="line"><a name="l00383"></a><span class="lineno"> 383</span> <span class="preprocessor"> #define JSON_HEDLEY_TINYC_VERSION JSON_HEDLEY_VERSION_ENCODE(__TINYC__ / 1000, (__TINYC__ / 100) % 10, __TINYC__ % 100)</span></div>
|
||
<div class="line"><a name="l00384"></a><span class="lineno"> 384</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  </div>
|
||
<div class="line"><a name="l00386"></a><span class="lineno"> 386</span> <span class="preprocessor">#if defined(JSON_HEDLEY_TINYC_VERSION_CHECK)</span></div>
|
||
<div class="line"><a name="l00387"></a><span class="lineno"> 387</span> <span class="preprocessor"> #undef JSON_HEDLEY_TINYC_VERSION_CHECK</span></div>
|
||
<div class="line"><a name="l00388"></a><span class="lineno"> 388</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00389"></a><span class="lineno"> 389</span> <span class="preprocessor">#if defined(JSON_HEDLEY_TINYC_VERSION)</span></div>
|
||
<div class="line"><a name="l00390"></a><span class="lineno"> 390</span> <span class="preprocessor"> #define JSON_HEDLEY_TINYC_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TINYC_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))</span></div>
|
||
<div class="line"><a name="l00391"></a><span class="lineno"> 391</span> <span class="preprocessor">#else</span></div>
|
||
<div class="line"><a name="l00392"></a><span class="lineno"><a class="line" href="json_8hpp.html#a38192f48e8c6ee0018a988d54e97cacf"> 392</a></span> <span class="preprocessor"> #define JSON_HEDLEY_TINYC_VERSION_CHECK(major,minor,patch) (0)</span></div>
|
||
<div class="line"><a name="l00393"></a><span class="lineno"> 393</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  </div>
|
||
<div class="line"><a name="l00395"></a><span class="lineno"> 395</span> <span class="preprocessor">#if defined(JSON_HEDLEY_DMC_VERSION)</span></div>
|
||
<div class="line"><a name="l00396"></a><span class="lineno"> 396</span> <span class="preprocessor"> #undef JSON_HEDLEY_DMC_VERSION</span></div>
|
||
<div class="line"><a name="l00397"></a><span class="lineno"> 397</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00398"></a><span class="lineno"> 398</span> <span class="preprocessor">#if defined(__DMC__)</span></div>
|
||
<div class="line"><a name="l00399"></a><span class="lineno"> 399</span> <span class="preprocessor"> #define JSON_HEDLEY_DMC_VERSION JSON_HEDLEY_VERSION_ENCODE(__DMC__ >> 8, (__DMC__ >> 4) & 0xf, __DMC__ & 0xf)</span></div>
|
||
<div class="line"><a name="l00400"></a><span class="lineno"> 400</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  </div>
|
||
<div class="line"><a name="l00402"></a><span class="lineno"> 402</span> <span class="preprocessor">#if defined(JSON_HEDLEY_DMC_VERSION_CHECK)</span></div>
|
||
<div class="line"><a name="l00403"></a><span class="lineno"> 403</span> <span class="preprocessor"> #undef JSON_HEDLEY_DMC_VERSION_CHECK</span></div>
|
||
<div class="line"><a name="l00404"></a><span class="lineno"> 404</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00405"></a><span class="lineno"> 405</span> <span class="preprocessor">#if defined(JSON_HEDLEY_DMC_VERSION)</span></div>
|
||
<div class="line"><a name="l00406"></a><span class="lineno"> 406</span> <span class="preprocessor"> #define JSON_HEDLEY_DMC_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_DMC_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))</span></div>
|
||
<div class="line"><a name="l00407"></a><span class="lineno"> 407</span> <span class="preprocessor">#else</span></div>
|
||
<div class="line"><a name="l00408"></a><span class="lineno"><a class="line" href="json_8hpp.html#af21c5dbd9df3b2e245ae547e2d940adc"> 408</a></span> <span class="preprocessor"> #define JSON_HEDLEY_DMC_VERSION_CHECK(major,minor,patch) (0)</span></div>
|
||
<div class="line"><a name="l00409"></a><span class="lineno"> 409</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  </div>
|
||
<div class="line"><a name="l00411"></a><span class="lineno"> 411</span> <span class="preprocessor">#if defined(JSON_HEDLEY_COMPCERT_VERSION)</span></div>
|
||
<div class="line"><a name="l00412"></a><span class="lineno"> 412</span> <span class="preprocessor"> #undef JSON_HEDLEY_COMPCERT_VERSION</span></div>
|
||
<div class="line"><a name="l00413"></a><span class="lineno"> 413</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00414"></a><span class="lineno"> 414</span> <span class="preprocessor">#if defined(__COMPCERT_VERSION__)</span></div>
|
||
<div class="line"><a name="l00415"></a><span class="lineno"> 415</span> <span class="preprocessor"> #define JSON_HEDLEY_COMPCERT_VERSION JSON_HEDLEY_VERSION_ENCODE(__COMPCERT_VERSION__ / 10000, (__COMPCERT_VERSION__ / 100) % 100, __COMPCERT_VERSION__ % 100)</span></div>
|
||
<div class="line"><a name="l00416"></a><span class="lineno"> 416</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  </div>
|
||
<div class="line"><a name="l00418"></a><span class="lineno"> 418</span> <span class="preprocessor">#if defined(JSON_HEDLEY_COMPCERT_VERSION_CHECK)</span></div>
|
||
<div class="line"><a name="l00419"></a><span class="lineno"> 419</span> <span class="preprocessor"> #undef JSON_HEDLEY_COMPCERT_VERSION_CHECK</span></div>
|
||
<div class="line"><a name="l00420"></a><span class="lineno"> 420</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00421"></a><span class="lineno"> 421</span> <span class="preprocessor">#if defined(JSON_HEDLEY_COMPCERT_VERSION)</span></div>
|
||
<div class="line"><a name="l00422"></a><span class="lineno"> 422</span> <span class="preprocessor"> #define JSON_HEDLEY_COMPCERT_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_COMPCERT_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))</span></div>
|
||
<div class="line"><a name="l00423"></a><span class="lineno"> 423</span> <span class="preprocessor">#else</span></div>
|
||
<div class="line"><a name="l00424"></a><span class="lineno"><a class="line" href="json_8hpp.html#ad8f9aee7d709155d6745cb3f77c6ff0c"> 424</a></span> <span class="preprocessor"> #define JSON_HEDLEY_COMPCERT_VERSION_CHECK(major,minor,patch) (0)</span></div>
|
||
<div class="line"><a name="l00425"></a><span class="lineno"> 425</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  </div>
|
||
<div class="line"><a name="l00427"></a><span class="lineno"> 427</span> <span class="preprocessor">#if defined(JSON_HEDLEY_PELLES_VERSION)</span></div>
|
||
<div class="line"><a name="l00428"></a><span class="lineno"> 428</span> <span class="preprocessor"> #undef JSON_HEDLEY_PELLES_VERSION</span></div>
|
||
<div class="line"><a name="l00429"></a><span class="lineno"> 429</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00430"></a><span class="lineno"> 430</span> <span class="preprocessor">#if defined(__POCC__)</span></div>
|
||
<div class="line"><a name="l00431"></a><span class="lineno"> 431</span> <span class="preprocessor"> #define JSON_HEDLEY_PELLES_VERSION JSON_HEDLEY_VERSION_ENCODE(__POCC__ / 100, __POCC__ % 100, 0)</span></div>
|
||
<div class="line"><a name="l00432"></a><span class="lineno"> 432</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  </div>
|
||
<div class="line"><a name="l00434"></a><span class="lineno"> 434</span> <span class="preprocessor">#if defined(JSON_HEDLEY_PELLES_VERSION_CHECK)</span></div>
|
||
<div class="line"><a name="l00435"></a><span class="lineno"> 435</span> <span class="preprocessor"> #undef JSON_HEDLEY_PELLES_VERSION_CHECK</span></div>
|
||
<div class="line"><a name="l00436"></a><span class="lineno"> 436</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00437"></a><span class="lineno"> 437</span> <span class="preprocessor">#if defined(JSON_HEDLEY_PELLES_VERSION)</span></div>
|
||
<div class="line"><a name="l00438"></a><span class="lineno"> 438</span> <span class="preprocessor"> #define JSON_HEDLEY_PELLES_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_PELLES_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))</span></div>
|
||
<div class="line"><a name="l00439"></a><span class="lineno"> 439</span> <span class="preprocessor">#else</span></div>
|
||
<div class="line"><a name="l00440"></a><span class="lineno"><a class="line" href="json_8hpp.html#a21937c8e7c79a1bef6695691c733e29f"> 440</a></span> <span class="preprocessor"> #define JSON_HEDLEY_PELLES_VERSION_CHECK(major,minor,patch) (0)</span></div>
|
||
<div class="line"><a name="l00441"></a><span class="lineno"> 441</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  </div>
|
||
<div class="line"><a name="l00443"></a><span class="lineno"> 443</span> <span class="preprocessor">#if defined(JSON_HEDLEY_GCC_VERSION)</span></div>
|
||
<div class="line"><a name="l00444"></a><span class="lineno"> 444</span> <span class="preprocessor"> #undef JSON_HEDLEY_GCC_VERSION</span></div>
|
||
<div class="line"><a name="l00445"></a><span class="lineno"> 445</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00446"></a><span class="lineno"> 446</span> <span class="preprocessor">#if \</span></div>
|
||
<div class="line"><a name="l00447"></a><span class="lineno"> 447</span> <span class="preprocessor"> defined(JSON_HEDLEY_GNUC_VERSION) && \</span></div>
|
||
<div class="line"><a name="l00448"></a><span class="lineno"> 448</span> <span class="preprocessor"> !defined(__clang__) && \</span></div>
|
||
<div class="line"><a name="l00449"></a><span class="lineno"> 449</span> <span class="preprocessor"> !defined(JSON_HEDLEY_INTEL_VERSION) && \</span></div>
|
||
<div class="line"><a name="l00450"></a><span class="lineno"> 450</span> <span class="preprocessor"> !defined(JSON_HEDLEY_PGI_VERSION) && \</span></div>
|
||
<div class="line"><a name="l00451"></a><span class="lineno"> 451</span> <span class="preprocessor"> !defined(JSON_HEDLEY_ARM_VERSION) && \</span></div>
|
||
<div class="line"><a name="l00452"></a><span class="lineno"> 452</span> <span class="preprocessor"> !defined(JSON_HEDLEY_TI_VERSION) && \</span></div>
|
||
<div class="line"><a name="l00453"></a><span class="lineno"> 453</span> <span class="preprocessor"> !defined(__COMPCERT__)</span></div>
|
||
<div class="line"><a name="l00454"></a><span class="lineno"> 454</span> <span class="preprocessor"> #define JSON_HEDLEY_GCC_VERSION JSON_HEDLEY_GNUC_VERSION</span></div>
|
||
<div class="line"><a name="l00455"></a><span class="lineno"> 455</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  </div>
|
||
<div class="line"><a name="l00457"></a><span class="lineno"> 457</span> <span class="preprocessor">#if defined(JSON_HEDLEY_GCC_VERSION_CHECK)</span></div>
|
||
<div class="line"><a name="l00458"></a><span class="lineno"> 458</span> <span class="preprocessor"> #undef JSON_HEDLEY_GCC_VERSION_CHECK</span></div>
|
||
<div class="line"><a name="l00459"></a><span class="lineno"> 459</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00460"></a><span class="lineno"> 460</span> <span class="preprocessor">#if defined(JSON_HEDLEY_GCC_VERSION)</span></div>
|
||
<div class="line"><a name="l00461"></a><span class="lineno"> 461</span> <span class="preprocessor"> #define JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_GCC_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch))</span></div>
|
||
<div class="line"><a name="l00462"></a><span class="lineno"> 462</span> <span class="preprocessor">#else</span></div>
|
||
<div class="line"><a name="l00463"></a><span class="lineno"><a class="line" href="json_8hpp.html#aaf82a065634719d57994ef5876e208ff"> 463</a></span> <span class="preprocessor"> #define JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) (0)</span></div>
|
||
<div class="line"><a name="l00464"></a><span class="lineno"> 464</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  </div>
|
||
<div class="line"><a name="l00466"></a><span class="lineno"> 466</span> <span class="preprocessor">#if defined(JSON_HEDLEY_HAS_ATTRIBUTE)</span></div>
|
||
<div class="line"><a name="l00467"></a><span class="lineno"> 467</span> <span class="preprocessor"> #undef JSON_HEDLEY_HAS_ATTRIBUTE</span></div>
|
||
<div class="line"><a name="l00468"></a><span class="lineno"> 468</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00469"></a><span class="lineno"> 469</span> <span class="preprocessor">#if defined(__has_attribute)</span></div>
|
||
<div class="line"><a name="l00470"></a><span class="lineno"> 470</span> <span class="preprocessor"> #define JSON_HEDLEY_HAS_ATTRIBUTE(attribute) __has_attribute(attribute)</span></div>
|
||
<div class="line"><a name="l00471"></a><span class="lineno"> 471</span> <span class="preprocessor">#else</span></div>
|
||
<div class="line"><a name="l00472"></a><span class="lineno"><a class="line" href="json_8hpp.html#af41dc3300eaa6e5e6a976730d160a268"> 472</a></span> <span class="preprocessor"> #define JSON_HEDLEY_HAS_ATTRIBUTE(attribute) (0)</span></div>
|
||
<div class="line"><a name="l00473"></a><span class="lineno"> 473</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  </div>
|
||
<div class="line"><a name="l00475"></a><span class="lineno"> 475</span> <span class="preprocessor">#if defined(JSON_HEDLEY_GNUC_HAS_ATTRIBUTE)</span></div>
|
||
<div class="line"><a name="l00476"></a><span class="lineno"> 476</span> <span class="preprocessor"> #undef JSON_HEDLEY_GNUC_HAS_ATTRIBUTE</span></div>
|
||
<div class="line"><a name="l00477"></a><span class="lineno"> 477</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00478"></a><span class="lineno"> 478</span> <span class="preprocessor">#if defined(__has_attribute)</span></div>
|
||
<div class="line"><a name="l00479"></a><span class="lineno"> 479</span> <span class="preprocessor"> #define JSON_HEDLEY_GNUC_HAS_ATTRIBUTE(attribute,major,minor,patch) __has_attribute(attribute)</span></div>
|
||
<div class="line"><a name="l00480"></a><span class="lineno"> 480</span> <span class="preprocessor">#else</span></div>
|
||
<div class="line"><a name="l00481"></a><span class="lineno"><a class="line" href="json_8hpp.html#afdf01f41465021815bb6fc4d8c1839fd"> 481</a></span> <span class="preprocessor"> #define JSON_HEDLEY_GNUC_HAS_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch)</span></div>
|
||
<div class="line"><a name="l00482"></a><span class="lineno"> 482</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  </div>
|
||
<div class="line"><a name="l00484"></a><span class="lineno"> 484</span> <span class="preprocessor">#if defined(JSON_HEDLEY_GCC_HAS_ATTRIBUTE)</span></div>
|
||
<div class="line"><a name="l00485"></a><span class="lineno"> 485</span> <span class="preprocessor"> #undef JSON_HEDLEY_GCC_HAS_ATTRIBUTE</span></div>
|
||
<div class="line"><a name="l00486"></a><span class="lineno"> 486</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00487"></a><span class="lineno"> 487</span> <span class="preprocessor">#if defined(__has_attribute)</span></div>
|
||
<div class="line"><a name="l00488"></a><span class="lineno"> 488</span> <span class="preprocessor"> #define JSON_HEDLEY_GCC_HAS_ATTRIBUTE(attribute,major,minor,patch) __has_attribute(attribute)</span></div>
|
||
<div class="line"><a name="l00489"></a><span class="lineno"> 489</span> <span class="preprocessor">#else</span></div>
|
||
<div class="line"><a name="l00490"></a><span class="lineno"><a class="line" href="json_8hpp.html#af33c67f65300eb91494f25bf583f5bd7"> 490</a></span> <span class="preprocessor"> #define JSON_HEDLEY_GCC_HAS_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch)</span></div>
|
||
<div class="line"><a name="l00491"></a><span class="lineno"> 491</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  </div>
|
||
<div class="line"><a name="l00493"></a><span class="lineno"> 493</span> <span class="preprocessor">#if defined(JSON_HEDLEY_HAS_CPP_ATTRIBUTE)</span></div>
|
||
<div class="line"><a name="l00494"></a><span class="lineno"> 494</span> <span class="preprocessor"> #undef JSON_HEDLEY_HAS_CPP_ATTRIBUTE</span></div>
|
||
<div class="line"><a name="l00495"></a><span class="lineno"> 495</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00496"></a><span class="lineno"> 496</span> <span class="preprocessor">#if \</span></div>
|
||
<div class="line"><a name="l00497"></a><span class="lineno"> 497</span> <span class="preprocessor"> defined(__has_cpp_attribute) && \</span></div>
|
||
<div class="line"><a name="l00498"></a><span class="lineno"> 498</span> <span class="preprocessor"> defined(__cplusplus) && \</span></div>
|
||
<div class="line"><a name="l00499"></a><span class="lineno"> 499</span> <span class="preprocessor"> (!defined(JSON_HEDLEY_SUNPRO_VERSION) || JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,15,0))</span></div>
|
||
<div class="line"><a name="l00500"></a><span class="lineno"> 500</span> <span class="preprocessor"> #define JSON_HEDLEY_HAS_CPP_ATTRIBUTE(attribute) __has_cpp_attribute(attribute)</span></div>
|
||
<div class="line"><a name="l00501"></a><span class="lineno"> 501</span> <span class="preprocessor">#else</span></div>
|
||
<div class="line"><a name="l00502"></a><span class="lineno"><a class="line" href="json_8hpp.html#a2c4e6a04293aaf333a31698dea661b3b"> 502</a></span> <span class="preprocessor"> #define JSON_HEDLEY_HAS_CPP_ATTRIBUTE(attribute) (0)</span></div>
|
||
<div class="line"><a name="l00503"></a><span class="lineno"> 503</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00504"></a><span class="lineno"> 504</span>  </div>
|
||
<div class="line"><a name="l00505"></a><span class="lineno"> 505</span> <span class="preprocessor">#if defined(JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS)</span></div>
|
||
<div class="line"><a name="l00506"></a><span class="lineno"> 506</span> <span class="preprocessor"> #undef JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS</span></div>
|
||
<div class="line"><a name="l00507"></a><span class="lineno"> 507</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00508"></a><span class="lineno"> 508</span> <span class="preprocessor">#if !defined(__cplusplus) || !defined(__has_cpp_attribute)</span></div>
|
||
<div class="line"><a name="l00509"></a><span class="lineno"><a class="line" href="json_8hpp.html#ad5b94be3095ea0549561c1bc951c5998"> 509</a></span> <span class="preprocessor"> #define JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS(ns,attribute) (0)</span></div>
|
||
<div class="line"><a name="l00510"></a><span class="lineno"> 510</span> <span class="preprocessor">#elif \</span></div>
|
||
<div class="line"><a name="l00511"></a><span class="lineno"> 511</span> <span class="preprocessor"> !defined(JSON_HEDLEY_PGI_VERSION) && \</span></div>
|
||
<div class="line"><a name="l00512"></a><span class="lineno"> 512</span> <span class="preprocessor"> (!defined(JSON_HEDLEY_SUNPRO_VERSION) || JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,15,0)) && \</span></div>
|
||
<div class="line"><a name="l00513"></a><span class="lineno"> 513</span> <span class="preprocessor"> (!defined(JSON_HEDLEY_MSVC_VERSION) || JSON_HEDLEY_MSVC_VERSION_CHECK(19,20,0))</span></div>
|
||
<div class="line"><a name="l00514"></a><span class="lineno"> 514</span> <span class="preprocessor"> #define JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS(ns,attribute) JSON_HEDLEY_HAS_CPP_ATTRIBUTE(ns::attribute)</span></div>
|
||
<div class="line"><a name="l00515"></a><span class="lineno"> 515</span> <span class="preprocessor">#else</span></div>
|
||
<div class="line"><a name="l00516"></a><span class="lineno"> 516</span> <span class="preprocessor"> #define JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS(ns,attribute) (0)</span></div>
|
||
<div class="line"><a name="l00517"></a><span class="lineno"> 517</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00518"></a><span class="lineno"> 518</span>  </div>
|
||
<div class="line"><a name="l00519"></a><span class="lineno"> 519</span> <span class="preprocessor">#if defined(JSON_HEDLEY_GNUC_HAS_CPP_ATTRIBUTE)</span></div>
|
||
<div class="line"><a name="l00520"></a><span class="lineno"> 520</span> <span class="preprocessor"> #undef JSON_HEDLEY_GNUC_HAS_CPP_ATTRIBUTE</span></div>
|
||
<div class="line"><a name="l00521"></a><span class="lineno"> 521</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00522"></a><span class="lineno"> 522</span> <span class="preprocessor">#if defined(__has_cpp_attribute) && defined(__cplusplus)</span></div>
|
||
<div class="line"><a name="l00523"></a><span class="lineno"> 523</span> <span class="preprocessor"> #define JSON_HEDLEY_GNUC_HAS_CPP_ATTRIBUTE(attribute,major,minor,patch) __has_cpp_attribute(attribute)</span></div>
|
||
<div class="line"><a name="l00524"></a><span class="lineno"> 524</span> <span class="preprocessor">#else</span></div>
|
||
<div class="line"><a name="l00525"></a><span class="lineno"><a class="line" href="json_8hpp.html#a938dadb6cadaaaccf72990d09be5dc0a"> 525</a></span> <span class="preprocessor"> #define JSON_HEDLEY_GNUC_HAS_CPP_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch)</span></div>
|
||
<div class="line"><a name="l00526"></a><span class="lineno"> 526</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00527"></a><span class="lineno"> 527</span>  </div>
|
||
<div class="line"><a name="l00528"></a><span class="lineno"> 528</span> <span class="preprocessor">#if defined(JSON_HEDLEY_GCC_HAS_CPP_ATTRIBUTE)</span></div>
|
||
<div class="line"><a name="l00529"></a><span class="lineno"> 529</span> <span class="preprocessor"> #undef JSON_HEDLEY_GCC_HAS_CPP_ATTRIBUTE</span></div>
|
||
<div class="line"><a name="l00530"></a><span class="lineno"> 530</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00531"></a><span class="lineno"> 531</span> <span class="preprocessor">#if defined(__has_cpp_attribute) && defined(__cplusplus)</span></div>
|
||
<div class="line"><a name="l00532"></a><span class="lineno"> 532</span> <span class="preprocessor"> #define JSON_HEDLEY_GCC_HAS_CPP_ATTRIBUTE(attribute,major,minor,patch) __has_cpp_attribute(attribute)</span></div>
|
||
<div class="line"><a name="l00533"></a><span class="lineno"> 533</span> <span class="preprocessor">#else</span></div>
|
||
<div class="line"><a name="l00534"></a><span class="lineno"><a class="line" href="json_8hpp.html#aaa3c748298e83bf6a67b583b83233c11"> 534</a></span> <span class="preprocessor"> #define JSON_HEDLEY_GCC_HAS_CPP_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch)</span></div>
|
||
<div class="line"><a name="l00535"></a><span class="lineno"> 535</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00536"></a><span class="lineno"> 536</span>  </div>
|
||
<div class="line"><a name="l00537"></a><span class="lineno"> 537</span> <span class="preprocessor">#if defined(JSON_HEDLEY_HAS_BUILTIN)</span></div>
|
||
<div class="line"><a name="l00538"></a><span class="lineno"> 538</span> <span class="preprocessor"> #undef JSON_HEDLEY_HAS_BUILTIN</span></div>
|
||
<div class="line"><a name="l00539"></a><span class="lineno"> 539</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00540"></a><span class="lineno"> 540</span> <span class="preprocessor">#if defined(__has_builtin)</span></div>
|
||
<div class="line"><a name="l00541"></a><span class="lineno"> 541</span> <span class="preprocessor"> #define JSON_HEDLEY_HAS_BUILTIN(builtin) __has_builtin(builtin)</span></div>
|
||
<div class="line"><a name="l00542"></a><span class="lineno"> 542</span> <span class="preprocessor">#else</span></div>
|
||
<div class="line"><a name="l00543"></a><span class="lineno"><a class="line" href="json_8hpp.html#acf8ab10ce06ffe6f54840b555b15121c"> 543</a></span> <span class="preprocessor"> #define JSON_HEDLEY_HAS_BUILTIN(builtin) (0)</span></div>
|
||
<div class="line"><a name="l00544"></a><span class="lineno"> 544</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00545"></a><span class="lineno"> 545</span>  </div>
|
||
<div class="line"><a name="l00546"></a><span class="lineno"> 546</span> <span class="preprocessor">#if defined(JSON_HEDLEY_GNUC_HAS_BUILTIN)</span></div>
|
||
<div class="line"><a name="l00547"></a><span class="lineno"> 547</span> <span class="preprocessor"> #undef JSON_HEDLEY_GNUC_HAS_BUILTIN</span></div>
|
||
<div class="line"><a name="l00548"></a><span class="lineno"> 548</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00549"></a><span class="lineno"> 549</span> <span class="preprocessor">#if defined(__has_builtin)</span></div>
|
||
<div class="line"><a name="l00550"></a><span class="lineno"> 550</span> <span class="preprocessor"> #define JSON_HEDLEY_GNUC_HAS_BUILTIN(builtin,major,minor,patch) __has_builtin(builtin)</span></div>
|
||
<div class="line"><a name="l00551"></a><span class="lineno"> 551</span> <span class="preprocessor">#else</span></div>
|
||
<div class="line"><a name="l00552"></a><span class="lineno"><a class="line" href="json_8hpp.html#a92764b738f44272e1b18c3ef1403c894"> 552</a></span> <span class="preprocessor"> #define JSON_HEDLEY_GNUC_HAS_BUILTIN(builtin,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch)</span></div>
|
||
<div class="line"><a name="l00553"></a><span class="lineno"> 553</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00554"></a><span class="lineno"> 554</span>  </div>
|
||
<div class="line"><a name="l00555"></a><span class="lineno"> 555</span> <span class="preprocessor">#if defined(JSON_HEDLEY_GCC_HAS_BUILTIN)</span></div>
|
||
<div class="line"><a name="l00556"></a><span class="lineno"> 556</span> <span class="preprocessor"> #undef JSON_HEDLEY_GCC_HAS_BUILTIN</span></div>
|
||
<div class="line"><a name="l00557"></a><span class="lineno"> 557</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00558"></a><span class="lineno"> 558</span> <span class="preprocessor">#if defined(__has_builtin)</span></div>
|
||
<div class="line"><a name="l00559"></a><span class="lineno"> 559</span> <span class="preprocessor"> #define JSON_HEDLEY_GCC_HAS_BUILTIN(builtin,major,minor,patch) __has_builtin(builtin)</span></div>
|
||
<div class="line"><a name="l00560"></a><span class="lineno"> 560</span> <span class="preprocessor">#else</span></div>
|
||
<div class="line"><a name="l00561"></a><span class="lineno"><a class="line" href="json_8hpp.html#aa210655ec7cc8387bef8ade74c3af647"> 561</a></span> <span class="preprocessor"> #define JSON_HEDLEY_GCC_HAS_BUILTIN(builtin,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch)</span></div>
|
||
<div class="line"><a name="l00562"></a><span class="lineno"> 562</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00563"></a><span class="lineno"> 563</span>  </div>
|
||
<div class="line"><a name="l00564"></a><span class="lineno"> 564</span> <span class="preprocessor">#if defined(JSON_HEDLEY_HAS_FEATURE)</span></div>
|
||
<div class="line"><a name="l00565"></a><span class="lineno"> 565</span> <span class="preprocessor"> #undef JSON_HEDLEY_HAS_FEATURE</span></div>
|
||
<div class="line"><a name="l00566"></a><span class="lineno"> 566</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00567"></a><span class="lineno"> 567</span> <span class="preprocessor">#if defined(__has_feature)</span></div>
|
||
<div class="line"><a name="l00568"></a><span class="lineno"> 568</span> <span class="preprocessor"> #define JSON_HEDLEY_HAS_FEATURE(feature) __has_feature(feature)</span></div>
|
||
<div class="line"><a name="l00569"></a><span class="lineno"> 569</span> <span class="preprocessor">#else</span></div>
|
||
<div class="line"><a name="l00570"></a><span class="lineno"><a class="line" href="json_8hpp.html#a752eb648bbfc7bcd8a4624c43f520412"> 570</a></span> <span class="preprocessor"> #define JSON_HEDLEY_HAS_FEATURE(feature) (0)</span></div>
|
||
<div class="line"><a name="l00571"></a><span class="lineno"> 571</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00572"></a><span class="lineno"> 572</span>  </div>
|
||
<div class="line"><a name="l00573"></a><span class="lineno"> 573</span> <span class="preprocessor">#if defined(JSON_HEDLEY_GNUC_HAS_FEATURE)</span></div>
|
||
<div class="line"><a name="l00574"></a><span class="lineno"> 574</span> <span class="preprocessor"> #undef JSON_HEDLEY_GNUC_HAS_FEATURE</span></div>
|
||
<div class="line"><a name="l00575"></a><span class="lineno"> 575</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00576"></a><span class="lineno"> 576</span> <span class="preprocessor">#if defined(__has_feature)</span></div>
|
||
<div class="line"><a name="l00577"></a><span class="lineno"> 577</span> <span class="preprocessor"> #define JSON_HEDLEY_GNUC_HAS_FEATURE(feature,major,minor,patch) __has_feature(feature)</span></div>
|
||
<div class="line"><a name="l00578"></a><span class="lineno"> 578</span> <span class="preprocessor">#else</span></div>
|
||
<div class="line"><a name="l00579"></a><span class="lineno"><a class="line" href="json_8hpp.html#ad5dab327c783036962c7d921a4144676"> 579</a></span> <span class="preprocessor"> #define JSON_HEDLEY_GNUC_HAS_FEATURE(feature,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch)</span></div>
|
||
<div class="line"><a name="l00580"></a><span class="lineno"> 580</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00581"></a><span class="lineno"> 581</span>  </div>
|
||
<div class="line"><a name="l00582"></a><span class="lineno"> 582</span> <span class="preprocessor">#if defined(JSON_HEDLEY_GCC_HAS_FEATURE)</span></div>
|
||
<div class="line"><a name="l00583"></a><span class="lineno"> 583</span> <span class="preprocessor"> #undef JSON_HEDLEY_GCC_HAS_FEATURE</span></div>
|
||
<div class="line"><a name="l00584"></a><span class="lineno"> 584</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00585"></a><span class="lineno"> 585</span> <span class="preprocessor">#if defined(__has_feature)</span></div>
|
||
<div class="line"><a name="l00586"></a><span class="lineno"> 586</span> <span class="preprocessor"> #define JSON_HEDLEY_GCC_HAS_FEATURE(feature,major,minor,patch) __has_feature(feature)</span></div>
|
||
<div class="line"><a name="l00587"></a><span class="lineno"> 587</span> <span class="preprocessor">#else</span></div>
|
||
<div class="line"><a name="l00588"></a><span class="lineno"><a class="line" href="json_8hpp.html#ae9f353e2ea047111e419855144b06ab7"> 588</a></span> <span class="preprocessor"> #define JSON_HEDLEY_GCC_HAS_FEATURE(feature,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch)</span></div>
|
||
<div class="line"><a name="l00589"></a><span class="lineno"> 589</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00590"></a><span class="lineno"> 590</span>  </div>
|
||
<div class="line"><a name="l00591"></a><span class="lineno"> 591</span> <span class="preprocessor">#if defined(JSON_HEDLEY_HAS_EXTENSION)</span></div>
|
||
<div class="line"><a name="l00592"></a><span class="lineno"> 592</span> <span class="preprocessor"> #undef JSON_HEDLEY_HAS_EXTENSION</span></div>
|
||
<div class="line"><a name="l00593"></a><span class="lineno"> 593</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00594"></a><span class="lineno"> 594</span> <span class="preprocessor">#if defined(__has_extension)</span></div>
|
||
<div class="line"><a name="l00595"></a><span class="lineno"> 595</span> <span class="preprocessor"> #define JSON_HEDLEY_HAS_EXTENSION(extension) __has_extension(extension)</span></div>
|
||
<div class="line"><a name="l00596"></a><span class="lineno"> 596</span> <span class="preprocessor">#else</span></div>
|
||
<div class="line"><a name="l00597"></a><span class="lineno"><a class="line" href="json_8hpp.html#a320bfe79028a67cd5873f917bc5418dd"> 597</a></span> <span class="preprocessor"> #define JSON_HEDLEY_HAS_EXTENSION(extension) (0)</span></div>
|
||
<div class="line"><a name="l00598"></a><span class="lineno"> 598</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00599"></a><span class="lineno"> 599</span>  </div>
|
||
<div class="line"><a name="l00600"></a><span class="lineno"> 600</span> <span class="preprocessor">#if defined(JSON_HEDLEY_GNUC_HAS_EXTENSION)</span></div>
|
||
<div class="line"><a name="l00601"></a><span class="lineno"> 601</span> <span class="preprocessor"> #undef JSON_HEDLEY_GNUC_HAS_EXTENSION</span></div>
|
||
<div class="line"><a name="l00602"></a><span class="lineno"> 602</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00603"></a><span class="lineno"> 603</span> <span class="preprocessor">#if defined(__has_extension)</span></div>
|
||
<div class="line"><a name="l00604"></a><span class="lineno"> 604</span> <span class="preprocessor"> #define JSON_HEDLEY_GNUC_HAS_EXTENSION(extension,major,minor,patch) __has_extension(extension)</span></div>
|
||
<div class="line"><a name="l00605"></a><span class="lineno"> 605</span> <span class="preprocessor">#else</span></div>
|
||
<div class="line"><a name="l00606"></a><span class="lineno"><a class="line" href="json_8hpp.html#a2417cc05952936574c0a6ed96d73d8e2"> 606</a></span> <span class="preprocessor"> #define JSON_HEDLEY_GNUC_HAS_EXTENSION(extension,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch)</span></div>
|
||
<div class="line"><a name="l00607"></a><span class="lineno"> 607</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00608"></a><span class="lineno"> 608</span>  </div>
|
||
<div class="line"><a name="l00609"></a><span class="lineno"> 609</span> <span class="preprocessor">#if defined(JSON_HEDLEY_GCC_HAS_EXTENSION)</span></div>
|
||
<div class="line"><a name="l00610"></a><span class="lineno"> 610</span> <span class="preprocessor"> #undef JSON_HEDLEY_GCC_HAS_EXTENSION</span></div>
|
||
<div class="line"><a name="l00611"></a><span class="lineno"> 611</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00612"></a><span class="lineno"> 612</span> <span class="preprocessor">#if defined(__has_extension)</span></div>
|
||
<div class="line"><a name="l00613"></a><span class="lineno"> 613</span> <span class="preprocessor"> #define JSON_HEDLEY_GCC_HAS_EXTENSION(extension,major,minor,patch) __has_extension(extension)</span></div>
|
||
<div class="line"><a name="l00614"></a><span class="lineno"> 614</span> <span class="preprocessor">#else</span></div>
|
||
<div class="line"><a name="l00615"></a><span class="lineno"><a class="line" href="json_8hpp.html#af488159969a8b7154820cffe04bb4917"> 615</a></span> <span class="preprocessor"> #define JSON_HEDLEY_GCC_HAS_EXTENSION(extension,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch)</span></div>
|
||
<div class="line"><a name="l00616"></a><span class="lineno"> 616</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00617"></a><span class="lineno"> 617</span>  </div>
|
||
<div class="line"><a name="l00618"></a><span class="lineno"> 618</span> <span class="preprocessor">#if defined(JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE)</span></div>
|
||
<div class="line"><a name="l00619"></a><span class="lineno"> 619</span> <span class="preprocessor"> #undef JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE</span></div>
|
||
<div class="line"><a name="l00620"></a><span class="lineno"> 620</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00621"></a><span class="lineno"> 621</span> <span class="preprocessor">#if defined(__has_declspec_attribute)</span></div>
|
||
<div class="line"><a name="l00622"></a><span class="lineno"> 622</span> <span class="preprocessor"> #define JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE(attribute) __has_declspec_attribute(attribute)</span></div>
|
||
<div class="line"><a name="l00623"></a><span class="lineno"> 623</span> <span class="preprocessor">#else</span></div>
|
||
<div class="line"><a name="l00624"></a><span class="lineno"><a class="line" href="json_8hpp.html#ac256365345e803d24cbd9651d3cb0274"> 624</a></span> <span class="preprocessor"> #define JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE(attribute) (0)</span></div>
|
||
<div class="line"><a name="l00625"></a><span class="lineno"> 625</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00626"></a><span class="lineno"> 626</span>  </div>
|
||
<div class="line"><a name="l00627"></a><span class="lineno"> 627</span> <span class="preprocessor">#if defined(JSON_HEDLEY_GNUC_HAS_DECLSPEC_ATTRIBUTE)</span></div>
|
||
<div class="line"><a name="l00628"></a><span class="lineno"> 628</span> <span class="preprocessor"> #undef JSON_HEDLEY_GNUC_HAS_DECLSPEC_ATTRIBUTE</span></div>
|
||
<div class="line"><a name="l00629"></a><span class="lineno"> 629</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00630"></a><span class="lineno"> 630</span> <span class="preprocessor">#if defined(__has_declspec_attribute)</span></div>
|
||
<div class="line"><a name="l00631"></a><span class="lineno"> 631</span> <span class="preprocessor"> #define JSON_HEDLEY_GNUC_HAS_DECLSPEC_ATTRIBUTE(attribute,major,minor,patch) __has_declspec_attribute(attribute)</span></div>
|
||
<div class="line"><a name="l00632"></a><span class="lineno"> 632</span> <span class="preprocessor">#else</span></div>
|
||
<div class="line"><a name="l00633"></a><span class="lineno"><a class="line" href="json_8hpp.html#a005d6f0dbab6f7152e43fb85fc4f4990"> 633</a></span> <span class="preprocessor"> #define JSON_HEDLEY_GNUC_HAS_DECLSPEC_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch)</span></div>
|
||
<div class="line"><a name="l00634"></a><span class="lineno"> 634</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00635"></a><span class="lineno"> 635</span>  </div>
|
||
<div class="line"><a name="l00636"></a><span class="lineno"> 636</span> <span class="preprocessor">#if defined(JSON_HEDLEY_GCC_HAS_DECLSPEC_ATTRIBUTE)</span></div>
|
||
<div class="line"><a name="l00637"></a><span class="lineno"> 637</span> <span class="preprocessor"> #undef JSON_HEDLEY_GCC_HAS_DECLSPEC_ATTRIBUTE</span></div>
|
||
<div class="line"><a name="l00638"></a><span class="lineno"> 638</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00639"></a><span class="lineno"> 639</span> <span class="preprocessor">#if defined(__has_declspec_attribute)</span></div>
|
||
<div class="line"><a name="l00640"></a><span class="lineno"> 640</span> <span class="preprocessor"> #define JSON_HEDLEY_GCC_HAS_DECLSPEC_ATTRIBUTE(attribute,major,minor,patch) __has_declspec_attribute(attribute)</span></div>
|
||
<div class="line"><a name="l00641"></a><span class="lineno"> 641</span> <span class="preprocessor">#else</span></div>
|
||
<div class="line"><a name="l00642"></a><span class="lineno"><a class="line" href="json_8hpp.html#a164e098f308804c3bada63613ad75dab"> 642</a></span> <span class="preprocessor"> #define JSON_HEDLEY_GCC_HAS_DECLSPEC_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch)</span></div>
|
||
<div class="line"><a name="l00643"></a><span class="lineno"> 643</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00644"></a><span class="lineno"> 644</span>  </div>
|
||
<div class="line"><a name="l00645"></a><span class="lineno"> 645</span> <span class="preprocessor">#if defined(JSON_HEDLEY_HAS_WARNING)</span></div>
|
||
<div class="line"><a name="l00646"></a><span class="lineno"> 646</span> <span class="preprocessor"> #undef JSON_HEDLEY_HAS_WARNING</span></div>
|
||
<div class="line"><a name="l00647"></a><span class="lineno"> 647</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00648"></a><span class="lineno"> 648</span> <span class="preprocessor">#if defined(__has_warning)</span></div>
|
||
<div class="line"><a name="l00649"></a><span class="lineno"> 649</span> <span class="preprocessor"> #define JSON_HEDLEY_HAS_WARNING(warning) __has_warning(warning)</span></div>
|
||
<div class="line"><a name="l00650"></a><span class="lineno"> 650</span> <span class="preprocessor">#else</span></div>
|
||
<div class="line"><a name="l00651"></a><span class="lineno"><a class="line" href="json_8hpp.html#a472922971d1cd7308a4402042bdafe34"> 651</a></span> <span class="preprocessor"> #define JSON_HEDLEY_HAS_WARNING(warning) (0)</span></div>
|
||
<div class="line"><a name="l00652"></a><span class="lineno"> 652</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00653"></a><span class="lineno"> 653</span>  </div>
|
||
<div class="line"><a name="l00654"></a><span class="lineno"> 654</span> <span class="preprocessor">#if defined(JSON_HEDLEY_GNUC_HAS_WARNING)</span></div>
|
||
<div class="line"><a name="l00655"></a><span class="lineno"> 655</span> <span class="preprocessor"> #undef JSON_HEDLEY_GNUC_HAS_WARNING</span></div>
|
||
<div class="line"><a name="l00656"></a><span class="lineno"> 656</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00657"></a><span class="lineno"> 657</span> <span class="preprocessor">#if defined(__has_warning)</span></div>
|
||
<div class="line"><a name="l00658"></a><span class="lineno"> 658</span> <span class="preprocessor"> #define JSON_HEDLEY_GNUC_HAS_WARNING(warning,major,minor,patch) __has_warning(warning)</span></div>
|
||
<div class="line"><a name="l00659"></a><span class="lineno"> 659</span> <span class="preprocessor">#else</span></div>
|
||
<div class="line"><a name="l00660"></a><span class="lineno"><a class="line" href="json_8hpp.html#a8afa30449fac8b5069e62f26421d4148"> 660</a></span> <span class="preprocessor"> #define JSON_HEDLEY_GNUC_HAS_WARNING(warning,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch)</span></div>
|
||
<div class="line"><a name="l00661"></a><span class="lineno"> 661</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00662"></a><span class="lineno"> 662</span>  </div>
|
||
<div class="line"><a name="l00663"></a><span class="lineno"> 663</span> <span class="preprocessor">#if defined(JSON_HEDLEY_GCC_HAS_WARNING)</span></div>
|
||
<div class="line"><a name="l00664"></a><span class="lineno"> 664</span> <span class="preprocessor"> #undef JSON_HEDLEY_GCC_HAS_WARNING</span></div>
|
||
<div class="line"><a name="l00665"></a><span class="lineno"> 665</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00666"></a><span class="lineno"> 666</span> <span class="preprocessor">#if defined(__has_warning)</span></div>
|
||
<div class="line"><a name="l00667"></a><span class="lineno"> 667</span> <span class="preprocessor"> #define JSON_HEDLEY_GCC_HAS_WARNING(warning,major,minor,patch) __has_warning(warning)</span></div>
|
||
<div class="line"><a name="l00668"></a><span class="lineno"> 668</span> <span class="preprocessor">#else</span></div>
|
||
<div class="line"><a name="l00669"></a><span class="lineno"><a class="line" href="json_8hpp.html#ab45544391bc41507efde58d48331dfc2"> 669</a></span> <span class="preprocessor"> #define JSON_HEDLEY_GCC_HAS_WARNING(warning,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch)</span></div>
|
||
<div class="line"><a name="l00670"></a><span class="lineno"> 670</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00671"></a><span class="lineno"> 671</span>  </div>
|
||
<div class="line"><a name="l00672"></a><span class="lineno"> 672</span> <span class="comment">/* JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_ is for</span></div>
|
||
<div class="line"><a name="l00673"></a><span class="lineno"> 673</span> <span class="comment"> HEDLEY INTERNAL USE ONLY. API subject to change without notice. */</span></div>
|
||
<div class="line"><a name="l00674"></a><span class="lineno"> 674</span> <span class="preprocessor">#if defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_)</span></div>
|
||
<div class="line"><a name="l00675"></a><span class="lineno"> 675</span> <span class="preprocessor"> #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_</span></div>
|
||
<div class="line"><a name="l00676"></a><span class="lineno"> 676</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00677"></a><span class="lineno"> 677</span> <span class="preprocessor">#if defined(__cplusplus) && JSON_HEDLEY_HAS_WARNING("-Wc++98-compat")</span></div>
|
||
<div class="line"><a name="l00678"></a><span class="lineno"> 678</span> <span class="preprocessor"># define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(xpr) \</span></div>
|
||
<div class="line"><a name="l00679"></a><span class="lineno"> 679</span> <span class="preprocessor"> JSON_HEDLEY_DIAGNOSTIC_PUSH \</span></div>
|
||
<div class="line"><a name="l00680"></a><span class="lineno"> 680</span> <span class="preprocessor"> _Pragma("clang diagnostic ignored \"-Wc++98-compat\"") \</span></div>
|
||
<div class="line"><a name="l00681"></a><span class="lineno"> 681</span> <span class="preprocessor"> xpr \</span></div>
|
||
<div class="line"><a name="l00682"></a><span class="lineno"> 682</span> <span class="preprocessor"> JSON_HEDLEY_DIAGNOSTIC_POP</span></div>
|
||
<div class="line"><a name="l00683"></a><span class="lineno"> 683</span> <span class="preprocessor">#else</span></div>
|
||
<div class="line"><a name="l00684"></a><span class="lineno"><a class="line" href="json_8hpp.html#a543a78d9931a92663e3b3fc552a390a4"> 684</a></span> <span class="preprocessor"># define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(x) x</span></div>
|
||
<div class="line"><a name="l00685"></a><span class="lineno"> 685</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00686"></a><span class="lineno"> 686</span>  </div>
|
||
<div class="line"><a name="l00687"></a><span class="lineno"> 687</span> <span class="preprocessor">#if \</span></div>
|
||
<div class="line"><a name="l00688"></a><span class="lineno"> 688</span> <span class="preprocessor"> (defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || \</span></div>
|
||
<div class="line"><a name="l00689"></a><span class="lineno"> 689</span> <span class="preprocessor"> defined(__clang__) || \</span></div>
|
||
<div class="line"><a name="l00690"></a><span class="lineno"> 690</span> <span class="preprocessor"> JSON_HEDLEY_GCC_VERSION_CHECK(3,0,0) || \</span></div>
|
||
<div class="line"><a name="l00691"></a><span class="lineno"> 691</span> <span class="preprocessor"> JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \</span></div>
|
||
<div class="line"><a name="l00692"></a><span class="lineno"> 692</span> <span class="preprocessor"> JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) || \</span></div>
|
||
<div class="line"><a name="l00693"></a><span class="lineno"> 693</span> <span class="preprocessor"> JSON_HEDLEY_PGI_VERSION_CHECK(18,4,0) || \</span></div>
|
||
<div class="line"><a name="l00694"></a><span class="lineno"> 694</span> <span class="preprocessor"> JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \</span></div>
|
||
<div class="line"><a name="l00695"></a><span class="lineno"> 695</span> <span class="preprocessor"> JSON_HEDLEY_TI_VERSION_CHECK(6,0,0) || \</span></div>
|
||
<div class="line"><a name="l00696"></a><span class="lineno"> 696</span> <span class="preprocessor"> JSON_HEDLEY_CRAY_VERSION_CHECK(5,0,0) || \</span></div>
|
||
<div class="line"><a name="l00697"></a><span class="lineno"> 697</span> <span class="preprocessor"> JSON_HEDLEY_TINYC_VERSION_CHECK(0,9,17) || \</span></div>
|
||
<div class="line"><a name="l00698"></a><span class="lineno"> 698</span> <span class="preprocessor"> JSON_HEDLEY_SUNPRO_VERSION_CHECK(8,0,0) || \</span></div>
|
||
<div class="line"><a name="l00699"></a><span class="lineno"> 699</span> <span class="preprocessor"> (JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) && defined(__C99_PRAGMA_OPERATOR))</span></div>
|
||
<div class="line"><a name="l00700"></a><span class="lineno"> 700</span> <span class="preprocessor"> #define JSON_HEDLEY_PRAGMA(value) _Pragma(#value)</span></div>
|
||
<div class="line"><a name="l00701"></a><span class="lineno"> 701</span> <span class="preprocessor">#elif JSON_HEDLEY_MSVC_VERSION_CHECK(15,0,0)</span></div>
|
||
<div class="line"><a name="l00702"></a><span class="lineno"> 702</span> <span class="preprocessor"> #define JSON_HEDLEY_PRAGMA(value) __pragma(value)</span></div>
|
||
<div class="line"><a name="l00703"></a><span class="lineno"> 703</span> <span class="preprocessor">#else</span></div>
|
||
<div class="line"><a name="l00704"></a><span class="lineno"><a class="line" href="json_8hpp.html#aeb6e382f24fc5453621ae258b72e8775"> 704</a></span> <span class="preprocessor"> #define JSON_HEDLEY_PRAGMA(value)</span></div>
|
||
<div class="line"><a name="l00705"></a><span class="lineno"> 705</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00706"></a><span class="lineno"> 706</span>  </div>
|
||
<div class="line"><a name="l00707"></a><span class="lineno"> 707</span> <span class="preprocessor">#if defined(JSON_HEDLEY_DIAGNOSTIC_PUSH)</span></div>
|
||
<div class="line"><a name="l00708"></a><span class="lineno"> 708</span> <span class="preprocessor"> #undef JSON_HEDLEY_DIAGNOSTIC_PUSH</span></div>
|
||
<div class="line"><a name="l00709"></a><span class="lineno"> 709</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00710"></a><span class="lineno"> 710</span> <span class="preprocessor">#if defined(JSON_HEDLEY_DIAGNOSTIC_POP)</span></div>
|
||
<div class="line"><a name="l00711"></a><span class="lineno"> 711</span> <span class="preprocessor"> #undef JSON_HEDLEY_DIAGNOSTIC_POP</span></div>
|
||
<div class="line"><a name="l00712"></a><span class="lineno"> 712</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00713"></a><span class="lineno"> 713</span> <span class="preprocessor">#if defined(__clang__)</span></div>
|
||
<div class="line"><a name="l00714"></a><span class="lineno"> 714</span> <span class="preprocessor"> #define JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("clang diagnostic push")</span></div>
|
||
<div class="line"><a name="l00715"></a><span class="lineno"> 715</span> <span class="preprocessor"> #define JSON_HEDLEY_DIAGNOSTIC_POP _Pragma("clang diagnostic pop")</span></div>
|
||
<div class="line"><a name="l00716"></a><span class="lineno"> 716</span> <span class="preprocessor">#elif JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0)</span></div>
|
||
<div class="line"><a name="l00717"></a><span class="lineno"> 717</span> <span class="preprocessor"> #define JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("warning(push)")</span></div>
|
||
<div class="line"><a name="l00718"></a><span class="lineno"> 718</span> <span class="preprocessor"> #define JSON_HEDLEY_DIAGNOSTIC_POP _Pragma("warning(pop)")</span></div>
|
||
<div class="line"><a name="l00719"></a><span class="lineno"> 719</span> <span class="preprocessor">#elif JSON_HEDLEY_GCC_VERSION_CHECK(4,6,0)</span></div>
|
||
<div class="line"><a name="l00720"></a><span class="lineno"> 720</span> <span class="preprocessor"> #define JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("GCC diagnostic push")</span></div>
|
||
<div class="line"><a name="l00721"></a><span class="lineno"> 721</span> <span class="preprocessor"> #define JSON_HEDLEY_DIAGNOSTIC_POP _Pragma("GCC diagnostic pop")</span></div>
|
||
<div class="line"><a name="l00722"></a><span class="lineno"> 722</span> <span class="preprocessor">#elif JSON_HEDLEY_MSVC_VERSION_CHECK(15,0,0)</span></div>
|
||
<div class="line"><a name="l00723"></a><span class="lineno"> 723</span> <span class="preprocessor"> #define JSON_HEDLEY_DIAGNOSTIC_PUSH __pragma(warning(push))</span></div>
|
||
<div class="line"><a name="l00724"></a><span class="lineno"> 724</span> <span class="preprocessor"> #define JSON_HEDLEY_DIAGNOSTIC_POP __pragma(warning(pop))</span></div>
|
||
<div class="line"><a name="l00725"></a><span class="lineno"> 725</span> <span class="preprocessor">#elif JSON_HEDLEY_ARM_VERSION_CHECK(5,6,0)</span></div>
|
||
<div class="line"><a name="l00726"></a><span class="lineno"> 726</span> <span class="preprocessor"> #define JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("push")</span></div>
|
||
<div class="line"><a name="l00727"></a><span class="lineno"> 727</span> <span class="preprocessor"> #define JSON_HEDLEY_DIAGNOSTIC_POP _Pragma("pop")</span></div>
|
||
<div class="line"><a name="l00728"></a><span class="lineno"> 728</span> <span class="preprocessor">#elif JSON_HEDLEY_TI_VERSION_CHECK(8,1,0)</span></div>
|
||
<div class="line"><a name="l00729"></a><span class="lineno"> 729</span> <span class="preprocessor"> #define JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("diag_push")</span></div>
|
||
<div class="line"><a name="l00730"></a><span class="lineno"> 730</span> <span class="preprocessor"> #define JSON_HEDLEY_DIAGNOSTIC_POP _Pragma("diag_pop")</span></div>
|
||
<div class="line"><a name="l00731"></a><span class="lineno"> 731</span> <span class="preprocessor">#elif JSON_HEDLEY_PELLES_VERSION_CHECK(2,90,0)</span></div>
|
||
<div class="line"><a name="l00732"></a><span class="lineno"> 732</span> <span class="preprocessor"> #define JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("warning(push)")</span></div>
|
||
<div class="line"><a name="l00733"></a><span class="lineno"> 733</span> <span class="preprocessor"> #define JSON_HEDLEY_DIAGNOSTIC_POP _Pragma("warning(pop)")</span></div>
|
||
<div class="line"><a name="l00734"></a><span class="lineno"> 734</span> <span class="preprocessor">#else</span></div>
|
||
<div class="line"><a name="l00735"></a><span class="lineno"><a class="line" href="json_8hpp.html#a1850f57fcda72becebc7033a2e10e77b"> 735</a></span> <span class="preprocessor"> #define JSON_HEDLEY_DIAGNOSTIC_PUSH</span></div>
|
||
<div class="line"><a name="l00736"></a><span class="lineno"><a class="line" href="json_8hpp.html#aeedd50a52e1ea565ceab84bb596ec07f"> 736</a></span> <span class="preprocessor"> #define JSON_HEDLEY_DIAGNOSTIC_POP</span></div>
|
||
<div class="line"><a name="l00737"></a><span class="lineno"> 737</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00738"></a><span class="lineno"> 738</span>  </div>
|
||
<div class="line"><a name="l00739"></a><span class="lineno"> 739</span> <span class="preprocessor">#if defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED)</span></div>
|
||
<div class="line"><a name="l00740"></a><span class="lineno"> 740</span> <span class="preprocessor"> #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED</span></div>
|
||
<div class="line"><a name="l00741"></a><span class="lineno"> 741</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00742"></a><span class="lineno"> 742</span> <span class="preprocessor">#if JSON_HEDLEY_HAS_WARNING("-Wdeprecated-declarations")</span></div>
|
||
<div class="line"><a name="l00743"></a><span class="lineno"> 743</span> <span class="preprocessor"> #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("clang diagnostic ignored \"-Wdeprecated-declarations\"")</span></div>
|
||
<div class="line"><a name="l00744"></a><span class="lineno"> 744</span> <span class="preprocessor">#elif JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0)</span></div>
|
||
<div class="line"><a name="l00745"></a><span class="lineno"> 745</span> <span class="preprocessor"> #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("warning(disable:1478 1786)")</span></div>
|
||
<div class="line"><a name="l00746"></a><span class="lineno"> 746</span> <span class="preprocessor">#elif JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0)</span></div>
|
||
<div class="line"><a name="l00747"></a><span class="lineno"> 747</span> <span class="preprocessor"> #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("diag_suppress 1215,1444")</span></div>
|
||
<div class="line"><a name="l00748"></a><span class="lineno"> 748</span> <span class="preprocessor">#elif JSON_HEDLEY_GCC_VERSION_CHECK(4,3,0)</span></div>
|
||
<div class="line"><a name="l00749"></a><span class="lineno"> 749</span> <span class="preprocessor"> #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"")</span></div>
|
||
<div class="line"><a name="l00750"></a><span class="lineno"> 750</span> <span class="preprocessor">#elif JSON_HEDLEY_MSVC_VERSION_CHECK(15,0,0)</span></div>
|
||
<div class="line"><a name="l00751"></a><span class="lineno"> 751</span> <span class="preprocessor"> #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED __pragma(warning(disable:4996))</span></div>
|
||
<div class="line"><a name="l00752"></a><span class="lineno"> 752</span> <span class="preprocessor">#elif JSON_HEDLEY_TI_VERSION_CHECK(8,0,0)</span></div>
|
||
<div class="line"><a name="l00753"></a><span class="lineno"> 753</span> <span class="preprocessor"> #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("diag_suppress 1291,1718")</span></div>
|
||
<div class="line"><a name="l00754"></a><span class="lineno"> 754</span> <span class="preprocessor">#elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,13,0) && !defined(__cplusplus)</span></div>
|
||
<div class="line"><a name="l00755"></a><span class="lineno"> 755</span> <span class="preprocessor"> #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("error_messages(off,E_DEPRECATED_ATT,E_DEPRECATED_ATT_MESS)")</span></div>
|
||
<div class="line"><a name="l00756"></a><span class="lineno"> 756</span> <span class="preprocessor">#elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,13,0) && defined(__cplusplus)</span></div>
|
||
<div class="line"><a name="l00757"></a><span class="lineno"> 757</span> <span class="preprocessor"> #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("error_messages(off,symdeprecated,symdeprecated2)")</span></div>
|
||
<div class="line"><a name="l00758"></a><span class="lineno"> 758</span> <span class="preprocessor">#elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0)</span></div>
|
||
<div class="line"><a name="l00759"></a><span class="lineno"> 759</span> <span class="preprocessor"> #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("diag_suppress=Pe1444,Pe1215")</span></div>
|
||
<div class="line"><a name="l00760"></a><span class="lineno"> 760</span> <span class="preprocessor">#elif JSON_HEDLEY_PELLES_VERSION_CHECK(2,90,0)</span></div>
|
||
<div class="line"><a name="l00761"></a><span class="lineno"> 761</span> <span class="preprocessor"> #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("warn(disable:2241)")</span></div>
|
||
<div class="line"><a name="l00762"></a><span class="lineno"> 762</span> <span class="preprocessor">#else</span></div>
|
||
<div class="line"><a name="l00763"></a><span class="lineno"><a class="line" href="json_8hpp.html#afe5855242129fa5d1adf55227669a337"> 763</a></span> <span class="preprocessor"> #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED</span></div>
|
||
<div class="line"><a name="l00764"></a><span class="lineno"> 764</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00765"></a><span class="lineno"> 765</span>  </div>
|
||
<div class="line"><a name="l00766"></a><span class="lineno"> 766</span> <span class="preprocessor">#if defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS)</span></div>
|
||
<div class="line"><a name="l00767"></a><span class="lineno"> 767</span> <span class="preprocessor"> #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS</span></div>
|
||
<div class="line"><a name="l00768"></a><span class="lineno"> 768</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00769"></a><span class="lineno"> 769</span> <span class="preprocessor">#if JSON_HEDLEY_HAS_WARNING("-Wunknown-pragmas")</span></div>
|
||
<div class="line"><a name="l00770"></a><span class="lineno"> 770</span> <span class="preprocessor"> #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("clang diagnostic ignored \"-Wunknown-pragmas\"")</span></div>
|
||
<div class="line"><a name="l00771"></a><span class="lineno"> 771</span> <span class="preprocessor">#elif JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0)</span></div>
|
||
<div class="line"><a name="l00772"></a><span class="lineno"> 772</span> <span class="preprocessor"> #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("warning(disable:161)")</span></div>
|
||
<div class="line"><a name="l00773"></a><span class="lineno"> 773</span> <span class="preprocessor">#elif JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0)</span></div>
|
||
<div class="line"><a name="l00774"></a><span class="lineno"> 774</span> <span class="preprocessor"> #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("diag_suppress 1675")</span></div>
|
||
<div class="line"><a name="l00775"></a><span class="lineno"> 775</span> <span class="preprocessor">#elif JSON_HEDLEY_GCC_VERSION_CHECK(4,3,0)</span></div>
|
||
<div class="line"><a name="l00776"></a><span class="lineno"> 776</span> <span class="preprocessor"> #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("GCC diagnostic ignored \"-Wunknown-pragmas\"")</span></div>
|
||
<div class="line"><a name="l00777"></a><span class="lineno"> 777</span> <span class="preprocessor">#elif JSON_HEDLEY_MSVC_VERSION_CHECK(15,0,0)</span></div>
|
||
<div class="line"><a name="l00778"></a><span class="lineno"> 778</span> <span class="preprocessor"> #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS __pragma(warning(disable:4068))</span></div>
|
||
<div class="line"><a name="l00779"></a><span class="lineno"> 779</span> <span class="preprocessor">#elif JSON_HEDLEY_TI_VERSION_CHECK(8,0,0)</span></div>
|
||
<div class="line"><a name="l00780"></a><span class="lineno"> 780</span> <span class="preprocessor"> #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("diag_suppress 163")</span></div>
|
||
<div class="line"><a name="l00781"></a><span class="lineno"> 781</span> <span class="preprocessor">#elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0)</span></div>
|
||
<div class="line"><a name="l00782"></a><span class="lineno"> 782</span> <span class="preprocessor"> #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("diag_suppress=Pe161")</span></div>
|
||
<div class="line"><a name="l00783"></a><span class="lineno"> 783</span> <span class="preprocessor">#else</span></div>
|
||
<div class="line"><a name="l00784"></a><span class="lineno"><a class="line" href="json_8hpp.html#ab67745ae0065d536d8e67969db68d564"> 784</a></span> <span class="preprocessor"> #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS</span></div>
|
||
<div class="line"><a name="l00785"></a><span class="lineno"> 785</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00786"></a><span class="lineno"> 786</span>  </div>
|
||
<div class="line"><a name="l00787"></a><span class="lineno"> 787</span> <span class="preprocessor">#if defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES)</span></div>
|
||
<div class="line"><a name="l00788"></a><span class="lineno"> 788</span> <span class="preprocessor"> #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES</span></div>
|
||
<div class="line"><a name="l00789"></a><span class="lineno"> 789</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00790"></a><span class="lineno"> 790</span> <span class="preprocessor">#if JSON_HEDLEY_HAS_WARNING("-Wunknown-attributes")</span></div>
|
||
<div class="line"><a name="l00791"></a><span class="lineno"> 791</span> <span class="preprocessor"> #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("clang diagnostic ignored \"-Wunknown-attributes\"")</span></div>
|
||
<div class="line"><a name="l00792"></a><span class="lineno"> 792</span> <span class="preprocessor">#elif JSON_HEDLEY_GCC_VERSION_CHECK(4,6,0)</span></div>
|
||
<div class="line"><a name="l00793"></a><span class="lineno"> 793</span> <span class="preprocessor"> #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"")</span></div>
|
||
<div class="line"><a name="l00794"></a><span class="lineno"> 794</span> <span class="preprocessor">#elif JSON_HEDLEY_INTEL_VERSION_CHECK(17,0,0)</span></div>
|
||
<div class="line"><a name="l00795"></a><span class="lineno"> 795</span> <span class="preprocessor"> #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("warning(disable:1292)")</span></div>
|
||
<div class="line"><a name="l00796"></a><span class="lineno"> 796</span> <span class="preprocessor">#elif JSON_HEDLEY_MSVC_VERSION_CHECK(19,0,0)</span></div>
|
||
<div class="line"><a name="l00797"></a><span class="lineno"> 797</span> <span class="preprocessor"> #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES __pragma(warning(disable:5030))</span></div>
|
||
<div class="line"><a name="l00798"></a><span class="lineno"> 798</span> <span class="preprocessor">#elif JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0)</span></div>
|
||
<div class="line"><a name="l00799"></a><span class="lineno"> 799</span> <span class="preprocessor"> #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("diag_suppress 1097")</span></div>
|
||
<div class="line"><a name="l00800"></a><span class="lineno"> 800</span> <span class="preprocessor">#elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,14,0) && defined(__cplusplus)</span></div>
|
||
<div class="line"><a name="l00801"></a><span class="lineno"> 801</span> <span class="preprocessor"> #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("error_messages(off,attrskipunsup)")</span></div>
|
||
<div class="line"><a name="l00802"></a><span class="lineno"> 802</span> <span class="preprocessor">#elif JSON_HEDLEY_TI_VERSION_CHECK(8,0,0)</span></div>
|
||
<div class="line"><a name="l00803"></a><span class="lineno"> 803</span> <span class="preprocessor"> #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("diag_suppress 1173")</span></div>
|
||
<div class="line"><a name="l00804"></a><span class="lineno"> 804</span> <span class="preprocessor">#else</span></div>
|
||
<div class="line"><a name="l00805"></a><span class="lineno"><a class="line" href="json_8hpp.html#ab6e5abd7e400c9a725278206ece33e16"> 805</a></span> <span class="preprocessor"> #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES</span></div>
|
||
<div class="line"><a name="l00806"></a><span class="lineno"> 806</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00807"></a><span class="lineno"> 807</span>  </div>
|
||
<div class="line"><a name="l00808"></a><span class="lineno"> 808</span> <span class="preprocessor">#if defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL)</span></div>
|
||
<div class="line"><a name="l00809"></a><span class="lineno"> 809</span> <span class="preprocessor"> #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL</span></div>
|
||
<div class="line"><a name="l00810"></a><span class="lineno"> 810</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00811"></a><span class="lineno"> 811</span> <span class="preprocessor">#if JSON_HEDLEY_HAS_WARNING("-Wcast-qual")</span></div>
|
||
<div class="line"><a name="l00812"></a><span class="lineno"> 812</span> <span class="preprocessor"> #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL _Pragma("clang diagnostic ignored \"-Wcast-qual\"")</span></div>
|
||
<div class="line"><a name="l00813"></a><span class="lineno"> 813</span> <span class="preprocessor">#elif JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0)</span></div>
|
||
<div class="line"><a name="l00814"></a><span class="lineno"> 814</span> <span class="preprocessor"> #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL _Pragma("warning(disable:2203 2331)")</span></div>
|
||
<div class="line"><a name="l00815"></a><span class="lineno"> 815</span> <span class="preprocessor">#elif JSON_HEDLEY_GCC_VERSION_CHECK(3,0,0)</span></div>
|
||
<div class="line"><a name="l00816"></a><span class="lineno"> 816</span> <span class="preprocessor"> #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL _Pragma("GCC diagnostic ignored \"-Wcast-qual\"")</span></div>
|
||
<div class="line"><a name="l00817"></a><span class="lineno"> 817</span> <span class="preprocessor">#else</span></div>
|
||
<div class="line"><a name="l00818"></a><span class="lineno"><a class="line" href="json_8hpp.html#a8d412aa5d441b533afa439a89aa4a754"> 818</a></span> <span class="preprocessor"> #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL</span></div>
|
||
<div class="line"><a name="l00819"></a><span class="lineno"> 819</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00820"></a><span class="lineno"> 820</span>  </div>
|
||
<div class="line"><a name="l00821"></a><span class="lineno"> 821</span> <span class="preprocessor">#if defined(JSON_HEDLEY_DEPRECATED)</span></div>
|
||
<div class="line"><a name="l00822"></a><span class="lineno"> 822</span> <span class="preprocessor"> #undef JSON_HEDLEY_DEPRECATED</span></div>
|
||
<div class="line"><a name="l00823"></a><span class="lineno"> 823</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00824"></a><span class="lineno"> 824</span> <span class="preprocessor">#if defined(JSON_HEDLEY_DEPRECATED_FOR)</span></div>
|
||
<div class="line"><a name="l00825"></a><span class="lineno"> 825</span> <span class="preprocessor"> #undef JSON_HEDLEY_DEPRECATED_FOR</span></div>
|
||
<div class="line"><a name="l00826"></a><span class="lineno"> 826</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00827"></a><span class="lineno"> 827</span> <span class="preprocessor">#if defined(__cplusplus) && (__cplusplus >= 201402L)</span></div>
|
||
<div class="line"><a name="l00828"></a><span class="lineno"> 828</span> <span class="preprocessor"> #define JSON_HEDLEY_DEPRECATED(since) JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[deprecated("Since " #since)]])</span></div>
|
||
<div class="line"><a name="l00829"></a><span class="lineno"> 829</span> <span class="preprocessor"> #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[deprecated("Since " #since "; use " #replacement)]])</span></div>
|
||
<div class="line"><a name="l00830"></a><span class="lineno"> 830</span> <span class="preprocessor">#elif \</span></div>
|
||
<div class="line"><a name="l00831"></a><span class="lineno"> 831</span> <span class="preprocessor"> JSON_HEDLEY_HAS_EXTENSION(attribute_deprecated_with_message) || \</span></div>
|
||
<div class="line"><a name="l00832"></a><span class="lineno"> 832</span> <span class="preprocessor"> JSON_HEDLEY_GCC_VERSION_CHECK(4,5,0) || \</span></div>
|
||
<div class="line"><a name="l00833"></a><span class="lineno"> 833</span> <span class="preprocessor"> JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \</span></div>
|
||
<div class="line"><a name="l00834"></a><span class="lineno"> 834</span> <span class="preprocessor"> JSON_HEDLEY_ARM_VERSION_CHECK(5,6,0) || \</span></div>
|
||
<div class="line"><a name="l00835"></a><span class="lineno"> 835</span> <span class="preprocessor"> JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,13,0) || \</span></div>
|
||
<div class="line"><a name="l00836"></a><span class="lineno"> 836</span> <span class="preprocessor"> JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0) || \</span></div>
|
||
<div class="line"><a name="l00837"></a><span class="lineno"> 837</span> <span class="preprocessor"> JSON_HEDLEY_TI_VERSION_CHECK(8,3,0)</span></div>
|
||
<div class="line"><a name="l00838"></a><span class="lineno"> 838</span> <span class="preprocessor"> #define JSON_HEDLEY_DEPRECATED(since) __attribute__((__deprecated__("Since " #since)))</span></div>
|
||
<div class="line"><a name="l00839"></a><span class="lineno"> 839</span> <span class="preprocessor"> #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) __attribute__((__deprecated__("Since " #since "; use " #replacement)))</span></div>
|
||
<div class="line"><a name="l00840"></a><span class="lineno"> 840</span> <span class="preprocessor">#elif \</span></div>
|
||
<div class="line"><a name="l00841"></a><span class="lineno"> 841</span> <span class="preprocessor"> JSON_HEDLEY_HAS_ATTRIBUTE(deprecated) || \</span></div>
|
||
<div class="line"><a name="l00842"></a><span class="lineno"> 842</span> <span class="preprocessor"> JSON_HEDLEY_GCC_VERSION_CHECK(3,1,0) || \</span></div>
|
||
<div class="line"><a name="l00843"></a><span class="lineno"> 843</span> <span class="preprocessor"> JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \</span></div>
|
||
<div class="line"><a name="l00844"></a><span class="lineno"> 844</span> <span class="preprocessor"> JSON_HEDLEY_TI_VERSION_CHECK(8,0,0) || \</span></div>
|
||
<div class="line"><a name="l00845"></a><span class="lineno"> 845</span> <span class="preprocessor"> (JSON_HEDLEY_TI_VERSION_CHECK(7,3,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__))</span></div>
|
||
<div class="line"><a name="l00846"></a><span class="lineno"> 846</span> <span class="preprocessor"> #define JSON_HEDLEY_DEPRECATED(since) __attribute__((__deprecated__))</span></div>
|
||
<div class="line"><a name="l00847"></a><span class="lineno"> 847</span> <span class="preprocessor"> #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) __attribute__((__deprecated__))</span></div>
|
||
<div class="line"><a name="l00848"></a><span class="lineno"> 848</span> <span class="preprocessor">#elif JSON_HEDLEY_MSVC_VERSION_CHECK(14,0,0)</span></div>
|
||
<div class="line"><a name="l00849"></a><span class="lineno"> 849</span> <span class="preprocessor"> #define JSON_HEDLEY_DEPRECATED(since) __declspec(deprecated("Since " # since))</span></div>
|
||
<div class="line"><a name="l00850"></a><span class="lineno"> 850</span> <span class="preprocessor"> #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) __declspec(deprecated("Since " #since "; use " #replacement))</span></div>
|
||
<div class="line"><a name="l00851"></a><span class="lineno"> 851</span> <span class="preprocessor">#elif \</span></div>
|
||
<div class="line"><a name="l00852"></a><span class="lineno"> 852</span> <span class="preprocessor"> JSON_HEDLEY_MSVC_VERSION_CHECK(13,10,0) || \</span></div>
|
||
<div class="line"><a name="l00853"></a><span class="lineno"> 853</span> <span class="preprocessor"> JSON_HEDLEY_PELLES_VERSION_CHECK(6,50,0)</span></div>
|
||
<div class="line"><a name="l00854"></a><span class="lineno"> 854</span> <span class="preprocessor"> #define JSON_HEDLEY_DEPRECATED(since) __declspec(deprecated)</span></div>
|
||
<div class="line"><a name="l00855"></a><span class="lineno"> 855</span> <span class="preprocessor"> #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) __declspec(deprecated)</span></div>
|
||
<div class="line"><a name="l00856"></a><span class="lineno"> 856</span> <span class="preprocessor">#elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0)</span></div>
|
||
<div class="line"><a name="l00857"></a><span class="lineno"> 857</span> <span class="preprocessor"> #define JSON_HEDLEY_DEPRECATED(since) _Pragma("deprecated")</span></div>
|
||
<div class="line"><a name="l00858"></a><span class="lineno"> 858</span> <span class="preprocessor"> #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) _Pragma("deprecated")</span></div>
|
||
<div class="line"><a name="l00859"></a><span class="lineno"> 859</span> <span class="preprocessor">#else</span></div>
|
||
<div class="line"><a name="l00860"></a><span class="lineno"><a class="line" href="json_8hpp.html#a0f2cbf281fa983a844b9279c697b7a0c"> 860</a></span> <span class="preprocessor"> #define JSON_HEDLEY_DEPRECATED(since)</span></div>
|
||
<div class="line"><a name="l00861"></a><span class="lineno"><a class="line" href="json_8hpp.html#af0469b867b0ec3a1c4b229ce9d087620"> 861</a></span> <span class="preprocessor"> #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement)</span></div>
|
||
<div class="line"><a name="l00862"></a><span class="lineno"> 862</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00863"></a><span class="lineno"> 863</span>  </div>
|
||
<div class="line"><a name="l00864"></a><span class="lineno"> 864</span> <span class="preprocessor">#if defined(JSON_HEDLEY_UNAVAILABLE)</span></div>
|
||
<div class="line"><a name="l00865"></a><span class="lineno"> 865</span> <span class="preprocessor"> #undef JSON_HEDLEY_UNAVAILABLE</span></div>
|
||
<div class="line"><a name="l00866"></a><span class="lineno"> 866</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00867"></a><span class="lineno"> 867</span> <span class="preprocessor">#if \</span></div>
|
||
<div class="line"><a name="l00868"></a><span class="lineno"> 868</span> <span class="preprocessor"> JSON_HEDLEY_HAS_ATTRIBUTE(warning) || \</span></div>
|
||
<div class="line"><a name="l00869"></a><span class="lineno"> 869</span> <span class="preprocessor"> JSON_HEDLEY_GCC_VERSION_CHECK(4,3,0) || \</span></div>
|
||
<div class="line"><a name="l00870"></a><span class="lineno"> 870</span> <span class="preprocessor"> JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0)</span></div>
|
||
<div class="line"><a name="l00871"></a><span class="lineno"> 871</span> <span class="preprocessor"> #define JSON_HEDLEY_UNAVAILABLE(available_since) __attribute__((__warning__("Not available until " #available_since)))</span></div>
|
||
<div class="line"><a name="l00872"></a><span class="lineno"> 872</span> <span class="preprocessor">#else</span></div>
|
||
<div class="line"><a name="l00873"></a><span class="lineno"><a class="line" href="json_8hpp.html#a681fd0533fbc24394f3322b6f4a60c4f"> 873</a></span> <span class="preprocessor"> #define JSON_HEDLEY_UNAVAILABLE(available_since)</span></div>
|
||
<div class="line"><a name="l00874"></a><span class="lineno"> 874</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00875"></a><span class="lineno"> 875</span>  </div>
|
||
<div class="line"><a name="l00876"></a><span class="lineno"> 876</span> <span class="preprocessor">#if defined(JSON_HEDLEY_WARN_UNUSED_RESULT)</span></div>
|
||
<div class="line"><a name="l00877"></a><span class="lineno"> 877</span> <span class="preprocessor"> #undef JSON_HEDLEY_WARN_UNUSED_RESULT</span></div>
|
||
<div class="line"><a name="l00878"></a><span class="lineno"> 878</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00879"></a><span class="lineno"> 879</span> <span class="preprocessor">#if defined(__cplusplus) && (__cplusplus >= 201703L)</span></div>
|
||
<div class="line"><a name="l00880"></a><span class="lineno"> 880</span> <span class="preprocessor"> #define JSON_HEDLEY_WARN_UNUSED_RESULT JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[nodiscard]])</span></div>
|
||
<div class="line"><a name="l00881"></a><span class="lineno"> 881</span> <span class="preprocessor">#elif \</span></div>
|
||
<div class="line"><a name="l00882"></a><span class="lineno"> 882</span> <span class="preprocessor"> JSON_HEDLEY_HAS_ATTRIBUTE(warn_unused_result) || \</span></div>
|
||
<div class="line"><a name="l00883"></a><span class="lineno"> 883</span> <span class="preprocessor"> JSON_HEDLEY_GCC_VERSION_CHECK(3,4,0) || \</span></div>
|
||
<div class="line"><a name="l00884"></a><span class="lineno"> 884</span> <span class="preprocessor"> JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \</span></div>
|
||
<div class="line"><a name="l00885"></a><span class="lineno"> 885</span> <span class="preprocessor"> JSON_HEDLEY_TI_VERSION_CHECK(8,0,0) || \</span></div>
|
||
<div class="line"><a name="l00886"></a><span class="lineno"> 886</span> <span class="preprocessor"> (JSON_HEDLEY_TI_VERSION_CHECK(7,3,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \</span></div>
|
||
<div class="line"><a name="l00887"></a><span class="lineno"> 887</span> <span class="preprocessor"> (JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,15,0) && defined(__cplusplus)) || \</span></div>
|
||
<div class="line"><a name="l00888"></a><span class="lineno"> 888</span> <span class="preprocessor"> JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0)</span></div>
|
||
<div class="line"><a name="l00889"></a><span class="lineno"> 889</span> <span class="preprocessor"> #define JSON_HEDLEY_WARN_UNUSED_RESULT __attribute__((__warn_unused_result__))</span></div>
|
||
<div class="line"><a name="l00890"></a><span class="lineno"> 890</span> <span class="preprocessor">#elif defined(_Check_return_) </span><span class="comment">/* SAL */</span><span class="preprocessor"></span></div>
|
||
<div class="line"><a name="l00891"></a><span class="lineno"> 891</span> <span class="preprocessor"> #define JSON_HEDLEY_WARN_UNUSED_RESULT _Check_return_</span></div>
|
||
<div class="line"><a name="l00892"></a><span class="lineno"> 892</span> <span class="preprocessor">#else</span></div>
|
||
<div class="line"><a name="l00893"></a><span class="lineno"><a class="line" href="json_8hpp.html#a28d7e3b2d26bd5b8a3806da3db7dea03"> 893</a></span> <span class="preprocessor"> #define JSON_HEDLEY_WARN_UNUSED_RESULT</span></div>
|
||
<div class="line"><a name="l00894"></a><span class="lineno"> 894</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00895"></a><span class="lineno"> 895</span>  </div>
|
||
<div class="line"><a name="l00896"></a><span class="lineno"> 896</span> <span class="preprocessor">#if defined(JSON_HEDLEY_SENTINEL)</span></div>
|
||
<div class="line"><a name="l00897"></a><span class="lineno"> 897</span> <span class="preprocessor"> #undef JSON_HEDLEY_SENTINEL</span></div>
|
||
<div class="line"><a name="l00898"></a><span class="lineno"> 898</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00899"></a><span class="lineno"> 899</span> <span class="preprocessor">#if \</span></div>
|
||
<div class="line"><a name="l00900"></a><span class="lineno"> 900</span> <span class="preprocessor"> JSON_HEDLEY_HAS_ATTRIBUTE(sentinel) || \</span></div>
|
||
<div class="line"><a name="l00901"></a><span class="lineno"> 901</span> <span class="preprocessor"> JSON_HEDLEY_GCC_VERSION_CHECK(4,0,0) || \</span></div>
|
||
<div class="line"><a name="l00902"></a><span class="lineno"> 902</span> <span class="preprocessor"> JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \</span></div>
|
||
<div class="line"><a name="l00903"></a><span class="lineno"> 903</span> <span class="preprocessor"> JSON_HEDLEY_ARM_VERSION_CHECK(5,4,0)</span></div>
|
||
<div class="line"><a name="l00904"></a><span class="lineno"> 904</span> <span class="preprocessor"> #define JSON_HEDLEY_SENTINEL(position) __attribute__((__sentinel__(position)))</span></div>
|
||
<div class="line"><a name="l00905"></a><span class="lineno"> 905</span> <span class="preprocessor">#else</span></div>
|
||
<div class="line"><a name="l00906"></a><span class="lineno"><a class="line" href="json_8hpp.html#afe58497d56cda5e4cbf2d33be1bdd91e"> 906</a></span> <span class="preprocessor"> #define JSON_HEDLEY_SENTINEL(position)</span></div>
|
||
<div class="line"><a name="l00907"></a><span class="lineno"> 907</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00908"></a><span class="lineno"> 908</span>  </div>
|
||
<div class="line"><a name="l00909"></a><span class="lineno"> 909</span> <span class="preprocessor">#if defined(JSON_HEDLEY_NO_RETURN)</span></div>
|
||
<div class="line"><a name="l00910"></a><span class="lineno"> 910</span> <span class="preprocessor"> #undef JSON_HEDLEY_NO_RETURN</span></div>
|
||
<div class="line"><a name="l00911"></a><span class="lineno"> 911</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00912"></a><span class="lineno"> 912</span> <span class="preprocessor">#if JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0)</span></div>
|
||
<div class="line"><a name="l00913"></a><span class="lineno"> 913</span> <span class="preprocessor"> #define JSON_HEDLEY_NO_RETURN __noreturn</span></div>
|
||
<div class="line"><a name="l00914"></a><span class="lineno"> 914</span> <span class="preprocessor">#elif JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0)</span></div>
|
||
<div class="line"><a name="l00915"></a><span class="lineno"> 915</span> <span class="preprocessor"> #define JSON_HEDLEY_NO_RETURN __attribute__((__noreturn__))</span></div>
|
||
<div class="line"><a name="l00916"></a><span class="lineno"> 916</span> <span class="preprocessor">#elif defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L</span></div>
|
||
<div class="line"><a name="l00917"></a><span class="lineno"> 917</span> <span class="preprocessor"> #define JSON_HEDLEY_NO_RETURN _Noreturn</span></div>
|
||
<div class="line"><a name="l00918"></a><span class="lineno"> 918</span> <span class="preprocessor">#elif defined(__cplusplus) && (__cplusplus >= 201103L)</span></div>
|
||
<div class="line"><a name="l00919"></a><span class="lineno"> 919</span> <span class="preprocessor"> #define JSON_HEDLEY_NO_RETURN JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[noreturn]])</span></div>
|
||
<div class="line"><a name="l00920"></a><span class="lineno"> 920</span> <span class="preprocessor">#elif \</span></div>
|
||
<div class="line"><a name="l00921"></a><span class="lineno"> 921</span> <span class="preprocessor"> JSON_HEDLEY_HAS_ATTRIBUTE(noreturn) || \</span></div>
|
||
<div class="line"><a name="l00922"></a><span class="lineno"> 922</span> <span class="preprocessor"> JSON_HEDLEY_GCC_VERSION_CHECK(3,2,0) || \</span></div>
|
||
<div class="line"><a name="l00923"></a><span class="lineno"> 923</span> <span class="preprocessor"> JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \</span></div>
|
||
<div class="line"><a name="l00924"></a><span class="lineno"> 924</span> <span class="preprocessor"> JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \</span></div>
|
||
<div class="line"><a name="l00925"></a><span class="lineno"> 925</span> <span class="preprocessor"> JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \</span></div>
|
||
<div class="line"><a name="l00926"></a><span class="lineno"> 926</span> <span class="preprocessor"> JSON_HEDLEY_TI_VERSION_CHECK(18,0,0) || \</span></div>
|
||
<div class="line"><a name="l00927"></a><span class="lineno"> 927</span> <span class="preprocessor"> (JSON_HEDLEY_TI_VERSION_CHECK(17,3,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__))</span></div>
|
||
<div class="line"><a name="l00928"></a><span class="lineno"> 928</span> <span class="preprocessor"> #define JSON_HEDLEY_NO_RETURN __attribute__((__noreturn__))</span></div>
|
||
<div class="line"><a name="l00929"></a><span class="lineno"> 929</span> <span class="preprocessor">#elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,10,0)</span></div>
|
||
<div class="line"><a name="l00930"></a><span class="lineno"> 930</span> <span class="preprocessor"> #define JSON_HEDLEY_NO_RETURN _Pragma("does_not_return")</span></div>
|
||
<div class="line"><a name="l00931"></a><span class="lineno"> 931</span> <span class="preprocessor">#elif JSON_HEDLEY_MSVC_VERSION_CHECK(13,10,0)</span></div>
|
||
<div class="line"><a name="l00932"></a><span class="lineno"> 932</span> <span class="preprocessor"> #define JSON_HEDLEY_NO_RETURN __declspec(noreturn)</span></div>
|
||
<div class="line"><a name="l00933"></a><span class="lineno"> 933</span> <span class="preprocessor">#elif JSON_HEDLEY_TI_VERSION_CHECK(6,0,0) && defined(__cplusplus)</span></div>
|
||
<div class="line"><a name="l00934"></a><span class="lineno"> 934</span> <span class="preprocessor"> #define JSON_HEDLEY_NO_RETURN _Pragma("FUNC_NEVER_RETURNS;")</span></div>
|
||
<div class="line"><a name="l00935"></a><span class="lineno"> 935</span> <span class="preprocessor">#elif JSON_HEDLEY_COMPCERT_VERSION_CHECK(3,2,0)</span></div>
|
||
<div class="line"><a name="l00936"></a><span class="lineno"> 936</span> <span class="preprocessor"> #define JSON_HEDLEY_NO_RETURN __attribute((noreturn))</span></div>
|
||
<div class="line"><a name="l00937"></a><span class="lineno"> 937</span> <span class="preprocessor">#elif JSON_HEDLEY_PELLES_VERSION_CHECK(9,0,0)</span></div>
|
||
<div class="line"><a name="l00938"></a><span class="lineno"> 938</span> <span class="preprocessor"> #define JSON_HEDLEY_NO_RETURN __declspec(noreturn)</span></div>
|
||
<div class="line"><a name="l00939"></a><span class="lineno"> 939</span> <span class="preprocessor">#else</span></div>
|
||
<div class="line"><a name="l00940"></a><span class="lineno"><a class="line" href="json_8hpp.html#a82747e7a15c5cecf1223dbc4eb7a1c6b"> 940</a></span> <span class="preprocessor"> #define JSON_HEDLEY_NO_RETURN</span></div>
|
||
<div class="line"><a name="l00941"></a><span class="lineno"> 941</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00942"></a><span class="lineno"> 942</span>  </div>
|
||
<div class="line"><a name="l00943"></a><span class="lineno"> 943</span> <span class="preprocessor">#if defined(JSON_HEDLEY_NO_ESCAPE)</span></div>
|
||
<div class="line"><a name="l00944"></a><span class="lineno"> 944</span> <span class="preprocessor"> #undef JSON_HEDLEY_NO_ESCAPE</span></div>
|
||
<div class="line"><a name="l00945"></a><span class="lineno"> 945</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00946"></a><span class="lineno"> 946</span> <span class="preprocessor">#if JSON_HEDLEY_HAS_ATTRIBUTE(noescape)</span></div>
|
||
<div class="line"><a name="l00947"></a><span class="lineno"> 947</span> <span class="preprocessor"> #define JSON_HEDLEY_NO_ESCAPE __attribute__((__noescape__))</span></div>
|
||
<div class="line"><a name="l00948"></a><span class="lineno"> 948</span> <span class="preprocessor">#else</span></div>
|
||
<div class="line"><a name="l00949"></a><span class="lineno"><a class="line" href="json_8hpp.html#a9a8fe3009f53d14ac4b48600a2606fc1"> 949</a></span> <span class="preprocessor"> #define JSON_HEDLEY_NO_ESCAPE</span></div>
|
||
<div class="line"><a name="l00950"></a><span class="lineno"> 950</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00951"></a><span class="lineno"> 951</span>  </div>
|
||
<div class="line"><a name="l00952"></a><span class="lineno"> 952</span> <span class="preprocessor">#if defined(JSON_HEDLEY_UNREACHABLE)</span></div>
|
||
<div class="line"><a name="l00953"></a><span class="lineno"> 953</span> <span class="preprocessor"> #undef JSON_HEDLEY_UNREACHABLE</span></div>
|
||
<div class="line"><a name="l00954"></a><span class="lineno"> 954</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00955"></a><span class="lineno"> 955</span> <span class="preprocessor">#if defined(JSON_HEDLEY_UNREACHABLE_RETURN)</span></div>
|
||
<div class="line"><a name="l00956"></a><span class="lineno"> 956</span> <span class="preprocessor"> #undef JSON_HEDLEY_UNREACHABLE_RETURN</span></div>
|
||
<div class="line"><a name="l00957"></a><span class="lineno"> 957</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00958"></a><span class="lineno"> 958</span> <span class="preprocessor">#if \</span></div>
|
||
<div class="line"><a name="l00959"></a><span class="lineno"> 959</span> <span class="preprocessor"> (JSON_HEDLEY_HAS_BUILTIN(__builtin_unreachable) && (!defined(JSON_HEDLEY_ARM_VERSION))) || \</span></div>
|
||
<div class="line"><a name="l00960"></a><span class="lineno"> 960</span> <span class="preprocessor"> JSON_HEDLEY_GCC_VERSION_CHECK(4,5,0) || \</span></div>
|
||
<div class="line"><a name="l00961"></a><span class="lineno"> 961</span> <span class="preprocessor"> JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \</span></div>
|
||
<div class="line"><a name="l00962"></a><span class="lineno"> 962</span> <span class="preprocessor"> JSON_HEDLEY_IBM_VERSION_CHECK(13,1,5)</span></div>
|
||
<div class="line"><a name="l00963"></a><span class="lineno"> 963</span> <span class="preprocessor"> #define JSON_HEDLEY_UNREACHABLE() __builtin_unreachable()</span></div>
|
||
<div class="line"><a name="l00964"></a><span class="lineno"> 964</span> <span class="preprocessor">#elif JSON_HEDLEY_MSVC_VERSION_CHECK(13,10,0)</span></div>
|
||
<div class="line"><a name="l00965"></a><span class="lineno"> 965</span> <span class="preprocessor"> #define JSON_HEDLEY_UNREACHABLE() __assume(0)</span></div>
|
||
<div class="line"><a name="l00966"></a><span class="lineno"> 966</span> <span class="preprocessor">#elif JSON_HEDLEY_TI_VERSION_CHECK(6,0,0)</span></div>
|
||
<div class="line"><a name="l00967"></a><span class="lineno"> 967</span> <span class="preprocessor"> #if defined(__cplusplus)</span></div>
|
||
<div class="line"><a name="l00968"></a><span class="lineno"> 968</span> <span class="preprocessor"> #define JSON_HEDLEY_UNREACHABLE() std::_nassert(0)</span></div>
|
||
<div class="line"><a name="l00969"></a><span class="lineno"> 969</span> <span class="preprocessor"> #else</span></div>
|
||
<div class="line"><a name="l00970"></a><span class="lineno"> 970</span> <span class="preprocessor"> #define JSON_HEDLEY_UNREACHABLE() _nassert(0)</span></div>
|
||
<div class="line"><a name="l00971"></a><span class="lineno"> 971</span> <span class="preprocessor"> #endif</span></div>
|
||
<div class="line"><a name="l00972"></a><span class="lineno"> 972</span> <span class="preprocessor"> #define JSON_HEDLEY_UNREACHABLE_RETURN(value) return value</span></div>
|
||
<div class="line"><a name="l00973"></a><span class="lineno"> 973</span> <span class="preprocessor">#elif defined(EXIT_FAILURE)</span></div>
|
||
<div class="line"><a name="l00974"></a><span class="lineno"> 974</span> <span class="preprocessor"> #define JSON_HEDLEY_UNREACHABLE() abort()</span></div>
|
||
<div class="line"><a name="l00975"></a><span class="lineno"> 975</span> <span class="preprocessor">#else</span></div>
|
||
<div class="line"><a name="l00976"></a><span class="lineno"><a class="line" href="json_8hpp.html#a2d5705bd7bd14855c3ef5b98305c5fb4"> 976</a></span> <span class="preprocessor"> #define JSON_HEDLEY_UNREACHABLE()</span></div>
|
||
<div class="line"><a name="l00977"></a><span class="lineno"><a class="line" href="json_8hpp.html#a06401b258ef03263f2aec48029dc8b03"> 977</a></span> <span class="preprocessor"> #define JSON_HEDLEY_UNREACHABLE_RETURN(value) return value</span></div>
|
||
<div class="line"><a name="l00978"></a><span class="lineno"> 978</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00979"></a><span class="lineno"> 979</span> <span class="preprocessor">#if !defined(JSON_HEDLEY_UNREACHABLE_RETURN)</span></div>
|
||
<div class="line"><a name="l00980"></a><span class="lineno"> 980</span> <span class="preprocessor"> #define JSON_HEDLEY_UNREACHABLE_RETURN(value) JSON_HEDLEY_UNREACHABLE()</span></div>
|
||
<div class="line"><a name="l00981"></a><span class="lineno"> 981</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00982"></a><span class="lineno"> 982</span>  </div>
|
||
<div class="line"><a name="l00983"></a><span class="lineno"> 983</span> <span class="preprocessor">#if defined(JSON_HEDLEY_ASSUME)</span></div>
|
||
<div class="line"><a name="l00984"></a><span class="lineno"> 984</span> <span class="preprocessor"> #undef JSON_HEDLEY_ASSUME</span></div>
|
||
<div class="line"><a name="l00985"></a><span class="lineno"> 985</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l00986"></a><span class="lineno"> 986</span> <span class="preprocessor">#if \</span></div>
|
||
<div class="line"><a name="l00987"></a><span class="lineno"> 987</span> <span class="preprocessor"> JSON_HEDLEY_MSVC_VERSION_CHECK(13,10,0) || \</span></div>
|
||
<div class="line"><a name="l00988"></a><span class="lineno"> 988</span> <span class="preprocessor"> JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0)</span></div>
|
||
<div class="line"><a name="l00989"></a><span class="lineno"> 989</span> <span class="preprocessor"> #define JSON_HEDLEY_ASSUME(expr) __assume(expr)</span></div>
|
||
<div class="line"><a name="l00990"></a><span class="lineno"> 990</span> <span class="preprocessor">#elif JSON_HEDLEY_HAS_BUILTIN(__builtin_assume)</span></div>
|
||
<div class="line"><a name="l00991"></a><span class="lineno"> 991</span> <span class="preprocessor"> #define JSON_HEDLEY_ASSUME(expr) __builtin_assume(expr)</span></div>
|
||
<div class="line"><a name="l00992"></a><span class="lineno"> 992</span> <span class="preprocessor">#elif JSON_HEDLEY_TI_VERSION_CHECK(6,0,0)</span></div>
|
||
<div class="line"><a name="l00993"></a><span class="lineno"> 993</span> <span class="preprocessor"> #if defined(__cplusplus)</span></div>
|
||
<div class="line"><a name="l00994"></a><span class="lineno"> 994</span> <span class="preprocessor"> #define JSON_HEDLEY_ASSUME(expr) std::_nassert(expr)</span></div>
|
||
<div class="line"><a name="l00995"></a><span class="lineno"> 995</span> <span class="preprocessor"> #else</span></div>
|
||
<div class="line"><a name="l00996"></a><span class="lineno"> 996</span> <span class="preprocessor"> #define JSON_HEDLEY_ASSUME(expr) _nassert(expr)</span></div>
|
||
<div class="line"><a name="l00997"></a><span class="lineno"> 997</span> <span class="preprocessor"> #endif</span></div>
|
||
<div class="line"><a name="l00998"></a><span class="lineno"> 998</span> <span class="preprocessor">#elif \</span></div>
|
||
<div class="line"><a name="l00999"></a><span class="lineno"> 999</span> <span class="preprocessor"> (JSON_HEDLEY_HAS_BUILTIN(__builtin_unreachable) && !defined(JSON_HEDLEY_ARM_VERSION)) || \</span></div>
|
||
<div class="line"><a name="l01000"></a><span class="lineno"> 1000</span> <span class="preprocessor"> JSON_HEDLEY_GCC_VERSION_CHECK(4,5,0) || \</span></div>
|
||
<div class="line"><a name="l01001"></a><span class="lineno"> 1001</span> <span class="preprocessor"> JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \</span></div>
|
||
<div class="line"><a name="l01002"></a><span class="lineno"> 1002</span> <span class="preprocessor"> JSON_HEDLEY_IBM_VERSION_CHECK(13,1,5)</span></div>
|
||
<div class="line"><a name="l01003"></a><span class="lineno"> 1003</span> <span class="preprocessor"> #define JSON_HEDLEY_ASSUME(expr) ((void) ((expr) ? 1 : (__builtin_unreachable(), 1)))</span></div>
|
||
<div class="line"><a name="l01004"></a><span class="lineno"> 1004</span> <span class="preprocessor">#else</span></div>
|
||
<div class="line"><a name="l01005"></a><span class="lineno"><a class="line" href="json_8hpp.html#a70d7244eea52c8bb5716545e54050bb5"> 1005</a></span> <span class="preprocessor"> #define JSON_HEDLEY_ASSUME(expr) ((void) (expr))</span></div>
|
||
<div class="line"><a name="l01006"></a><span class="lineno"> 1006</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>  </div>
|
||
<div class="line"><a name="l01008"></a><span class="lineno"> 1008</span> <a class="code" href="json_8hpp.html#a1850f57fcda72becebc7033a2e10e77b">JSON_HEDLEY_DIAGNOSTIC_PUSH</a></div>
|
||
<div class="line"><a name="l01009"></a><span class="lineno"> 1009</span> <span class="preprocessor">#if JSON_HEDLEY_HAS_WARNING("-Wpedantic")</span></div>
|
||
<div class="line"><a name="l01010"></a><span class="lineno"> 1010</span> <span class="preprocessor"> #pragma clang diagnostic ignored "-Wpedantic"</span></div>
|
||
<div class="line"><a name="l01011"></a><span class="lineno"> 1011</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l01012"></a><span class="lineno"> 1012</span> <span class="preprocessor">#if JSON_HEDLEY_HAS_WARNING("-Wc++98-compat-pedantic") && defined(__cplusplus)</span></div>
|
||
<div class="line"><a name="l01013"></a><span class="lineno"> 1013</span> <span class="preprocessor"> #pragma clang diagnostic ignored "-Wc++98-compat-pedantic"</span></div>
|
||
<div class="line"><a name="l01014"></a><span class="lineno"> 1014</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l01015"></a><span class="lineno"> 1015</span> <span class="preprocessor">#if JSON_HEDLEY_GCC_HAS_WARNING("-Wvariadic-macros",4,0,0)</span></div>
|
||
<div class="line"><a name="l01016"></a><span class="lineno"> 1016</span> <span class="preprocessor"> #if defined(__clang__)</span></div>
|
||
<div class="line"><a name="l01017"></a><span class="lineno"> 1017</span> <span class="preprocessor"> #pragma clang diagnostic ignored "-Wvariadic-macros"</span></div>
|
||
<div class="line"><a name="l01018"></a><span class="lineno"> 1018</span> <span class="preprocessor"> #elif defined(JSON_HEDLEY_GCC_VERSION)</span></div>
|
||
<div class="line"><a name="l01019"></a><span class="lineno"> 1019</span> <span class="preprocessor"> #pragma GCC diagnostic ignored "-Wvariadic-macros"</span></div>
|
||
<div class="line"><a name="l01020"></a><span class="lineno"> 1020</span> <span class="preprocessor"> #endif</span></div>
|
||
<div class="line"><a name="l01021"></a><span class="lineno"> 1021</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l01022"></a><span class="lineno"> 1022</span> <span class="preprocessor">#if defined(JSON_HEDLEY_NON_NULL)</span></div>
|
||
<div class="line"><a name="l01023"></a><span class="lineno"> 1023</span> <span class="preprocessor"> #undef JSON_HEDLEY_NON_NULL</span></div>
|
||
<div class="line"><a name="l01024"></a><span class="lineno"> 1024</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l01025"></a><span class="lineno"> 1025</span> <span class="preprocessor">#if \</span></div>
|
||
<div class="line"><a name="l01026"></a><span class="lineno"> 1026</span> <span class="preprocessor"> JSON_HEDLEY_HAS_ATTRIBUTE(nonnull) || \</span></div>
|
||
<div class="line"><a name="l01027"></a><span class="lineno"> 1027</span> <span class="preprocessor"> JSON_HEDLEY_GCC_VERSION_CHECK(3,3,0) || \</span></div>
|
||
<div class="line"><a name="l01028"></a><span class="lineno"> 1028</span> <span class="preprocessor"> JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \</span></div>
|
||
<div class="line"><a name="l01029"></a><span class="lineno"> 1029</span> <span class="preprocessor"> JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0)</span></div>
|
||
<div class="line"><a name="l01030"></a><span class="lineno"> 1030</span> <span class="preprocessor"> #define JSON_HEDLEY_NON_NULL(...) __attribute__((__nonnull__(__VA_ARGS__)))</span></div>
|
||
<div class="line"><a name="l01031"></a><span class="lineno"> 1031</span> <span class="preprocessor">#else</span></div>
|
||
<div class="line"><a name="l01032"></a><span class="lineno"><a class="line" href="json_8hpp.html#a5338981b5ad9027c9e54b1c5597f4344"> 1032</a></span> <span class="preprocessor"> #define JSON_HEDLEY_NON_NULL(...)</span></div>
|
||
<div class="line"><a name="l01033"></a><span class="lineno"> 1033</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l01034"></a><span class="lineno"> 1034</span> <a class="code" href="json_8hpp.html#aeedd50a52e1ea565ceab84bb596ec07f">JSON_HEDLEY_DIAGNOSTIC_POP</a></div>
|
||
<div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>  </div>
|
||
<div class="line"><a name="l01036"></a><span class="lineno"> 1036</span> <span class="preprocessor">#if defined(JSON_HEDLEY_PRINTF_FORMAT)</span></div>
|
||
<div class="line"><a name="l01037"></a><span class="lineno"> 1037</span> <span class="preprocessor"> #undef JSON_HEDLEY_PRINTF_FORMAT</span></div>
|
||
<div class="line"><a name="l01038"></a><span class="lineno"> 1038</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l01039"></a><span class="lineno"> 1039</span> <span class="preprocessor">#if defined(__MINGW32__) && JSON_HEDLEY_GCC_HAS_ATTRIBUTE(format,4,4,0) && !defined(__USE_MINGW_ANSI_STDIO)</span></div>
|
||
<div class="line"><a name="l01040"></a><span class="lineno"> 1040</span> <span class="preprocessor"> #define JSON_HEDLEY_PRINTF_FORMAT(string_idx,first_to_check) __attribute__((__format__(ms_printf, string_idx, first_to_check)))</span></div>
|
||
<div class="line"><a name="l01041"></a><span class="lineno"> 1041</span> <span class="preprocessor">#elif defined(__MINGW32__) && JSON_HEDLEY_GCC_HAS_ATTRIBUTE(format,4,4,0) && defined(__USE_MINGW_ANSI_STDIO)</span></div>
|
||
<div class="line"><a name="l01042"></a><span class="lineno"> 1042</span> <span class="preprocessor"> #define JSON_HEDLEY_PRINTF_FORMAT(string_idx,first_to_check) __attribute__((__format__(gnu_printf, string_idx, first_to_check)))</span></div>
|
||
<div class="line"><a name="l01043"></a><span class="lineno"> 1043</span> <span class="preprocessor">#elif \</span></div>
|
||
<div class="line"><a name="l01044"></a><span class="lineno"> 1044</span> <span class="preprocessor"> JSON_HEDLEY_HAS_ATTRIBUTE(format) || \</span></div>
|
||
<div class="line"><a name="l01045"></a><span class="lineno"> 1045</span> <span class="preprocessor"> JSON_HEDLEY_GCC_VERSION_CHECK(3,1,0) || \</span></div>
|
||
<div class="line"><a name="l01046"></a><span class="lineno"> 1046</span> <span class="preprocessor"> JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \</span></div>
|
||
<div class="line"><a name="l01047"></a><span class="lineno"> 1047</span> <span class="preprocessor"> JSON_HEDLEY_ARM_VERSION_CHECK(5,6,0) || \</span></div>
|
||
<div class="line"><a name="l01048"></a><span class="lineno"> 1048</span> <span class="preprocessor"> JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \</span></div>
|
||
<div class="line"><a name="l01049"></a><span class="lineno"> 1049</span> <span class="preprocessor"> JSON_HEDLEY_TI_VERSION_CHECK(8,0,0) || \</span></div>
|
||
<div class="line"><a name="l01050"></a><span class="lineno"> 1050</span> <span class="preprocessor"> (JSON_HEDLEY_TI_VERSION_CHECK(7,3,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__))</span></div>
|
||
<div class="line"><a name="l01051"></a><span class="lineno"> 1051</span> <span class="preprocessor"> #define JSON_HEDLEY_PRINTF_FORMAT(string_idx,first_to_check) __attribute__((__format__(__printf__, string_idx, first_to_check)))</span></div>
|
||
<div class="line"><a name="l01052"></a><span class="lineno"> 1052</span> <span class="preprocessor">#elif JSON_HEDLEY_PELLES_VERSION_CHECK(6,0,0)</span></div>
|
||
<div class="line"><a name="l01053"></a><span class="lineno"> 1053</span> <span class="preprocessor"> #define JSON_HEDLEY_PRINTF_FORMAT(string_idx,first_to_check) __declspec(vaformat(printf,string_idx,first_to_check))</span></div>
|
||
<div class="line"><a name="l01054"></a><span class="lineno"> 1054</span> <span class="preprocessor">#else</span></div>
|
||
<div class="line"><a name="l01055"></a><span class="lineno"><a class="line" href="json_8hpp.html#a2e17831d69746d3ee8ad4796e96975a2"> 1055</a></span> <span class="preprocessor"> #define JSON_HEDLEY_PRINTF_FORMAT(string_idx,first_to_check)</span></div>
|
||
<div class="line"><a name="l01056"></a><span class="lineno"> 1056</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>  </div>
|
||
<div class="line"><a name="l01058"></a><span class="lineno"> 1058</span> <span class="preprocessor">#if defined(JSON_HEDLEY_CONSTEXPR)</span></div>
|
||
<div class="line"><a name="l01059"></a><span class="lineno"> 1059</span> <span class="preprocessor"> #undef JSON_HEDLEY_CONSTEXPR</span></div>
|
||
<div class="line"><a name="l01060"></a><span class="lineno"> 1060</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l01061"></a><span class="lineno"> 1061</span> <span class="preprocessor">#if defined(__cplusplus)</span></div>
|
||
<div class="line"><a name="l01062"></a><span class="lineno"> 1062</span> <span class="preprocessor"> #if __cplusplus >= 201103L</span></div>
|
||
<div class="line"><a name="l01063"></a><span class="lineno"> 1063</span> <span class="preprocessor"> #define JSON_HEDLEY_CONSTEXPR JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(constexpr)</span></div>
|
||
<div class="line"><a name="l01064"></a><span class="lineno"> 1064</span> <span class="preprocessor"> #endif</span></div>
|
||
<div class="line"><a name="l01065"></a><span class="lineno"> 1065</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l01066"></a><span class="lineno"> 1066</span> <span class="preprocessor">#if !defined(JSON_HEDLEY_CONSTEXPR)</span></div>
|
||
<div class="line"><a name="l01067"></a><span class="lineno"><a class="line" href="json_8hpp.html#ac317a48664e4099c22d33d8132bef97e"> 1067</a></span> <span class="preprocessor"> #define JSON_HEDLEY_CONSTEXPR</span></div>
|
||
<div class="line"><a name="l01068"></a><span class="lineno"> 1068</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>  </div>
|
||
<div class="line"><a name="l01070"></a><span class="lineno"> 1070</span> <span class="preprocessor">#if defined(JSON_HEDLEY_PREDICT)</span></div>
|
||
<div class="line"><a name="l01071"></a><span class="lineno"> 1071</span> <span class="preprocessor"> #undef JSON_HEDLEY_PREDICT</span></div>
|
||
<div class="line"><a name="l01072"></a><span class="lineno"> 1072</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l01073"></a><span class="lineno"> 1073</span> <span class="preprocessor">#if defined(JSON_HEDLEY_LIKELY)</span></div>
|
||
<div class="line"><a name="l01074"></a><span class="lineno"> 1074</span> <span class="preprocessor"> #undef JSON_HEDLEY_LIKELY</span></div>
|
||
<div class="line"><a name="l01075"></a><span class="lineno"> 1075</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l01076"></a><span class="lineno"> 1076</span> <span class="preprocessor">#if defined(JSON_HEDLEY_UNLIKELY)</span></div>
|
||
<div class="line"><a name="l01077"></a><span class="lineno"> 1077</span> <span class="preprocessor"> #undef JSON_HEDLEY_UNLIKELY</span></div>
|
||
<div class="line"><a name="l01078"></a><span class="lineno"> 1078</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l01079"></a><span class="lineno"> 1079</span> <span class="preprocessor">#if defined(JSON_HEDLEY_UNPREDICTABLE)</span></div>
|
||
<div class="line"><a name="l01080"></a><span class="lineno"> 1080</span> <span class="preprocessor"> #undef JSON_HEDLEY_UNPREDICTABLE</span></div>
|
||
<div class="line"><a name="l01081"></a><span class="lineno"> 1081</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l01082"></a><span class="lineno"> 1082</span> <span class="preprocessor">#if JSON_HEDLEY_HAS_BUILTIN(__builtin_unpredictable)</span></div>
|
||
<div class="line"><a name="l01083"></a><span class="lineno"> 1083</span> <span class="preprocessor"> #define JSON_HEDLEY_UNPREDICTABLE(expr) __builtin_unpredictable(!!(expr))</span></div>
|
||
<div class="line"><a name="l01084"></a><span class="lineno"> 1084</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l01085"></a><span class="lineno"> 1085</span> <span class="preprocessor">#if \</span></div>
|
||
<div class="line"><a name="l01086"></a><span class="lineno"> 1086</span> <span class="preprocessor"> JSON_HEDLEY_HAS_BUILTIN(__builtin_expect_with_probability) || \</span></div>
|
||
<div class="line"><a name="l01087"></a><span class="lineno"> 1087</span> <span class="preprocessor"> JSON_HEDLEY_GCC_VERSION_CHECK(9,0,0)</span></div>
|
||
<div class="line"><a name="l01088"></a><span class="lineno"> 1088</span> <span class="preprocessor"># define JSON_HEDLEY_PREDICT(expr, value, probability) __builtin_expect_with_probability(expr, value, probability)</span></div>
|
||
<div class="line"><a name="l01089"></a><span class="lineno"> 1089</span> <span class="preprocessor"># define JSON_HEDLEY_PREDICT_TRUE(expr, probability) __builtin_expect_with_probability(!!(expr), 1, probability)</span></div>
|
||
<div class="line"><a name="l01090"></a><span class="lineno"> 1090</span> <span class="preprocessor"># define JSON_HEDLEY_PREDICT_FALSE(expr, probability) __builtin_expect_with_probability(!!(expr), 0, probability)</span></div>
|
||
<div class="line"><a name="l01091"></a><span class="lineno"> 1091</span> <span class="preprocessor"># define JSON_HEDLEY_LIKELY(expr) __builtin_expect(!!(expr), 1)</span></div>
|
||
<div class="line"><a name="l01092"></a><span class="lineno"> 1092</span> <span class="preprocessor"># define JSON_HEDLEY_UNLIKELY(expr) __builtin_expect(!!(expr), 0)</span></div>
|
||
<div class="line"><a name="l01093"></a><span class="lineno"> 1093</span> <span class="preprocessor">#if !defined(JSON_HEDLEY_BUILTIN_UNPREDICTABLE)</span></div>
|
||
<div class="line"><a name="l01094"></a><span class="lineno"> 1094</span> <span class="preprocessor"> #define JSON_HEDLEY_BUILTIN_UNPREDICTABLE(expr) __builtin_expect_with_probability(!!(expr), 1, 0.5)</span></div>
|
||
<div class="line"><a name="l01095"></a><span class="lineno"> 1095</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l01096"></a><span class="lineno"> 1096</span> <span class="preprocessor">#elif \</span></div>
|
||
<div class="line"><a name="l01097"></a><span class="lineno"> 1097</span> <span class="preprocessor"> JSON_HEDLEY_HAS_BUILTIN(__builtin_expect) || \</span></div>
|
||
<div class="line"><a name="l01098"></a><span class="lineno"> 1098</span> <span class="preprocessor"> JSON_HEDLEY_GCC_VERSION_CHECK(3,0,0) || \</span></div>
|
||
<div class="line"><a name="l01099"></a><span class="lineno"> 1099</span> <span class="preprocessor"> JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \</span></div>
|
||
<div class="line"><a name="l01100"></a><span class="lineno"> 1100</span> <span class="preprocessor"> (JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,15,0) && defined(__cplusplus)) || \</span></div>
|
||
<div class="line"><a name="l01101"></a><span class="lineno"> 1101</span> <span class="preprocessor"> JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \</span></div>
|
||
<div class="line"><a name="l01102"></a><span class="lineno"> 1102</span> <span class="preprocessor"> JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \</span></div>
|
||
<div class="line"><a name="l01103"></a><span class="lineno"> 1103</span> <span class="preprocessor"> JSON_HEDLEY_TI_VERSION_CHECK(6,1,0) || \</span></div>
|
||
<div class="line"><a name="l01104"></a><span class="lineno"> 1104</span> <span class="preprocessor"> JSON_HEDLEY_TINYC_VERSION_CHECK(0,9,27)</span></div>
|
||
<div class="line"><a name="l01105"></a><span class="lineno"> 1105</span> <span class="preprocessor"># define JSON_HEDLEY_PREDICT(expr, expected, probability) \</span></div>
|
||
<div class="line"><a name="l01106"></a><span class="lineno"> 1106</span> <span class="preprocessor"> (((probability) >= 0.9) ? __builtin_expect(!!(expr), (expected)) : (((void) (expected)), !!(expr)))</span></div>
|
||
<div class="line"><a name="l01107"></a><span class="lineno"> 1107</span> <span class="preprocessor"># define JSON_HEDLEY_PREDICT_TRUE(expr, probability) \</span></div>
|
||
<div class="line"><a name="l01108"></a><span class="lineno"> 1108</span> <span class="preprocessor"> (__extension__ ({ \</span></div>
|
||
<div class="line"><a name="l01109"></a><span class="lineno"> 1109</span> <span class="preprocessor"> JSON_HEDLEY_CONSTEXPR double hedley_probability_ = (probability); \</span></div>
|
||
<div class="line"><a name="l01110"></a><span class="lineno"> 1110</span> <span class="preprocessor"> ((hedley_probability_ >= 0.9) ? __builtin_expect(!!(expr), 1) : ((hedley_probability_ <= 0.1) ? __builtin_expect(!!(expr), 0) : !!(expr))); \</span></div>
|
||
<div class="line"><a name="l01111"></a><span class="lineno"> 1111</span> <span class="preprocessor"> }))</span></div>
|
||
<div class="line"><a name="l01112"></a><span class="lineno"> 1112</span> <span class="preprocessor"># define JSON_HEDLEY_PREDICT_FALSE(expr, probability) \</span></div>
|
||
<div class="line"><a name="l01113"></a><span class="lineno"> 1113</span> <span class="preprocessor"> (__extension__ ({ \</span></div>
|
||
<div class="line"><a name="l01114"></a><span class="lineno"> 1114</span> <span class="preprocessor"> JSON_HEDLEY_CONSTEXPR double hedley_probability_ = (probability); \</span></div>
|
||
<div class="line"><a name="l01115"></a><span class="lineno"> 1115</span> <span class="preprocessor"> ((hedley_probability_ >= 0.9) ? __builtin_expect(!!(expr), 0) : ((hedley_probability_ <= 0.1) ? __builtin_expect(!!(expr), 1) : !!(expr))); \</span></div>
|
||
<div class="line"><a name="l01116"></a><span class="lineno"> 1116</span> <span class="preprocessor"> }))</span></div>
|
||
<div class="line"><a name="l01117"></a><span class="lineno"> 1117</span> <span class="preprocessor"># define JSON_HEDLEY_LIKELY(expr) __builtin_expect(!!(expr), 1)</span></div>
|
||
<div class="line"><a name="l01118"></a><span class="lineno"> 1118</span> <span class="preprocessor"># define JSON_HEDLEY_UNLIKELY(expr) __builtin_expect(!!(expr), 0)</span></div>
|
||
<div class="line"><a name="l01119"></a><span class="lineno"> 1119</span> <span class="preprocessor">#else</span></div>
|
||
<div class="line"><a name="l01120"></a><span class="lineno"><a class="line" href="json_8hpp.html#a34846d0797b38c1971baee08736dae69"> 1120</a></span> <span class="preprocessor"># define JSON_HEDLEY_PREDICT(expr, expected, probability) (((void) (expected)), !!(expr))</span></div>
|
||
<div class="line"><a name="l01121"></a><span class="lineno"><a class="line" href="json_8hpp.html#adb569cea2c5a17c33734f27e8fef2473"> 1121</a></span> <span class="preprocessor"># define JSON_HEDLEY_PREDICT_TRUE(expr, probability) (!!(expr))</span></div>
|
||
<div class="line"><a name="l01122"></a><span class="lineno"><a class="line" href="json_8hpp.html#aec5597506417346f8f1c4d1f08c7719f"> 1122</a></span> <span class="preprocessor"># define JSON_HEDLEY_PREDICT_FALSE(expr, probability) (!!(expr))</span></div>
|
||
<div class="line"><a name="l01123"></a><span class="lineno"><a class="line" href="json_8hpp.html#a355f2770653ff7bdd5c74b204b5a3ad0"> 1123</a></span> <span class="preprocessor"># define JSON_HEDLEY_LIKELY(expr) (!!(expr))</span></div>
|
||
<div class="line"><a name="l01124"></a><span class="lineno"><a class="line" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd"> 1124</a></span> <span class="preprocessor"># define JSON_HEDLEY_UNLIKELY(expr) (!!(expr))</span></div>
|
||
<div class="line"><a name="l01125"></a><span class="lineno"> 1125</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l01126"></a><span class="lineno"> 1126</span> <span class="preprocessor">#if !defined(JSON_HEDLEY_UNPREDICTABLE)</span></div>
|
||
<div class="line"><a name="l01127"></a><span class="lineno"><a class="line" href="json_8hpp.html#a26967eb7395562701e450cec045dda15"> 1127</a></span> <span class="preprocessor"> #define JSON_HEDLEY_UNPREDICTABLE(expr) JSON_HEDLEY_PREDICT(expr, 1, 0.5)</span></div>
|
||
<div class="line"><a name="l01128"></a><span class="lineno"> 1128</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>  </div>
|
||
<div class="line"><a name="l01130"></a><span class="lineno"> 1130</span> <span class="preprocessor">#if defined(JSON_HEDLEY_MALLOC)</span></div>
|
||
<div class="line"><a name="l01131"></a><span class="lineno"> 1131</span> <span class="preprocessor"> #undef JSON_HEDLEY_MALLOC</span></div>
|
||
<div class="line"><a name="l01132"></a><span class="lineno"> 1132</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l01133"></a><span class="lineno"> 1133</span> <span class="preprocessor">#if \</span></div>
|
||
<div class="line"><a name="l01134"></a><span class="lineno"> 1134</span> <span class="preprocessor"> JSON_HEDLEY_HAS_ATTRIBUTE(malloc) || \</span></div>
|
||
<div class="line"><a name="l01135"></a><span class="lineno"> 1135</span> <span class="preprocessor"> JSON_HEDLEY_GCC_VERSION_CHECK(3,1,0) || \</span></div>
|
||
<div class="line"><a name="l01136"></a><span class="lineno"> 1136</span> <span class="preprocessor"> JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \</span></div>
|
||
<div class="line"><a name="l01137"></a><span class="lineno"> 1137</span> <span class="preprocessor"> JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \</span></div>
|
||
<div class="line"><a name="l01138"></a><span class="lineno"> 1138</span> <span class="preprocessor"> JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \</span></div>
|
||
<div class="line"><a name="l01139"></a><span class="lineno"> 1139</span> <span class="preprocessor"> JSON_HEDLEY_IBM_VERSION_CHECK(12,1,0) || \</span></div>
|
||
<div class="line"><a name="l01140"></a><span class="lineno"> 1140</span> <span class="preprocessor"> JSON_HEDLEY_TI_VERSION_CHECK(8,0,0) || \</span></div>
|
||
<div class="line"><a name="l01141"></a><span class="lineno"> 1141</span> <span class="preprocessor"> (JSON_HEDLEY_TI_VERSION_CHECK(7,3,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__))</span></div>
|
||
<div class="line"><a name="l01142"></a><span class="lineno"> 1142</span> <span class="preprocessor"> #define JSON_HEDLEY_MALLOC __attribute__((__malloc__))</span></div>
|
||
<div class="line"><a name="l01143"></a><span class="lineno"> 1143</span> <span class="preprocessor">#elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,10,0)</span></div>
|
||
<div class="line"><a name="l01144"></a><span class="lineno"> 1144</span> <span class="preprocessor"> #define JSON_HEDLEY_MALLOC _Pragma("returns_new_memory")</span></div>
|
||
<div class="line"><a name="l01145"></a><span class="lineno"> 1145</span> <span class="preprocessor">#elif JSON_HEDLEY_MSVC_VERSION_CHECK(14, 0, 0)</span></div>
|
||
<div class="line"><a name="l01146"></a><span class="lineno"> 1146</span> <span class="preprocessor"> #define JSON_HEDLEY_MALLOC __declspec(restrict)</span></div>
|
||
<div class="line"><a name="l01147"></a><span class="lineno"> 1147</span> <span class="preprocessor">#else</span></div>
|
||
<div class="line"><a name="l01148"></a><span class="lineno"><a class="line" href="json_8hpp.html#a521367b4e81907450a7ea0bf28028b01"> 1148</a></span> <span class="preprocessor"> #define JSON_HEDLEY_MALLOC</span></div>
|
||
<div class="line"><a name="l01149"></a><span class="lineno"> 1149</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>  </div>
|
||
<div class="line"><a name="l01151"></a><span class="lineno"> 1151</span> <span class="preprocessor">#if defined(JSON_HEDLEY_PURE)</span></div>
|
||
<div class="line"><a name="l01152"></a><span class="lineno"> 1152</span> <span class="preprocessor"> #undef JSON_HEDLEY_PURE</span></div>
|
||
<div class="line"><a name="l01153"></a><span class="lineno"> 1153</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l01154"></a><span class="lineno"> 1154</span> <span class="preprocessor">#if \</span></div>
|
||
<div class="line"><a name="l01155"></a><span class="lineno"> 1155</span> <span class="preprocessor"> JSON_HEDLEY_HAS_ATTRIBUTE(pure) || \</span></div>
|
||
<div class="line"><a name="l01156"></a><span class="lineno"> 1156</span> <span class="preprocessor"> JSON_HEDLEY_GCC_VERSION_CHECK(2,96,0) || \</span></div>
|
||
<div class="line"><a name="l01157"></a><span class="lineno"> 1157</span> <span class="preprocessor"> JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \</span></div>
|
||
<div class="line"><a name="l01158"></a><span class="lineno"> 1158</span> <span class="preprocessor"> JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \</span></div>
|
||
<div class="line"><a name="l01159"></a><span class="lineno"> 1159</span> <span class="preprocessor"> JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \</span></div>
|
||
<div class="line"><a name="l01160"></a><span class="lineno"> 1160</span> <span class="preprocessor"> JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \</span></div>
|
||
<div class="line"><a name="l01161"></a><span class="lineno"> 1161</span> <span class="preprocessor"> JSON_HEDLEY_TI_VERSION_CHECK(8,0,0) || \</span></div>
|
||
<div class="line"><a name="l01162"></a><span class="lineno"> 1162</span> <span class="preprocessor"> (JSON_HEDLEY_TI_VERSION_CHECK(7,3,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \</span></div>
|
||
<div class="line"><a name="l01163"></a><span class="lineno"> 1163</span> <span class="preprocessor"> JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0)</span></div>
|
||
<div class="line"><a name="l01164"></a><span class="lineno"> 1164</span> <span class="preprocessor"> #define JSON_HEDLEY_PURE __attribute__((__pure__))</span></div>
|
||
<div class="line"><a name="l01165"></a><span class="lineno"> 1165</span> <span class="preprocessor">#elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,10,0)</span></div>
|
||
<div class="line"><a name="l01166"></a><span class="lineno"> 1166</span> <span class="preprocessor"> #define JSON_HEDLEY_PURE _Pragma("does_not_write_global_data")</span></div>
|
||
<div class="line"><a name="l01167"></a><span class="lineno"> 1167</span> <span class="preprocessor">#elif JSON_HEDLEY_TI_VERSION_CHECK(6,0,0) && defined(__cplusplus)</span></div>
|
||
<div class="line"><a name="l01168"></a><span class="lineno"> 1168</span> <span class="preprocessor"> #define JSON_HEDLEY_PURE _Pragma("FUNC_IS_PURE;")</span></div>
|
||
<div class="line"><a name="l01169"></a><span class="lineno"> 1169</span> <span class="preprocessor">#else</span></div>
|
||
<div class="line"><a name="l01170"></a><span class="lineno"><a class="line" href="json_8hpp.html#af5c84b7d1a43361bdc14cc6941078000"> 1170</a></span> <span class="preprocessor"> #define JSON_HEDLEY_PURE</span></div>
|
||
<div class="line"><a name="l01171"></a><span class="lineno"> 1171</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>  </div>
|
||
<div class="line"><a name="l01173"></a><span class="lineno"> 1173</span> <span class="preprocessor">#if defined(JSON_HEDLEY_CONST)</span></div>
|
||
<div class="line"><a name="l01174"></a><span class="lineno"> 1174</span> <span class="preprocessor"> #undef JSON_HEDLEY_CONST</span></div>
|
||
<div class="line"><a name="l01175"></a><span class="lineno"> 1175</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l01176"></a><span class="lineno"> 1176</span> <span class="preprocessor">#if \</span></div>
|
||
<div class="line"><a name="l01177"></a><span class="lineno"> 1177</span> <span class="preprocessor"> JSON_HEDLEY_HAS_ATTRIBUTE(const) || \</span></div>
|
||
<div class="line"><a name="l01178"></a><span class="lineno"> 1178</span> <span class="preprocessor"> JSON_HEDLEY_GCC_VERSION_CHECK(2,5,0) || \</span></div>
|
||
<div class="line"><a name="l01179"></a><span class="lineno"> 1179</span> <span class="preprocessor"> JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \</span></div>
|
||
<div class="line"><a name="l01180"></a><span class="lineno"> 1180</span> <span class="preprocessor"> JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \</span></div>
|
||
<div class="line"><a name="l01181"></a><span class="lineno"> 1181</span> <span class="preprocessor"> JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \</span></div>
|
||
<div class="line"><a name="l01182"></a><span class="lineno"> 1182</span> <span class="preprocessor"> JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \</span></div>
|
||
<div class="line"><a name="l01183"></a><span class="lineno"> 1183</span> <span class="preprocessor"> JSON_HEDLEY_TI_VERSION_CHECK(8,0,0) || \</span></div>
|
||
<div class="line"><a name="l01184"></a><span class="lineno"> 1184</span> <span class="preprocessor"> (JSON_HEDLEY_TI_VERSION_CHECK(7,3,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \</span></div>
|
||
<div class="line"><a name="l01185"></a><span class="lineno"> 1185</span> <span class="preprocessor"> JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0)</span></div>
|
||
<div class="line"><a name="l01186"></a><span class="lineno"> 1186</span> <span class="preprocessor"> #define JSON_HEDLEY_CONST __attribute__((__const__))</span></div>
|
||
<div class="line"><a name="l01187"></a><span class="lineno"> 1187</span> <span class="preprocessor">#elif \</span></div>
|
||
<div class="line"><a name="l01188"></a><span class="lineno"> 1188</span> <span class="preprocessor"> JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,10,0)</span></div>
|
||
<div class="line"><a name="l01189"></a><span class="lineno"> 1189</span> <span class="preprocessor"> #define JSON_HEDLEY_CONST _Pragma("no_side_effect")</span></div>
|
||
<div class="line"><a name="l01190"></a><span class="lineno"> 1190</span> <span class="preprocessor">#else</span></div>
|
||
<div class="line"><a name="l01191"></a><span class="lineno"><a class="line" href="json_8hpp.html#a0d17bf1a54fc45a04ced6d3aa86a96e3"> 1191</a></span> <span class="preprocessor"> #define JSON_HEDLEY_CONST JSON_HEDLEY_PURE</span></div>
|
||
<div class="line"><a name="l01192"></a><span class="lineno"> 1192</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>  </div>
|
||
<div class="line"><a name="l01194"></a><span class="lineno"> 1194</span> <span class="preprocessor">#if defined(JSON_HEDLEY_RESTRICT)</span></div>
|
||
<div class="line"><a name="l01195"></a><span class="lineno"> 1195</span> <span class="preprocessor"> #undef JSON_HEDLEY_RESTRICT</span></div>
|
||
<div class="line"><a name="l01196"></a><span class="lineno"> 1196</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l01197"></a><span class="lineno"> 1197</span> <span class="preprocessor">#if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) && !defined(__cplusplus)</span></div>
|
||
<div class="line"><a name="l01198"></a><span class="lineno"> 1198</span> <span class="preprocessor"> #define JSON_HEDLEY_RESTRICT restrict</span></div>
|
||
<div class="line"><a name="l01199"></a><span class="lineno"> 1199</span> <span class="preprocessor">#elif \</span></div>
|
||
<div class="line"><a name="l01200"></a><span class="lineno"> 1200</span> <span class="preprocessor"> JSON_HEDLEY_GCC_VERSION_CHECK(3,1,0) || \</span></div>
|
||
<div class="line"><a name="l01201"></a><span class="lineno"> 1201</span> <span class="preprocessor"> JSON_HEDLEY_MSVC_VERSION_CHECK(14,0,0) || \</span></div>
|
||
<div class="line"><a name="l01202"></a><span class="lineno"> 1202</span> <span class="preprocessor"> JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \</span></div>
|
||
<div class="line"><a name="l01203"></a><span class="lineno"> 1203</span> <span class="preprocessor"> JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \</span></div>
|
||
<div class="line"><a name="l01204"></a><span class="lineno"> 1204</span> <span class="preprocessor"> JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \</span></div>
|
||
<div class="line"><a name="l01205"></a><span class="lineno"> 1205</span> <span class="preprocessor"> JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0) || \</span></div>
|
||
<div class="line"><a name="l01206"></a><span class="lineno"> 1206</span> <span class="preprocessor"> JSON_HEDLEY_TI_VERSION_CHECK(8,0,0) || \</span></div>
|
||
<div class="line"><a name="l01207"></a><span class="lineno"> 1207</span> <span class="preprocessor"> (JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,14,0) && defined(__cplusplus)) || \</span></div>
|
||
<div class="line"><a name="l01208"></a><span class="lineno"> 1208</span> <span class="preprocessor"> JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) || \</span></div>
|
||
<div class="line"><a name="l01209"></a><span class="lineno"> 1209</span> <span class="preprocessor"> defined(__clang__)</span></div>
|
||
<div class="line"><a name="l01210"></a><span class="lineno"> 1210</span> <span class="preprocessor"> #define JSON_HEDLEY_RESTRICT __restrict</span></div>
|
||
<div class="line"><a name="l01211"></a><span class="lineno"> 1211</span> <span class="preprocessor">#elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,3,0) && !defined(__cplusplus)</span></div>
|
||
<div class="line"><a name="l01212"></a><span class="lineno"> 1212</span> <span class="preprocessor"> #define JSON_HEDLEY_RESTRICT _Restrict</span></div>
|
||
<div class="line"><a name="l01213"></a><span class="lineno"> 1213</span> <span class="preprocessor">#else</span></div>
|
||
<div class="line"><a name="l01214"></a><span class="lineno"><a class="line" href="json_8hpp.html#ad4979e5bc2f252ff6e367fc254ab4e85"> 1214</a></span> <span class="preprocessor"> #define JSON_HEDLEY_RESTRICT</span></div>
|
||
<div class="line"><a name="l01215"></a><span class="lineno"> 1215</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>  </div>
|
||
<div class="line"><a name="l01217"></a><span class="lineno"> 1217</span> <span class="preprocessor">#if defined(JSON_HEDLEY_INLINE)</span></div>
|
||
<div class="line"><a name="l01218"></a><span class="lineno"> 1218</span> <span class="preprocessor"> #undef JSON_HEDLEY_INLINE</span></div>
|
||
<div class="line"><a name="l01219"></a><span class="lineno"> 1219</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l01220"></a><span class="lineno"> 1220</span> <span class="preprocessor">#if \</span></div>
|
||
<div class="line"><a name="l01221"></a><span class="lineno"> 1221</span> <span class="preprocessor"> (defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || \</span></div>
|
||
<div class="line"><a name="l01222"></a><span class="lineno"> 1222</span> <span class="preprocessor"> (defined(__cplusplus) && (__cplusplus >= 199711L))</span></div>
|
||
<div class="line"><a name="l01223"></a><span class="lineno"> 1223</span> <span class="preprocessor"> #define JSON_HEDLEY_INLINE inline</span></div>
|
||
<div class="line"><a name="l01224"></a><span class="lineno"> 1224</span> <span class="preprocessor">#elif \</span></div>
|
||
<div class="line"><a name="l01225"></a><span class="lineno"> 1225</span> <span class="preprocessor"> defined(JSON_HEDLEY_GCC_VERSION) || \</span></div>
|
||
<div class="line"><a name="l01226"></a><span class="lineno"> 1226</span> <span class="preprocessor"> JSON_HEDLEY_ARM_VERSION_CHECK(6,2,0)</span></div>
|
||
<div class="line"><a name="l01227"></a><span class="lineno"> 1227</span> <span class="preprocessor"> #define JSON_HEDLEY_INLINE __inline__</span></div>
|
||
<div class="line"><a name="l01228"></a><span class="lineno"> 1228</span> <span class="preprocessor">#elif \</span></div>
|
||
<div class="line"><a name="l01229"></a><span class="lineno"> 1229</span> <span class="preprocessor"> JSON_HEDLEY_MSVC_VERSION_CHECK(12,0,0) || \</span></div>
|
||
<div class="line"><a name="l01230"></a><span class="lineno"> 1230</span> <span class="preprocessor"> JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \</span></div>
|
||
<div class="line"><a name="l01231"></a><span class="lineno"> 1231</span> <span class="preprocessor"> JSON_HEDLEY_TI_VERSION_CHECK(8,0,0)</span></div>
|
||
<div class="line"><a name="l01232"></a><span class="lineno"> 1232</span> <span class="preprocessor"> #define JSON_HEDLEY_INLINE __inline</span></div>
|
||
<div class="line"><a name="l01233"></a><span class="lineno"> 1233</span> <span class="preprocessor">#else</span></div>
|
||
<div class="line"><a name="l01234"></a><span class="lineno"><a class="line" href="json_8hpp.html#af943d68414c7fe0fdfab7e772fa628a8"> 1234</a></span> <span class="preprocessor"> #define JSON_HEDLEY_INLINE</span></div>
|
||
<div class="line"><a name="l01235"></a><span class="lineno"> 1235</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>  </div>
|
||
<div class="line"><a name="l01237"></a><span class="lineno"> 1237</span> <span class="preprocessor">#if defined(JSON_HEDLEY_ALWAYS_INLINE)</span></div>
|
||
<div class="line"><a name="l01238"></a><span class="lineno"> 1238</span> <span class="preprocessor"> #undef JSON_HEDLEY_ALWAYS_INLINE</span></div>
|
||
<div class="line"><a name="l01239"></a><span class="lineno"> 1239</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l01240"></a><span class="lineno"> 1240</span> <span class="preprocessor">#if \</span></div>
|
||
<div class="line"><a name="l01241"></a><span class="lineno"> 1241</span> <span class="preprocessor"> JSON_HEDLEY_HAS_ATTRIBUTE(always_inline) || \</span></div>
|
||
<div class="line"><a name="l01242"></a><span class="lineno"> 1242</span> <span class="preprocessor"> JSON_HEDLEY_GCC_VERSION_CHECK(4,0,0) || \</span></div>
|
||
<div class="line"><a name="l01243"></a><span class="lineno"> 1243</span> <span class="preprocessor"> JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \</span></div>
|
||
<div class="line"><a name="l01244"></a><span class="lineno"> 1244</span> <span class="preprocessor"> JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \</span></div>
|
||
<div class="line"><a name="l01245"></a><span class="lineno"> 1245</span> <span class="preprocessor"> JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \</span></div>
|
||
<div class="line"><a name="l01246"></a><span class="lineno"> 1246</span> <span class="preprocessor"> JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \</span></div>
|
||
<div class="line"><a name="l01247"></a><span class="lineno"> 1247</span> <span class="preprocessor"> JSON_HEDLEY_TI_VERSION_CHECK(8,0,0) || \</span></div>
|
||
<div class="line"><a name="l01248"></a><span class="lineno"> 1248</span> <span class="preprocessor"> (JSON_HEDLEY_TI_VERSION_CHECK(7,3,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__))</span></div>
|
||
<div class="line"><a name="l01249"></a><span class="lineno"> 1249</span> <span class="preprocessor"> #define JSON_HEDLEY_ALWAYS_INLINE __attribute__((__always_inline__)) JSON_HEDLEY_INLINE</span></div>
|
||
<div class="line"><a name="l01250"></a><span class="lineno"> 1250</span> <span class="preprocessor">#elif JSON_HEDLEY_MSVC_VERSION_CHECK(12,0,0)</span></div>
|
||
<div class="line"><a name="l01251"></a><span class="lineno"> 1251</span> <span class="preprocessor"> #define JSON_HEDLEY_ALWAYS_INLINE __forceinline</span></div>
|
||
<div class="line"><a name="l01252"></a><span class="lineno"> 1252</span> <span class="preprocessor">#elif JSON_HEDLEY_TI_VERSION_CHECK(7,0,0) && defined(__cplusplus)</span></div>
|
||
<div class="line"><a name="l01253"></a><span class="lineno"> 1253</span> <span class="preprocessor"> #define JSON_HEDLEY_ALWAYS_INLINE _Pragma("FUNC_ALWAYS_INLINE;")</span></div>
|
||
<div class="line"><a name="l01254"></a><span class="lineno"> 1254</span> <span class="preprocessor">#elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0)</span></div>
|
||
<div class="line"><a name="l01255"></a><span class="lineno"> 1255</span> <span class="preprocessor"> #define JSON_HEDLEY_ALWAYS_INLINE _Pragma("inline=forced")</span></div>
|
||
<div class="line"><a name="l01256"></a><span class="lineno"> 1256</span> <span class="preprocessor">#else</span></div>
|
||
<div class="line"><a name="l01257"></a><span class="lineno"><a class="line" href="json_8hpp.html#aa8811aa2a21030baad33c103cb04d322"> 1257</a></span> <span class="preprocessor"> #define JSON_HEDLEY_ALWAYS_INLINE JSON_HEDLEY_INLINE</span></div>
|
||
<div class="line"><a name="l01258"></a><span class="lineno"> 1258</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>  </div>
|
||
<div class="line"><a name="l01260"></a><span class="lineno"> 1260</span> <span class="preprocessor">#if defined(JSON_HEDLEY_NEVER_INLINE)</span></div>
|
||
<div class="line"><a name="l01261"></a><span class="lineno"> 1261</span> <span class="preprocessor"> #undef JSON_HEDLEY_NEVER_INLINE</span></div>
|
||
<div class="line"><a name="l01262"></a><span class="lineno"> 1262</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l01263"></a><span class="lineno"> 1263</span> <span class="preprocessor">#if \</span></div>
|
||
<div class="line"><a name="l01264"></a><span class="lineno"> 1264</span> <span class="preprocessor"> JSON_HEDLEY_HAS_ATTRIBUTE(noinline) || \</span></div>
|
||
<div class="line"><a name="l01265"></a><span class="lineno"> 1265</span> <span class="preprocessor"> JSON_HEDLEY_GCC_VERSION_CHECK(4,0,0) || \</span></div>
|
||
<div class="line"><a name="l01266"></a><span class="lineno"> 1266</span> <span class="preprocessor"> JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \</span></div>
|
||
<div class="line"><a name="l01267"></a><span class="lineno"> 1267</span> <span class="preprocessor"> JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \</span></div>
|
||
<div class="line"><a name="l01268"></a><span class="lineno"> 1268</span> <span class="preprocessor"> JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \</span></div>
|
||
<div class="line"><a name="l01269"></a><span class="lineno"> 1269</span> <span class="preprocessor"> JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \</span></div>
|
||
<div class="line"><a name="l01270"></a><span class="lineno"> 1270</span> <span class="preprocessor"> JSON_HEDLEY_TI_VERSION_CHECK(8,0,0) || \</span></div>
|
||
<div class="line"><a name="l01271"></a><span class="lineno"> 1271</span> <span class="preprocessor"> (JSON_HEDLEY_TI_VERSION_CHECK(7,3,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__))</span></div>
|
||
<div class="line"><a name="l01272"></a><span class="lineno"> 1272</span> <span class="preprocessor"> #define JSON_HEDLEY_NEVER_INLINE __attribute__((__noinline__))</span></div>
|
||
<div class="line"><a name="l01273"></a><span class="lineno"> 1273</span> <span class="preprocessor">#elif JSON_HEDLEY_MSVC_VERSION_CHECK(13,10,0)</span></div>
|
||
<div class="line"><a name="l01274"></a><span class="lineno"> 1274</span> <span class="preprocessor"> #define JSON_HEDLEY_NEVER_INLINE __declspec(noinline)</span></div>
|
||
<div class="line"><a name="l01275"></a><span class="lineno"> 1275</span> <span class="preprocessor">#elif JSON_HEDLEY_PGI_VERSION_CHECK(10,2,0)</span></div>
|
||
<div class="line"><a name="l01276"></a><span class="lineno"> 1276</span> <span class="preprocessor"> #define JSON_HEDLEY_NEVER_INLINE _Pragma("noinline")</span></div>
|
||
<div class="line"><a name="l01277"></a><span class="lineno"> 1277</span> <span class="preprocessor">#elif JSON_HEDLEY_TI_VERSION_CHECK(6,0,0) && defined(__cplusplus)</span></div>
|
||
<div class="line"><a name="l01278"></a><span class="lineno"> 1278</span> <span class="preprocessor"> #define JSON_HEDLEY_NEVER_INLINE _Pragma("FUNC_CANNOT_INLINE;")</span></div>
|
||
<div class="line"><a name="l01279"></a><span class="lineno"> 1279</span> <span class="preprocessor">#elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0)</span></div>
|
||
<div class="line"><a name="l01280"></a><span class="lineno"> 1280</span> <span class="preprocessor"> #define JSON_HEDLEY_NEVER_INLINE _Pragma("inline=never")</span></div>
|
||
<div class="line"><a name="l01281"></a><span class="lineno"> 1281</span> <span class="preprocessor">#elif JSON_HEDLEY_COMPCERT_VERSION_CHECK(3,2,0)</span></div>
|
||
<div class="line"><a name="l01282"></a><span class="lineno"> 1282</span> <span class="preprocessor"> #define JSON_HEDLEY_NEVER_INLINE __attribute((noinline))</span></div>
|
||
<div class="line"><a name="l01283"></a><span class="lineno"> 1283</span> <span class="preprocessor">#elif JSON_HEDLEY_PELLES_VERSION_CHECK(9,0,0)</span></div>
|
||
<div class="line"><a name="l01284"></a><span class="lineno"> 1284</span> <span class="preprocessor"> #define JSON_HEDLEY_NEVER_INLINE __declspec(noinline)</span></div>
|
||
<div class="line"><a name="l01285"></a><span class="lineno"> 1285</span> <span class="preprocessor">#else</span></div>
|
||
<div class="line"><a name="l01286"></a><span class="lineno"><a class="line" href="json_8hpp.html#aa400dd54d50fd20d7e931e2f08ee6374"> 1286</a></span> <span class="preprocessor"> #define JSON_HEDLEY_NEVER_INLINE</span></div>
|
||
<div class="line"><a name="l01287"></a><span class="lineno"> 1287</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>  </div>
|
||
<div class="line"><a name="l01289"></a><span class="lineno"> 1289</span> <span class="preprocessor">#if defined(JSON_HEDLEY_PRIVATE)</span></div>
|
||
<div class="line"><a name="l01290"></a><span class="lineno"> 1290</span> <span class="preprocessor"> #undef JSON_HEDLEY_PRIVATE</span></div>
|
||
<div class="line"><a name="l01291"></a><span class="lineno"> 1291</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l01292"></a><span class="lineno"> 1292</span> <span class="preprocessor">#if defined(JSON_HEDLEY_PUBLIC)</span></div>
|
||
<div class="line"><a name="l01293"></a><span class="lineno"> 1293</span> <span class="preprocessor"> #undef JSON_HEDLEY_PUBLIC</span></div>
|
||
<div class="line"><a name="l01294"></a><span class="lineno"> 1294</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l01295"></a><span class="lineno"> 1295</span> <span class="preprocessor">#if defined(JSON_HEDLEY_IMPORT)</span></div>
|
||
<div class="line"><a name="l01296"></a><span class="lineno"> 1296</span> <span class="preprocessor"> #undef JSON_HEDLEY_IMPORT</span></div>
|
||
<div class="line"><a name="l01297"></a><span class="lineno"> 1297</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l01298"></a><span class="lineno"> 1298</span> <span class="preprocessor">#if defined(_WIN32) || defined(__CYGWIN__)</span></div>
|
||
<div class="line"><a name="l01299"></a><span class="lineno"> 1299</span> <span class="preprocessor"> #define JSON_HEDLEY_PRIVATE</span></div>
|
||
<div class="line"><a name="l01300"></a><span class="lineno"> 1300</span> <span class="preprocessor"> #define JSON_HEDLEY_PUBLIC __declspec(dllexport)</span></div>
|
||
<div class="line"><a name="l01301"></a><span class="lineno"> 1301</span> <span class="preprocessor"> #define JSON_HEDLEY_IMPORT __declspec(dllimport)</span></div>
|
||
<div class="line"><a name="l01302"></a><span class="lineno"> 1302</span> <span class="preprocessor">#else</span></div>
|
||
<div class="line"><a name="l01303"></a><span class="lineno"> 1303</span> <span class="preprocessor"> #if \</span></div>
|
||
<div class="line"><a name="l01304"></a><span class="lineno"> 1304</span> <span class="preprocessor"> JSON_HEDLEY_HAS_ATTRIBUTE(visibility) || \</span></div>
|
||
<div class="line"><a name="l01305"></a><span class="lineno"> 1305</span> <span class="preprocessor"> JSON_HEDLEY_GCC_VERSION_CHECK(3,3,0) || \</span></div>
|
||
<div class="line"><a name="l01306"></a><span class="lineno"> 1306</span> <span class="preprocessor"> JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \</span></div>
|
||
<div class="line"><a name="l01307"></a><span class="lineno"> 1307</span> <span class="preprocessor"> JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \</span></div>
|
||
<div class="line"><a name="l01308"></a><span class="lineno"> 1308</span> <span class="preprocessor"> JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \</span></div>
|
||
<div class="line"><a name="l01309"></a><span class="lineno"> 1309</span> <span class="preprocessor"> JSON_HEDLEY_IBM_VERSION_CHECK(13,1,0) || \</span></div>
|
||
<div class="line"><a name="l01310"></a><span class="lineno"> 1310</span> <span class="preprocessor"> JSON_HEDLEY_TI_VERSION_CHECK(8,0,0) || \</span></div>
|
||
<div class="line"><a name="l01311"></a><span class="lineno"> 1311</span> <span class="preprocessor"> (JSON_HEDLEY_TI_VERSION_CHECK(7,3,0) && defined(__TI_EABI__) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__))</span></div>
|
||
<div class="line"><a name="l01312"></a><span class="lineno"> 1312</span> <span class="preprocessor"> #define JSON_HEDLEY_PRIVATE __attribute__((__visibility__("hidden")))</span></div>
|
||
<div class="line"><a name="l01313"></a><span class="lineno"> 1313</span> <span class="preprocessor"> #define JSON_HEDLEY_PUBLIC __attribute__((__visibility__("default")))</span></div>
|
||
<div class="line"><a name="l01314"></a><span class="lineno"> 1314</span> <span class="preprocessor"> #else</span></div>
|
||
<div class="line"><a name="l01315"></a><span class="lineno"><a class="line" href="json_8hpp.html#a034c879888858092ec101e8d02be67c2"> 1315</a></span> <span class="preprocessor"> #define JSON_HEDLEY_PRIVATE</span></div>
|
||
<div class="line"><a name="l01316"></a><span class="lineno"><a class="line" href="json_8hpp.html#aa1588f4ea4e7819b5b6e66f07865737f"> 1316</a></span> <span class="preprocessor"> #define JSON_HEDLEY_PUBLIC</span></div>
|
||
<div class="line"><a name="l01317"></a><span class="lineno"> 1317</span> <span class="preprocessor"> #endif</span></div>
|
||
<div class="line"><a name="l01318"></a><span class="lineno"><a class="line" href="json_8hpp.html#a29c62e19dfa10fb48bf3aa877c4af21c"> 1318</a></span> <span class="preprocessor"> #define JSON_HEDLEY_IMPORT extern</span></div>
|
||
<div class="line"><a name="l01319"></a><span class="lineno"> 1319</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l01320"></a><span class="lineno"> 1320</span>  </div>
|
||
<div class="line"><a name="l01321"></a><span class="lineno"> 1321</span> <span class="preprocessor">#if defined(JSON_HEDLEY_NO_THROW)</span></div>
|
||
<div class="line"><a name="l01322"></a><span class="lineno"> 1322</span> <span class="preprocessor"> #undef JSON_HEDLEY_NO_THROW</span></div>
|
||
<div class="line"><a name="l01323"></a><span class="lineno"> 1323</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l01324"></a><span class="lineno"> 1324</span> <span class="preprocessor">#if \</span></div>
|
||
<div class="line"><a name="l01325"></a><span class="lineno"> 1325</span> <span class="preprocessor"> JSON_HEDLEY_HAS_ATTRIBUTE(nothrow) || \</span></div>
|
||
<div class="line"><a name="l01326"></a><span class="lineno"> 1326</span> <span class="preprocessor"> JSON_HEDLEY_GCC_VERSION_CHECK(3,3,0) || \</span></div>
|
||
<div class="line"><a name="l01327"></a><span class="lineno"> 1327</span> <span class="preprocessor"> JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0)</span></div>
|
||
<div class="line"><a name="l01328"></a><span class="lineno"> 1328</span> <span class="preprocessor"> #define JSON_HEDLEY_NO_THROW __attribute__((__nothrow__))</span></div>
|
||
<div class="line"><a name="l01329"></a><span class="lineno"> 1329</span> <span class="preprocessor">#elif \</span></div>
|
||
<div class="line"><a name="l01330"></a><span class="lineno"> 1330</span> <span class="preprocessor"> JSON_HEDLEY_MSVC_VERSION_CHECK(13,1,0) || \</span></div>
|
||
<div class="line"><a name="l01331"></a><span class="lineno"> 1331</span> <span class="preprocessor"> JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0)</span></div>
|
||
<div class="line"><a name="l01332"></a><span class="lineno"> 1332</span> <span class="preprocessor"> #define JSON_HEDLEY_NO_THROW __declspec(nothrow)</span></div>
|
||
<div class="line"><a name="l01333"></a><span class="lineno"> 1333</span> <span class="preprocessor">#else</span></div>
|
||
<div class="line"><a name="l01334"></a><span class="lineno"><a class="line" href="json_8hpp.html#a99bb53bea18285e3d2ae4385c6c75434"> 1334</a></span> <span class="preprocessor"> #define JSON_HEDLEY_NO_THROW</span></div>
|
||
<div class="line"><a name="l01335"></a><span class="lineno"> 1335</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l01336"></a><span class="lineno"> 1336</span>  </div>
|
||
<div class="line"><a name="l01337"></a><span class="lineno"> 1337</span> <span class="preprocessor">#if defined(JSON_HEDLEY_FALL_THROUGH)</span></div>
|
||
<div class="line"><a name="l01338"></a><span class="lineno"> 1338</span> <span class="preprocessor"> #undef JSON_HEDLEY_FALL_THROUGH</span></div>
|
||
<div class="line"><a name="l01339"></a><span class="lineno"> 1339</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l01340"></a><span class="lineno"> 1340</span> <span class="preprocessor">#if JSON_HEDLEY_GNUC_HAS_ATTRIBUTE(fallthrough,7,0,0) && !defined(JSON_HEDLEY_PGI_VERSION)</span></div>
|
||
<div class="line"><a name="l01341"></a><span class="lineno"> 1341</span> <span class="preprocessor"> #define JSON_HEDLEY_FALL_THROUGH __attribute__((__fallthrough__))</span></div>
|
||
<div class="line"><a name="l01342"></a><span class="lineno"> 1342</span> <span class="preprocessor">#elif JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS(clang,fallthrough)</span></div>
|
||
<div class="line"><a name="l01343"></a><span class="lineno"> 1343</span> <span class="preprocessor"> #define JSON_HEDLEY_FALL_THROUGH JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[clang::fallthrough]])</span></div>
|
||
<div class="line"><a name="l01344"></a><span class="lineno"> 1344</span> <span class="preprocessor">#elif JSON_HEDLEY_HAS_CPP_ATTRIBUTE(fallthrough)</span></div>
|
||
<div class="line"><a name="l01345"></a><span class="lineno"> 1345</span> <span class="preprocessor"> #define JSON_HEDLEY_FALL_THROUGH JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[fallthrough]])</span></div>
|
||
<div class="line"><a name="l01346"></a><span class="lineno"> 1346</span> <span class="preprocessor">#elif defined(__fallthrough) </span><span class="comment">/* SAL */</span><span class="preprocessor"></span></div>
|
||
<div class="line"><a name="l01347"></a><span class="lineno"> 1347</span> <span class="preprocessor"> #define JSON_HEDLEY_FALL_THROUGH __fallthrough</span></div>
|
||
<div class="line"><a name="l01348"></a><span class="lineno"> 1348</span> <span class="preprocessor">#else</span></div>
|
||
<div class="line"><a name="l01349"></a><span class="lineno"><a class="line" href="json_8hpp.html#a7056c44a5787e78720407fc97aefbd0f"> 1349</a></span> <span class="preprocessor"> #define JSON_HEDLEY_FALL_THROUGH</span></div>
|
||
<div class="line"><a name="l01350"></a><span class="lineno"> 1350</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l01351"></a><span class="lineno"> 1351</span>  </div>
|
||
<div class="line"><a name="l01352"></a><span class="lineno"> 1352</span> <span class="preprocessor">#if defined(JSON_HEDLEY_RETURNS_NON_NULL)</span></div>
|
||
<div class="line"><a name="l01353"></a><span class="lineno"> 1353</span> <span class="preprocessor"> #undef JSON_HEDLEY_RETURNS_NON_NULL</span></div>
|
||
<div class="line"><a name="l01354"></a><span class="lineno"> 1354</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l01355"></a><span class="lineno"> 1355</span> <span class="preprocessor">#if \</span></div>
|
||
<div class="line"><a name="l01356"></a><span class="lineno"> 1356</span> <span class="preprocessor"> JSON_HEDLEY_HAS_ATTRIBUTE(returns_nonnull) || \</span></div>
|
||
<div class="line"><a name="l01357"></a><span class="lineno"> 1357</span> <span class="preprocessor"> JSON_HEDLEY_GCC_VERSION_CHECK(4,9,0)</span></div>
|
||
<div class="line"><a name="l01358"></a><span class="lineno"> 1358</span> <span class="preprocessor"> #define JSON_HEDLEY_RETURNS_NON_NULL __attribute__((__returns_nonnull__))</span></div>
|
||
<div class="line"><a name="l01359"></a><span class="lineno"> 1359</span> <span class="preprocessor">#elif defined(_Ret_notnull_) </span><span class="comment">/* SAL */</span><span class="preprocessor"></span></div>
|
||
<div class="line"><a name="l01360"></a><span class="lineno"> 1360</span> <span class="preprocessor"> #define JSON_HEDLEY_RETURNS_NON_NULL _Ret_notnull_</span></div>
|
||
<div class="line"><a name="l01361"></a><span class="lineno"> 1361</span> <span class="preprocessor">#else</span></div>
|
||
<div class="line"><a name="l01362"></a><span class="lineno"><a class="line" href="json_8hpp.html#a5f2aaec3b681d0a72f7d6e90b70cdcd1"> 1362</a></span> <span class="preprocessor"> #define JSON_HEDLEY_RETURNS_NON_NULL</span></div>
|
||
<div class="line"><a name="l01363"></a><span class="lineno"> 1363</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l01364"></a><span class="lineno"> 1364</span>  </div>
|
||
<div class="line"><a name="l01365"></a><span class="lineno"> 1365</span> <span class="preprocessor">#if defined(JSON_HEDLEY_ARRAY_PARAM)</span></div>
|
||
<div class="line"><a name="l01366"></a><span class="lineno"> 1366</span> <span class="preprocessor"> #undef JSON_HEDLEY_ARRAY_PARAM</span></div>
|
||
<div class="line"><a name="l01367"></a><span class="lineno"> 1367</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l01368"></a><span class="lineno"> 1368</span> <span class="preprocessor">#if \</span></div>
|
||
<div class="line"><a name="l01369"></a><span class="lineno"> 1369</span> <span class="preprocessor"> defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) && \</span></div>
|
||
<div class="line"><a name="l01370"></a><span class="lineno"> 1370</span> <span class="preprocessor"> !defined(__STDC_NO_VLA__) && \</span></div>
|
||
<div class="line"><a name="l01371"></a><span class="lineno"> 1371</span> <span class="preprocessor"> !defined(__cplusplus) && \</span></div>
|
||
<div class="line"><a name="l01372"></a><span class="lineno"> 1372</span> <span class="preprocessor"> !defined(JSON_HEDLEY_PGI_VERSION) && \</span></div>
|
||
<div class="line"><a name="l01373"></a><span class="lineno"> 1373</span> <span class="preprocessor"> !defined(JSON_HEDLEY_TINYC_VERSION)</span></div>
|
||
<div class="line"><a name="l01374"></a><span class="lineno"> 1374</span> <span class="preprocessor"> #define JSON_HEDLEY_ARRAY_PARAM(name) (name)</span></div>
|
||
<div class="line"><a name="l01375"></a><span class="lineno"> 1375</span> <span class="preprocessor">#else</span></div>
|
||
<div class="line"><a name="l01376"></a><span class="lineno"><a class="line" href="json_8hpp.html#a81c7e3b5b6811abfd89146ad33a93d8f"> 1376</a></span> <span class="preprocessor"> #define JSON_HEDLEY_ARRAY_PARAM(name)</span></div>
|
||
<div class="line"><a name="l01377"></a><span class="lineno"> 1377</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l01378"></a><span class="lineno"> 1378</span>  </div>
|
||
<div class="line"><a name="l01379"></a><span class="lineno"> 1379</span> <span class="preprocessor">#if defined(JSON_HEDLEY_IS_CONSTANT)</span></div>
|
||
<div class="line"><a name="l01380"></a><span class="lineno"> 1380</span> <span class="preprocessor"> #undef JSON_HEDLEY_IS_CONSTANT</span></div>
|
||
<div class="line"><a name="l01381"></a><span class="lineno"> 1381</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l01382"></a><span class="lineno"> 1382</span> <span class="preprocessor">#if defined(JSON_HEDLEY_REQUIRE_CONSTEXPR)</span></div>
|
||
<div class="line"><a name="l01383"></a><span class="lineno"> 1383</span> <span class="preprocessor"> #undef JSON_HEDLEY_REQUIRE_CONSTEXPR</span></div>
|
||
<div class="line"><a name="l01384"></a><span class="lineno"> 1384</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l01385"></a><span class="lineno"> 1385</span> <span class="comment">/* JSON_HEDLEY_IS_CONSTEXPR_ is for</span></div>
|
||
<div class="line"><a name="l01386"></a><span class="lineno"> 1386</span> <span class="comment"> HEDLEY INTERNAL USE ONLY. API subject to change without notice. */</span></div>
|
||
<div class="line"><a name="l01387"></a><span class="lineno"> 1387</span> <span class="preprocessor">#if defined(JSON_HEDLEY_IS_CONSTEXPR_)</span></div>
|
||
<div class="line"><a name="l01388"></a><span class="lineno"> 1388</span> <span class="preprocessor"> #undef JSON_HEDLEY_IS_CONSTEXPR_</span></div>
|
||
<div class="line"><a name="l01389"></a><span class="lineno"> 1389</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l01390"></a><span class="lineno"> 1390</span> <span class="preprocessor">#if \</span></div>
|
||
<div class="line"><a name="l01391"></a><span class="lineno"> 1391</span> <span class="preprocessor"> JSON_HEDLEY_HAS_BUILTIN(__builtin_constant_p) || \</span></div>
|
||
<div class="line"><a name="l01392"></a><span class="lineno"> 1392</span> <span class="preprocessor"> JSON_HEDLEY_GCC_VERSION_CHECK(3,4,0) || \</span></div>
|
||
<div class="line"><a name="l01393"></a><span class="lineno"> 1393</span> <span class="preprocessor"> JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \</span></div>
|
||
<div class="line"><a name="l01394"></a><span class="lineno"> 1394</span> <span class="preprocessor"> JSON_HEDLEY_TINYC_VERSION_CHECK(0,9,19) || \</span></div>
|
||
<div class="line"><a name="l01395"></a><span class="lineno"> 1395</span> <span class="preprocessor"> JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \</span></div>
|
||
<div class="line"><a name="l01396"></a><span class="lineno"> 1396</span> <span class="preprocessor"> JSON_HEDLEY_IBM_VERSION_CHECK(13,1,0) || \</span></div>
|
||
<div class="line"><a name="l01397"></a><span class="lineno"> 1397</span> <span class="preprocessor"> JSON_HEDLEY_TI_VERSION_CHECK(6,1,0) || \</span></div>
|
||
<div class="line"><a name="l01398"></a><span class="lineno"> 1398</span> <span class="preprocessor"> (JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,10,0) && !defined(__cplusplus)) || \</span></div>
|
||
<div class="line"><a name="l01399"></a><span class="lineno"> 1399</span> <span class="preprocessor"> JSON_HEDLEY_CRAY_VERSION_CHECK(8,1,0)</span></div>
|
||
<div class="line"><a name="l01400"></a><span class="lineno"> 1400</span> <span class="preprocessor"> #define JSON_HEDLEY_IS_CONSTANT(expr) __builtin_constant_p(expr)</span></div>
|
||
<div class="line"><a name="l01401"></a><span class="lineno"> 1401</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l01402"></a><span class="lineno"> 1402</span> <span class="preprocessor">#if !defined(__cplusplus)</span></div>
|
||
<div class="line"><a name="l01403"></a><span class="lineno"> 1403</span> <span class="preprocessor"># if \</span></div>
|
||
<div class="line"><a name="l01404"></a><span class="lineno"> 1404</span> <span class="preprocessor"> JSON_HEDLEY_HAS_BUILTIN(__builtin_types_compatible_p) || \</span></div>
|
||
<div class="line"><a name="l01405"></a><span class="lineno"> 1405</span> <span class="preprocessor"> JSON_HEDLEY_GCC_VERSION_CHECK(3,4,0) || \</span></div>
|
||
<div class="line"><a name="l01406"></a><span class="lineno"> 1406</span> <span class="preprocessor"> JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \</span></div>
|
||
<div class="line"><a name="l01407"></a><span class="lineno"> 1407</span> <span class="preprocessor"> JSON_HEDLEY_IBM_VERSION_CHECK(13,1,0) || \</span></div>
|
||
<div class="line"><a name="l01408"></a><span class="lineno"> 1408</span> <span class="preprocessor"> JSON_HEDLEY_CRAY_VERSION_CHECK(8,1,0) || \</span></div>
|
||
<div class="line"><a name="l01409"></a><span class="lineno"> 1409</span> <span class="preprocessor"> JSON_HEDLEY_ARM_VERSION_CHECK(5,4,0) || \</span></div>
|
||
<div class="line"><a name="l01410"></a><span class="lineno"> 1410</span> <span class="preprocessor"> JSON_HEDLEY_TINYC_VERSION_CHECK(0,9,24)</span></div>
|
||
<div class="line"><a name="l01411"></a><span class="lineno"> 1411</span> <span class="preprocessor">#if defined(__INTPTR_TYPE__)</span></div>
|
||
<div class="line"><a name="l01412"></a><span class="lineno"> 1412</span> <span class="preprocessor"> #define JSON_HEDLEY_IS_CONSTEXPR_(expr) __builtin_types_compatible_p(__typeof__((1 ? (void*) ((__INTPTR_TYPE__) ((expr) * 0)) : (int*) 0)), int*)</span></div>
|
||
<div class="line"><a name="l01413"></a><span class="lineno"> 1413</span> <span class="preprocessor">#else</span></div>
|
||
<div class="line"><a name="l01414"></a><span class="lineno"> 1414</span> <span class="preprocessor"> #include <stdint.h></span></div>
|
||
<div class="line"><a name="l01415"></a><span class="lineno"> 1415</span> <span class="preprocessor"> #define JSON_HEDLEY_IS_CONSTEXPR_(expr) __builtin_types_compatible_p(__typeof__((1 ? (void*) ((intptr_t) ((expr) * 0)) : (int*) 0)), int*)</span></div>
|
||
<div class="line"><a name="l01416"></a><span class="lineno"> 1416</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l01417"></a><span class="lineno"> 1417</span> <span class="preprocessor"># elif \</span></div>
|
||
<div class="line"><a name="l01418"></a><span class="lineno"> 1418</span> <span class="preprocessor"> (defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L) && !defined(JSON_HEDLEY_SUNPRO_VERSION) && !defined(JSON_HEDLEY_PGI_VERSION)) || \</span></div>
|
||
<div class="line"><a name="l01419"></a><span class="lineno"> 1419</span> <span class="preprocessor"> JSON_HEDLEY_HAS_EXTENSION(c_generic_selections) || \</span></div>
|
||
<div class="line"><a name="l01420"></a><span class="lineno"> 1420</span> <span class="preprocessor"> JSON_HEDLEY_GCC_VERSION_CHECK(4,9,0) || \</span></div>
|
||
<div class="line"><a name="l01421"></a><span class="lineno"> 1421</span> <span class="preprocessor"> JSON_HEDLEY_INTEL_VERSION_CHECK(17,0,0) || \</span></div>
|
||
<div class="line"><a name="l01422"></a><span class="lineno"> 1422</span> <span class="preprocessor"> JSON_HEDLEY_IBM_VERSION_CHECK(12,1,0) || \</span></div>
|
||
<div class="line"><a name="l01423"></a><span class="lineno"> 1423</span> <span class="preprocessor"> JSON_HEDLEY_ARM_VERSION_CHECK(5,3,0)</span></div>
|
||
<div class="line"><a name="l01424"></a><span class="lineno"> 1424</span> <span class="preprocessor">#if defined(__INTPTR_TYPE__)</span></div>
|
||
<div class="line"><a name="l01425"></a><span class="lineno"> 1425</span> <span class="preprocessor"> #define JSON_HEDLEY_IS_CONSTEXPR_(expr) _Generic((1 ? (void*) ((__INTPTR_TYPE__) ((expr) * 0)) : (int*) 0), int*: 1, void*: 0)</span></div>
|
||
<div class="line"><a name="l01426"></a><span class="lineno"> 1426</span> <span class="preprocessor">#else</span></div>
|
||
<div class="line"><a name="l01427"></a><span class="lineno"> 1427</span> <span class="preprocessor"> #include <stdint.h></span></div>
|
||
<div class="line"><a name="l01428"></a><span class="lineno"> 1428</span> <span class="preprocessor"> #define JSON_HEDLEY_IS_CONSTEXPR_(expr) _Generic((1 ? (void*) ((intptr_t) * 0) : (int*) 0), int*: 1, void*: 0)</span></div>
|
||
<div class="line"><a name="l01429"></a><span class="lineno"> 1429</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l01430"></a><span class="lineno"> 1430</span> <span class="preprocessor"># elif \</span></div>
|
||
<div class="line"><a name="l01431"></a><span class="lineno"> 1431</span> <span class="preprocessor"> defined(JSON_HEDLEY_GCC_VERSION) || \</span></div>
|
||
<div class="line"><a name="l01432"></a><span class="lineno"> 1432</span> <span class="preprocessor"> defined(JSON_HEDLEY_INTEL_VERSION) || \</span></div>
|
||
<div class="line"><a name="l01433"></a><span class="lineno"> 1433</span> <span class="preprocessor"> defined(JSON_HEDLEY_TINYC_VERSION) || \</span></div>
|
||
<div class="line"><a name="l01434"></a><span class="lineno"> 1434</span> <span class="preprocessor"> defined(JSON_HEDLEY_TI_VERSION) || \</span></div>
|
||
<div class="line"><a name="l01435"></a><span class="lineno"> 1435</span> <span class="preprocessor"> defined(__clang__)</span></div>
|
||
<div class="line"><a name="l01436"></a><span class="lineno"> 1436</span> <span class="preprocessor"># define JSON_HEDLEY_IS_CONSTEXPR_(expr) ( \</span></div>
|
||
<div class="line"><a name="l01437"></a><span class="lineno"> 1437</span> <span class="preprocessor"> sizeof(void) != \</span></div>
|
||
<div class="line"><a name="l01438"></a><span class="lineno"> 1438</span> <span class="preprocessor"> sizeof(*( \</span></div>
|
||
<div class="line"><a name="l01439"></a><span class="lineno"> 1439</span> <span class="preprocessor"> 1 ? \</span></div>
|
||
<div class="line"><a name="l01440"></a><span class="lineno"> 1440</span> <span class="preprocessor"> ((void*) ((expr) * 0L) ) : \</span></div>
|
||
<div class="line"><a name="l01441"></a><span class="lineno"> 1441</span> <span class="preprocessor">((struct { char v[sizeof(void) * 2]; } *) 1) \</span></div>
|
||
<div class="line"><a name="l01442"></a><span class="lineno"> 1442</span> <span class="preprocessor"> ) \</span></div>
|
||
<div class="line"><a name="l01443"></a><span class="lineno"> 1443</span> <span class="preprocessor"> ) \</span></div>
|
||
<div class="line"><a name="l01444"></a><span class="lineno"> 1444</span> <span class="preprocessor"> )</span></div>
|
||
<div class="line"><a name="l01445"></a><span class="lineno"> 1445</span> <span class="preprocessor"># endif</span></div>
|
||
<div class="line"><a name="l01446"></a><span class="lineno"> 1446</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l01447"></a><span class="lineno"> 1447</span> <span class="preprocessor">#if defined(JSON_HEDLEY_IS_CONSTEXPR_)</span></div>
|
||
<div class="line"><a name="l01448"></a><span class="lineno"> 1448</span> <span class="preprocessor"> #if !defined(JSON_HEDLEY_IS_CONSTANT)</span></div>
|
||
<div class="line"><a name="l01449"></a><span class="lineno"> 1449</span> <span class="preprocessor"> #define JSON_HEDLEY_IS_CONSTANT(expr) JSON_HEDLEY_IS_CONSTEXPR_(expr)</span></div>
|
||
<div class="line"><a name="l01450"></a><span class="lineno"> 1450</span> <span class="preprocessor"> #endif</span></div>
|
||
<div class="line"><a name="l01451"></a><span class="lineno"> 1451</span> <span class="preprocessor"> #define JSON_HEDLEY_REQUIRE_CONSTEXPR(expr) (JSON_HEDLEY_IS_CONSTEXPR_(expr) ? (expr) : (-1))</span></div>
|
||
<div class="line"><a name="l01452"></a><span class="lineno"> 1452</span> <span class="preprocessor">#else</span></div>
|
||
<div class="line"><a name="l01453"></a><span class="lineno"> 1453</span> <span class="preprocessor"> #if !defined(JSON_HEDLEY_IS_CONSTANT)</span></div>
|
||
<div class="line"><a name="l01454"></a><span class="lineno"><a class="line" href="json_8hpp.html#a37617841d58aa4d88d0efee4db57ee18"> 1454</a></span> <span class="preprocessor"> #define JSON_HEDLEY_IS_CONSTANT(expr) (0)</span></div>
|
||
<div class="line"><a name="l01455"></a><span class="lineno"> 1455</span> <span class="preprocessor"> #endif</span></div>
|
||
<div class="line"><a name="l01456"></a><span class="lineno"><a class="line" href="json_8hpp.html#a1136ab0d872379bb18d0839893bede67"> 1456</a></span> <span class="preprocessor"> #define JSON_HEDLEY_REQUIRE_CONSTEXPR(expr) (expr)</span></div>
|
||
<div class="line"><a name="l01457"></a><span class="lineno"> 1457</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l01458"></a><span class="lineno"> 1458</span>  </div>
|
||
<div class="line"><a name="l01459"></a><span class="lineno"> 1459</span> <span class="preprocessor">#if defined(JSON_HEDLEY_BEGIN_C_DECLS)</span></div>
|
||
<div class="line"><a name="l01460"></a><span class="lineno"> 1460</span> <span class="preprocessor"> #undef JSON_HEDLEY_BEGIN_C_DECLS</span></div>
|
||
<div class="line"><a name="l01461"></a><span class="lineno"> 1461</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l01462"></a><span class="lineno"> 1462</span> <span class="preprocessor">#if defined(JSON_HEDLEY_END_C_DECLS)</span></div>
|
||
<div class="line"><a name="l01463"></a><span class="lineno"> 1463</span> <span class="preprocessor"> #undef JSON_HEDLEY_END_C_DECLS</span></div>
|
||
<div class="line"><a name="l01464"></a><span class="lineno"> 1464</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l01465"></a><span class="lineno"> 1465</span> <span class="preprocessor">#if defined(JSON_HEDLEY_C_DECL)</span></div>
|
||
<div class="line"><a name="l01466"></a><span class="lineno"> 1466</span> <span class="preprocessor"> #undef JSON_HEDLEY_C_DECL</span></div>
|
||
<div class="line"><a name="l01467"></a><span class="lineno"> 1467</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l01468"></a><span class="lineno"> 1468</span> <span class="preprocessor">#if defined(__cplusplus)</span></div>
|
||
<div class="line"><a name="l01469"></a><span class="lineno"> 1469</span> <span class="preprocessor"> #define JSON_HEDLEY_BEGIN_C_DECLS extern "C" {</span></div>
|
||
<div class="line"><a name="l01470"></a><span class="lineno"> 1470</span> <span class="preprocessor"> #define JSON_HEDLEY_END_C_DECLS }</span></div>
|
||
<div class="line"><a name="l01471"></a><span class="lineno"> 1471</span> <span class="preprocessor"> #define JSON_HEDLEY_C_DECL extern "C"</span></div>
|
||
<div class="line"><a name="l01472"></a><span class="lineno"> 1472</span> <span class="preprocessor">#else</span></div>
|
||
<div class="line"><a name="l01473"></a><span class="lineno"><a class="line" href="json_8hpp.html#ad43f9ae10083194afdfe88516ad876e7"> 1473</a></span> <span class="preprocessor"> #define JSON_HEDLEY_BEGIN_C_DECLS</span></div>
|
||
<div class="line"><a name="l01474"></a><span class="lineno"><a class="line" href="json_8hpp.html#aca2fc4b765ac5739d680153895b673fb"> 1474</a></span> <span class="preprocessor"> #define JSON_HEDLEY_END_C_DECLS</span></div>
|
||
<div class="line"><a name="l01475"></a><span class="lineno"><a class="line" href="json_8hpp.html#a378be9b66feb11153979c282c669b12e"> 1475</a></span> <span class="preprocessor"> #define JSON_HEDLEY_C_DECL</span></div>
|
||
<div class="line"><a name="l01476"></a><span class="lineno"> 1476</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l01477"></a><span class="lineno"> 1477</span>  </div>
|
||
<div class="line"><a name="l01478"></a><span class="lineno"> 1478</span> <span class="preprocessor">#if defined(JSON_HEDLEY_STATIC_ASSERT)</span></div>
|
||
<div class="line"><a name="l01479"></a><span class="lineno"> 1479</span> <span class="preprocessor"> #undef JSON_HEDLEY_STATIC_ASSERT</span></div>
|
||
<div class="line"><a name="l01480"></a><span class="lineno"> 1480</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l01481"></a><span class="lineno"> 1481</span> <span class="preprocessor">#if \</span></div>
|
||
<div class="line"><a name="l01482"></a><span class="lineno"> 1482</span> <span class="preprocessor"> !defined(__cplusplus) && ( \</span></div>
|
||
<div class="line"><a name="l01483"></a><span class="lineno"> 1483</span> <span class="preprocessor"> (defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L)) || \</span></div>
|
||
<div class="line"><a name="l01484"></a><span class="lineno"> 1484</span> <span class="preprocessor"> JSON_HEDLEY_HAS_FEATURE(c_static_assert) || \</span></div>
|
||
<div class="line"><a name="l01485"></a><span class="lineno"> 1485</span> <span class="preprocessor"> JSON_HEDLEY_GCC_VERSION_CHECK(6,0,0) || \</span></div>
|
||
<div class="line"><a name="l01486"></a><span class="lineno"> 1486</span> <span class="preprocessor"> JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \</span></div>
|
||
<div class="line"><a name="l01487"></a><span class="lineno"> 1487</span> <span class="preprocessor"> defined(_Static_assert) \</span></div>
|
||
<div class="line"><a name="l01488"></a><span class="lineno"> 1488</span> <span class="preprocessor"> )</span></div>
|
||
<div class="line"><a name="l01489"></a><span class="lineno"> 1489</span> <span class="preprocessor"># define JSON_HEDLEY_STATIC_ASSERT(expr, message) _Static_assert(expr, message)</span></div>
|
||
<div class="line"><a name="l01490"></a><span class="lineno"> 1490</span> <span class="preprocessor">#elif \</span></div>
|
||
<div class="line"><a name="l01491"></a><span class="lineno"> 1491</span> <span class="preprocessor"> (defined(__cplusplus) && (__cplusplus >= 201103L)) || \</span></div>
|
||
<div class="line"><a name="l01492"></a><span class="lineno"> 1492</span> <span class="preprocessor"> JSON_HEDLEY_MSVC_VERSION_CHECK(16,0,0) || \</span></div>
|
||
<div class="line"><a name="l01493"></a><span class="lineno"> 1493</span> <span class="preprocessor"> (defined(__cplusplus) && JSON_HEDLEY_TI_VERSION_CHECK(8,3,0))</span></div>
|
||
<div class="line"><a name="l01494"></a><span class="lineno"> 1494</span> <span class="preprocessor"># define JSON_HEDLEY_STATIC_ASSERT(expr, message) JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(static_assert(expr, message))</span></div>
|
||
<div class="line"><a name="l01495"></a><span class="lineno"> 1495</span> <span class="preprocessor">#else</span></div>
|
||
<div class="line"><a name="l01496"></a><span class="lineno"><a class="line" href="json_8hpp.html#a04269935c66fe5a9b6c33fa36037d215"> 1496</a></span> <span class="preprocessor"># define JSON_HEDLEY_STATIC_ASSERT(expr, message)</span></div>
|
||
<div class="line"><a name="l01497"></a><span class="lineno"> 1497</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l01498"></a><span class="lineno"> 1498</span>  </div>
|
||
<div class="line"><a name="l01499"></a><span class="lineno"> 1499</span> <span class="preprocessor">#if defined(JSON_HEDLEY_CONST_CAST)</span></div>
|
||
<div class="line"><a name="l01500"></a><span class="lineno"> 1500</span> <span class="preprocessor"> #undef JSON_HEDLEY_CONST_CAST</span></div>
|
||
<div class="line"><a name="l01501"></a><span class="lineno"> 1501</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l01502"></a><span class="lineno"> 1502</span> <span class="preprocessor">#if defined(__cplusplus)</span></div>
|
||
<div class="line"><a name="l01503"></a><span class="lineno"> 1503</span> <span class="preprocessor"># define JSON_HEDLEY_CONST_CAST(T, expr) (const_cast<T>(expr))</span></div>
|
||
<div class="line"><a name="l01504"></a><span class="lineno"> 1504</span> <span class="preprocessor">#elif \</span></div>
|
||
<div class="line"><a name="l01505"></a><span class="lineno"> 1505</span> <span class="preprocessor"> JSON_HEDLEY_HAS_WARNING("-Wcast-qual") || \</span></div>
|
||
<div class="line"><a name="l01506"></a><span class="lineno"> 1506</span> <span class="preprocessor"> JSON_HEDLEY_GCC_VERSION_CHECK(4,6,0) || \</span></div>
|
||
<div class="line"><a name="l01507"></a><span class="lineno"> 1507</span> <span class="preprocessor"> JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0)</span></div>
|
||
<div class="line"><a name="l01508"></a><span class="lineno"> 1508</span> <span class="preprocessor"># define JSON_HEDLEY_CONST_CAST(T, expr) (__extension__ ({ \</span></div>
|
||
<div class="line"><a name="l01509"></a><span class="lineno"> 1509</span> <span class="preprocessor"> JSON_HEDLEY_DIAGNOSTIC_PUSH \</span></div>
|
||
<div class="line"><a name="l01510"></a><span class="lineno"> 1510</span> <span class="preprocessor"> JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL \</span></div>
|
||
<div class="line"><a name="l01511"></a><span class="lineno"> 1511</span> <span class="preprocessor"> ((T) (expr)); \</span></div>
|
||
<div class="line"><a name="l01512"></a><span class="lineno"> 1512</span> <span class="preprocessor"> JSON_HEDLEY_DIAGNOSTIC_POP \</span></div>
|
||
<div class="line"><a name="l01513"></a><span class="lineno"> 1513</span> <span class="preprocessor"> }))</span></div>
|
||
<div class="line"><a name="l01514"></a><span class="lineno"> 1514</span> <span class="preprocessor">#else</span></div>
|
||
<div class="line"><a name="l01515"></a><span class="lineno"><a class="line" href="json_8hpp.html#ab849ba88a6f410da5a46a86f8565b381"> 1515</a></span> <span class="preprocessor"># define JSON_HEDLEY_CONST_CAST(T, expr) ((T) (expr))</span></div>
|
||
<div class="line"><a name="l01516"></a><span class="lineno"> 1516</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l01517"></a><span class="lineno"> 1517</span>  </div>
|
||
<div class="line"><a name="l01518"></a><span class="lineno"> 1518</span> <span class="preprocessor">#if defined(JSON_HEDLEY_REINTERPRET_CAST)</span></div>
|
||
<div class="line"><a name="l01519"></a><span class="lineno"> 1519</span> <span class="preprocessor"> #undef JSON_HEDLEY_REINTERPRET_CAST</span></div>
|
||
<div class="line"><a name="l01520"></a><span class="lineno"> 1520</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l01521"></a><span class="lineno"> 1521</span> <span class="preprocessor">#if defined(__cplusplus)</span></div>
|
||
<div class="line"><a name="l01522"></a><span class="lineno"> 1522</span> <span class="preprocessor"> #define JSON_HEDLEY_REINTERPRET_CAST(T, expr) (reinterpret_cast<T>(expr))</span></div>
|
||
<div class="line"><a name="l01523"></a><span class="lineno"> 1523</span> <span class="preprocessor">#else</span></div>
|
||
<div class="line"><a name="l01524"></a><span class="lineno"><a class="line" href="json_8hpp.html#a86dd11af75e3f25f5be26cf3c779ba79"> 1524</a></span> <span class="preprocessor"> #define JSON_HEDLEY_REINTERPRET_CAST(T, expr) (*((T*) &(expr)))</span></div>
|
||
<div class="line"><a name="l01525"></a><span class="lineno"> 1525</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l01526"></a><span class="lineno"> 1526</span>  </div>
|
||
<div class="line"><a name="l01527"></a><span class="lineno"> 1527</span> <span class="preprocessor">#if defined(JSON_HEDLEY_STATIC_CAST)</span></div>
|
||
<div class="line"><a name="l01528"></a><span class="lineno"> 1528</span> <span class="preprocessor"> #undef JSON_HEDLEY_STATIC_CAST</span></div>
|
||
<div class="line"><a name="l01529"></a><span class="lineno"> 1529</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l01530"></a><span class="lineno"> 1530</span> <span class="preprocessor">#if defined(__cplusplus)</span></div>
|
||
<div class="line"><a name="l01531"></a><span class="lineno"> 1531</span> <span class="preprocessor"> #define JSON_HEDLEY_STATIC_CAST(T, expr) (static_cast<T>(expr))</span></div>
|
||
<div class="line"><a name="l01532"></a><span class="lineno"> 1532</span> <span class="preprocessor">#else</span></div>
|
||
<div class="line"><a name="l01533"></a><span class="lineno"><a class="line" href="json_8hpp.html#a2edb8d037ad5cbac818c86aca317226a"> 1533</a></span> <span class="preprocessor"> #define JSON_HEDLEY_STATIC_CAST(T, expr) ((T) (expr))</span></div>
|
||
<div class="line"><a name="l01534"></a><span class="lineno"> 1534</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l01535"></a><span class="lineno"> 1535</span>  </div>
|
||
<div class="line"><a name="l01536"></a><span class="lineno"> 1536</span> <span class="preprocessor">#if defined(JSON_HEDLEY_CPP_CAST)</span></div>
|
||
<div class="line"><a name="l01537"></a><span class="lineno"> 1537</span> <span class="preprocessor"> #undef JSON_HEDLEY_CPP_CAST</span></div>
|
||
<div class="line"><a name="l01538"></a><span class="lineno"> 1538</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l01539"></a><span class="lineno"> 1539</span> <span class="preprocessor">#if defined(__cplusplus)</span></div>
|
||
<div class="line"><a name="l01540"></a><span class="lineno"> 1540</span> <span class="preprocessor"> #define JSON_HEDLEY_CPP_CAST(T, expr) static_cast<T>(expr)</span></div>
|
||
<div class="line"><a name="l01541"></a><span class="lineno"> 1541</span> <span class="preprocessor">#else</span></div>
|
||
<div class="line"><a name="l01542"></a><span class="lineno"><a class="line" href="json_8hpp.html#a8c790866b16f58cbe0b3286a7a6238c3"> 1542</a></span> <span class="preprocessor"> #define JSON_HEDLEY_CPP_CAST(T, expr) (expr)</span></div>
|
||
<div class="line"><a name="l01543"></a><span class="lineno"> 1543</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l01544"></a><span class="lineno"> 1544</span>  </div>
|
||
<div class="line"><a name="l01545"></a><span class="lineno"> 1545</span> <span class="preprocessor">#if defined(JSON_HEDLEY_NULL)</span></div>
|
||
<div class="line"><a name="l01546"></a><span class="lineno"> 1546</span> <span class="preprocessor"> #undef JSON_HEDLEY_NULL</span></div>
|
||
<div class="line"><a name="l01547"></a><span class="lineno"> 1547</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l01548"></a><span class="lineno"> 1548</span> <span class="preprocessor">#if defined(__cplusplus)</span></div>
|
||
<div class="line"><a name="l01549"></a><span class="lineno"> 1549</span> <span class="preprocessor"> #if __cplusplus >= 201103L</span></div>
|
||
<div class="line"><a name="l01550"></a><span class="lineno"> 1550</span> <span class="preprocessor"> #define JSON_HEDLEY_NULL JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(nullptr)</span></div>
|
||
<div class="line"><a name="l01551"></a><span class="lineno"> 1551</span> <span class="preprocessor"> #elif defined(NULL)</span></div>
|
||
<div class="line"><a name="l01552"></a><span class="lineno"> 1552</span> <span class="preprocessor"> #define JSON_HEDLEY_NULL NULL</span></div>
|
||
<div class="line"><a name="l01553"></a><span class="lineno"> 1553</span> <span class="preprocessor"> #else</span></div>
|
||
<div class="line"><a name="l01554"></a><span class="lineno"> 1554</span> <span class="preprocessor"> #define JSON_HEDLEY_NULL JSON_HEDLEY_STATIC_CAST(void*, 0)</span></div>
|
||
<div class="line"><a name="l01555"></a><span class="lineno"> 1555</span> <span class="preprocessor"> #endif</span></div>
|
||
<div class="line"><a name="l01556"></a><span class="lineno"> 1556</span> <span class="preprocessor">#elif defined(NULL)</span></div>
|
||
<div class="line"><a name="l01557"></a><span class="lineno"> 1557</span> <span class="preprocessor"> #define JSON_HEDLEY_NULL NULL</span></div>
|
||
<div class="line"><a name="l01558"></a><span class="lineno"> 1558</span> <span class="preprocessor">#else</span></div>
|
||
<div class="line"><a name="l01559"></a><span class="lineno"><a class="line" href="json_8hpp.html#a06449cfb74f25f075a8ea334542f1c65"> 1559</a></span> <span class="preprocessor"> #define JSON_HEDLEY_NULL ((void*) 0)</span></div>
|
||
<div class="line"><a name="l01560"></a><span class="lineno"> 1560</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l01561"></a><span class="lineno"> 1561</span>  </div>
|
||
<div class="line"><a name="l01562"></a><span class="lineno"> 1562</span> <span class="preprocessor">#if defined(JSON_HEDLEY_MESSAGE)</span></div>
|
||
<div class="line"><a name="l01563"></a><span class="lineno"> 1563</span> <span class="preprocessor"> #undef JSON_HEDLEY_MESSAGE</span></div>
|
||
<div class="line"><a name="l01564"></a><span class="lineno"> 1564</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l01565"></a><span class="lineno"> 1565</span> <span class="preprocessor">#if JSON_HEDLEY_HAS_WARNING("-Wunknown-pragmas")</span></div>
|
||
<div class="line"><a name="l01566"></a><span class="lineno"> 1566</span> <span class="preprocessor"># define JSON_HEDLEY_MESSAGE(msg) \</span></div>
|
||
<div class="line"><a name="l01567"></a><span class="lineno"> 1567</span> <span class="preprocessor"> JSON_HEDLEY_DIAGNOSTIC_PUSH \</span></div>
|
||
<div class="line"><a name="l01568"></a><span class="lineno"> 1568</span> <span class="preprocessor"> JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS \</span></div>
|
||
<div class="line"><a name="l01569"></a><span class="lineno"> 1569</span> <span class="preprocessor"> JSON_HEDLEY_PRAGMA(message msg) \</span></div>
|
||
<div class="line"><a name="l01570"></a><span class="lineno"> 1570</span> <span class="preprocessor"> JSON_HEDLEY_DIAGNOSTIC_POP</span></div>
|
||
<div class="line"><a name="l01571"></a><span class="lineno"> 1571</span> <span class="preprocessor">#elif \</span></div>
|
||
<div class="line"><a name="l01572"></a><span class="lineno"> 1572</span> <span class="preprocessor"> JSON_HEDLEY_GCC_VERSION_CHECK(4,4,0) || \</span></div>
|
||
<div class="line"><a name="l01573"></a><span class="lineno"> 1573</span> <span class="preprocessor"> JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0)</span></div>
|
||
<div class="line"><a name="l01574"></a><span class="lineno"> 1574</span> <span class="preprocessor"># define JSON_HEDLEY_MESSAGE(msg) JSON_HEDLEY_PRAGMA(message msg)</span></div>
|
||
<div class="line"><a name="l01575"></a><span class="lineno"> 1575</span> <span class="preprocessor">#elif JSON_HEDLEY_CRAY_VERSION_CHECK(5,0,0)</span></div>
|
||
<div class="line"><a name="l01576"></a><span class="lineno"> 1576</span> <span class="preprocessor"># define JSON_HEDLEY_MESSAGE(msg) JSON_HEDLEY_PRAGMA(_CRI message msg)</span></div>
|
||
<div class="line"><a name="l01577"></a><span class="lineno"> 1577</span> <span class="preprocessor">#elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0)</span></div>
|
||
<div class="line"><a name="l01578"></a><span class="lineno"> 1578</span> <span class="preprocessor"># define JSON_HEDLEY_MESSAGE(msg) JSON_HEDLEY_PRAGMA(message(msg))</span></div>
|
||
<div class="line"><a name="l01579"></a><span class="lineno"> 1579</span> <span class="preprocessor">#elif JSON_HEDLEY_PELLES_VERSION_CHECK(2,0,0)</span></div>
|
||
<div class="line"><a name="l01580"></a><span class="lineno"> 1580</span> <span class="preprocessor"># define JSON_HEDLEY_MESSAGE(msg) JSON_HEDLEY_PRAGMA(message(msg))</span></div>
|
||
<div class="line"><a name="l01581"></a><span class="lineno"> 1581</span> <span class="preprocessor">#else</span></div>
|
||
<div class="line"><a name="l01582"></a><span class="lineno"><a class="line" href="json_8hpp.html#a8419c2b65d28686932087c587eb19157"> 1582</a></span> <span class="preprocessor"># define JSON_HEDLEY_MESSAGE(msg)</span></div>
|
||
<div class="line"><a name="l01583"></a><span class="lineno"> 1583</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l01584"></a><span class="lineno"> 1584</span>  </div>
|
||
<div class="line"><a name="l01585"></a><span class="lineno"> 1585</span> <span class="preprocessor">#if defined(JSON_HEDLEY_WARNING)</span></div>
|
||
<div class="line"><a name="l01586"></a><span class="lineno"> 1586</span> <span class="preprocessor"> #undef JSON_HEDLEY_WARNING</span></div>
|
||
<div class="line"><a name="l01587"></a><span class="lineno"> 1587</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l01588"></a><span class="lineno"> 1588</span> <span class="preprocessor">#if JSON_HEDLEY_HAS_WARNING("-Wunknown-pragmas")</span></div>
|
||
<div class="line"><a name="l01589"></a><span class="lineno"> 1589</span> <span class="preprocessor"># define JSON_HEDLEY_WARNING(msg) \</span></div>
|
||
<div class="line"><a name="l01590"></a><span class="lineno"> 1590</span> <span class="preprocessor"> JSON_HEDLEY_DIAGNOSTIC_PUSH \</span></div>
|
||
<div class="line"><a name="l01591"></a><span class="lineno"> 1591</span> <span class="preprocessor"> JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS \</span></div>
|
||
<div class="line"><a name="l01592"></a><span class="lineno"> 1592</span> <span class="preprocessor"> JSON_HEDLEY_PRAGMA(clang warning msg) \</span></div>
|
||
<div class="line"><a name="l01593"></a><span class="lineno"> 1593</span> <span class="preprocessor"> JSON_HEDLEY_DIAGNOSTIC_POP</span></div>
|
||
<div class="line"><a name="l01594"></a><span class="lineno"> 1594</span> <span class="preprocessor">#elif \</span></div>
|
||
<div class="line"><a name="l01595"></a><span class="lineno"> 1595</span> <span class="preprocessor"> JSON_HEDLEY_GCC_VERSION_CHECK(4,8,0) || \</span></div>
|
||
<div class="line"><a name="l01596"></a><span class="lineno"> 1596</span> <span class="preprocessor"> JSON_HEDLEY_PGI_VERSION_CHECK(18,4,0)</span></div>
|
||
<div class="line"><a name="l01597"></a><span class="lineno"> 1597</span> <span class="preprocessor"># define JSON_HEDLEY_WARNING(msg) JSON_HEDLEY_PRAGMA(GCC warning msg)</span></div>
|
||
<div class="line"><a name="l01598"></a><span class="lineno"> 1598</span> <span class="preprocessor">#elif JSON_HEDLEY_MSVC_VERSION_CHECK(15,0,0)</span></div>
|
||
<div class="line"><a name="l01599"></a><span class="lineno"> 1599</span> <span class="preprocessor"># define JSON_HEDLEY_WARNING(msg) JSON_HEDLEY_PRAGMA(message(msg))</span></div>
|
||
<div class="line"><a name="l01600"></a><span class="lineno"> 1600</span> <span class="preprocessor">#else</span></div>
|
||
<div class="line"><a name="l01601"></a><span class="lineno"><a class="line" href="json_8hpp.html#a5563e5b0fbc2a9b525830081404d9208"> 1601</a></span> <span class="preprocessor"># define JSON_HEDLEY_WARNING(msg) JSON_HEDLEY_MESSAGE(msg)</span></div>
|
||
<div class="line"><a name="l01602"></a><span class="lineno"> 1602</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l01603"></a><span class="lineno"> 1603</span>  </div>
|
||
<div class="line"><a name="l01604"></a><span class="lineno"> 1604</span> <span class="preprocessor">#if defined(JSON_HEDLEY_REQUIRE)</span></div>
|
||
<div class="line"><a name="l01605"></a><span class="lineno"> 1605</span> <span class="preprocessor"> #undef JSON_HEDLEY_REQUIRE</span></div>
|
||
<div class="line"><a name="l01606"></a><span class="lineno"> 1606</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l01607"></a><span class="lineno"> 1607</span> <span class="preprocessor">#if defined(JSON_HEDLEY_REQUIRE_MSG)</span></div>
|
||
<div class="line"><a name="l01608"></a><span class="lineno"> 1608</span> <span class="preprocessor"> #undef JSON_HEDLEY_REQUIRE_MSG</span></div>
|
||
<div class="line"><a name="l01609"></a><span class="lineno"> 1609</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l01610"></a><span class="lineno"> 1610</span> <span class="preprocessor">#if JSON_HEDLEY_HAS_ATTRIBUTE(diagnose_if)</span></div>
|
||
<div class="line"><a name="l01611"></a><span class="lineno"> 1611</span> <span class="preprocessor"># if JSON_HEDLEY_HAS_WARNING("-Wgcc-compat")</span></div>
|
||
<div class="line"><a name="l01612"></a><span class="lineno"> 1612</span> <span class="preprocessor"># define JSON_HEDLEY_REQUIRE(expr) \</span></div>
|
||
<div class="line"><a name="l01613"></a><span class="lineno"> 1613</span> <span class="preprocessor"> JSON_HEDLEY_DIAGNOSTIC_PUSH \</span></div>
|
||
<div class="line"><a name="l01614"></a><span class="lineno"> 1614</span> <span class="preprocessor"> _Pragma("clang diagnostic ignored \"-Wgcc-compat\"") \</span></div>
|
||
<div class="line"><a name="l01615"></a><span class="lineno"> 1615</span> <span class="preprocessor"> __attribute__((diagnose_if(!(expr), #expr, "error"))) \</span></div>
|
||
<div class="line"><a name="l01616"></a><span class="lineno"> 1616</span> <span class="preprocessor"> JSON_HEDLEY_DIAGNOSTIC_POP</span></div>
|
||
<div class="line"><a name="l01617"></a><span class="lineno"> 1617</span> <span class="preprocessor"># define JSON_HEDLEY_REQUIRE_MSG(expr,msg) \</span></div>
|
||
<div class="line"><a name="l01618"></a><span class="lineno"> 1618</span> <span class="preprocessor"> JSON_HEDLEY_DIAGNOSTIC_PUSH \</span></div>
|
||
<div class="line"><a name="l01619"></a><span class="lineno"> 1619</span> <span class="preprocessor"> _Pragma("clang diagnostic ignored \"-Wgcc-compat\"") \</span></div>
|
||
<div class="line"><a name="l01620"></a><span class="lineno"> 1620</span> <span class="preprocessor"> __attribute__((diagnose_if(!(expr), msg, "error"))) \</span></div>
|
||
<div class="line"><a name="l01621"></a><span class="lineno"> 1621</span> <span class="preprocessor"> JSON_HEDLEY_DIAGNOSTIC_POP</span></div>
|
||
<div class="line"><a name="l01622"></a><span class="lineno"> 1622</span> <span class="preprocessor"># else</span></div>
|
||
<div class="line"><a name="l01623"></a><span class="lineno"> 1623</span> <span class="preprocessor"># define JSON_HEDLEY_REQUIRE(expr) __attribute__((diagnose_if(!(expr), #expr, "error")))</span></div>
|
||
<div class="line"><a name="l01624"></a><span class="lineno"> 1624</span> <span class="preprocessor"># define JSON_HEDLEY_REQUIRE_MSG(expr,msg) __attribute__((diagnose_if(!(expr), msg, "error")))</span></div>
|
||
<div class="line"><a name="l01625"></a><span class="lineno"> 1625</span> <span class="preprocessor"># endif</span></div>
|
||
<div class="line"><a name="l01626"></a><span class="lineno"> 1626</span> <span class="preprocessor">#else</span></div>
|
||
<div class="line"><a name="l01627"></a><span class="lineno"><a class="line" href="json_8hpp.html#acbc72fa9390d5e8b7592a81384dfabf3"> 1627</a></span> <span class="preprocessor"># define JSON_HEDLEY_REQUIRE(expr)</span></div>
|
||
<div class="line"><a name="l01628"></a><span class="lineno"><a class="line" href="json_8hpp.html#a7106fb230747163b5b16121eb6a42b23"> 1628</a></span> <span class="preprocessor"># define JSON_HEDLEY_REQUIRE_MSG(expr,msg)</span></div>
|
||
<div class="line"><a name="l01629"></a><span class="lineno"> 1629</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l01630"></a><span class="lineno"> 1630</span>  </div>
|
||
<div class="line"><a name="l01631"></a><span class="lineno"> 1631</span> <span class="preprocessor">#if defined(JSON_HEDLEY_FLAGS)</span></div>
|
||
<div class="line"><a name="l01632"></a><span class="lineno"> 1632</span> <span class="preprocessor"> #undef JSON_HEDLEY_FLAGS</span></div>
|
||
<div class="line"><a name="l01633"></a><span class="lineno"> 1633</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l01634"></a><span class="lineno"> 1634</span> <span class="preprocessor">#if JSON_HEDLEY_HAS_ATTRIBUTE(flag_enum)</span></div>
|
||
<div class="line"><a name="l01635"></a><span class="lineno"> 1635</span> <span class="preprocessor"> #define JSON_HEDLEY_FLAGS __attribute__((__flag_enum__))</span></div>
|
||
<div class="line"><a name="l01636"></a><span class="lineno"> 1636</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l01637"></a><span class="lineno"> 1637</span>  </div>
|
||
<div class="line"><a name="l01638"></a><span class="lineno"> 1638</span> <span class="preprocessor">#if defined(JSON_HEDLEY_FLAGS_CAST)</span></div>
|
||
<div class="line"><a name="l01639"></a><span class="lineno"> 1639</span> <span class="preprocessor"> #undef JSON_HEDLEY_FLAGS_CAST</span></div>
|
||
<div class="line"><a name="l01640"></a><span class="lineno"> 1640</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l01641"></a><span class="lineno"> 1641</span> <span class="preprocessor">#if JSON_HEDLEY_INTEL_VERSION_CHECK(19,0,0)</span></div>
|
||
<div class="line"><a name="l01642"></a><span class="lineno"> 1642</span> <span class="preprocessor"># define JSON_HEDLEY_FLAGS_CAST(T, expr) (__extension__ ({ \</span></div>
|
||
<div class="line"><a name="l01643"></a><span class="lineno"> 1643</span> <span class="preprocessor"> JSON_HEDLEY_DIAGNOSTIC_PUSH \</span></div>
|
||
<div class="line"><a name="l01644"></a><span class="lineno"> 1644</span> <span class="preprocessor"> _Pragma("warning(disable:188)") \</span></div>
|
||
<div class="line"><a name="l01645"></a><span class="lineno"> 1645</span> <span class="preprocessor"> ((T) (expr)); \</span></div>
|
||
<div class="line"><a name="l01646"></a><span class="lineno"> 1646</span> <span class="preprocessor"> JSON_HEDLEY_DIAGNOSTIC_POP \</span></div>
|
||
<div class="line"><a name="l01647"></a><span class="lineno"> 1647</span> <span class="preprocessor"> }))</span></div>
|
||
<div class="line"><a name="l01648"></a><span class="lineno"> 1648</span> <span class="preprocessor">#else</span></div>
|
||
<div class="line"><a name="l01649"></a><span class="lineno"><a class="line" href="json_8hpp.html#a701eddd8e14dbe617a9ca81b095e88fb"> 1649</a></span> <span class="preprocessor"># define JSON_HEDLEY_FLAGS_CAST(T, expr) JSON_HEDLEY_STATIC_CAST(T, expr)</span></div>
|
||
<div class="line"><a name="l01650"></a><span class="lineno"> 1650</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l01651"></a><span class="lineno"> 1651</span>  </div>
|
||
<div class="line"><a name="l01652"></a><span class="lineno"> 1652</span> <span class="preprocessor">#if defined(JSON_HEDLEY_EMPTY_BASES)</span></div>
|
||
<div class="line"><a name="l01653"></a><span class="lineno"> 1653</span> <span class="preprocessor"> #undef JSON_HEDLEY_EMPTY_BASES</span></div>
|
||
<div class="line"><a name="l01654"></a><span class="lineno"> 1654</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l01655"></a><span class="lineno"> 1655</span> <span class="preprocessor">#if JSON_HEDLEY_MSVC_VERSION_CHECK(19,0,23918) && !JSON_HEDLEY_MSVC_VERSION_CHECK(20,0,0)</span></div>
|
||
<div class="line"><a name="l01656"></a><span class="lineno"> 1656</span> <span class="preprocessor"> #define JSON_HEDLEY_EMPTY_BASES __declspec(empty_bases)</span></div>
|
||
<div class="line"><a name="l01657"></a><span class="lineno"> 1657</span> <span class="preprocessor">#else</span></div>
|
||
<div class="line"><a name="l01658"></a><span class="lineno"><a class="line" href="json_8hpp.html#ae7a983344e78f37697c2688f1885f9e1"> 1658</a></span> <span class="preprocessor"> #define JSON_HEDLEY_EMPTY_BASES</span></div>
|
||
<div class="line"><a name="l01659"></a><span class="lineno"> 1659</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l01660"></a><span class="lineno"> 1660</span>  </div>
|
||
<div class="line"><a name="l01661"></a><span class="lineno"> 1661</span> <span class="comment">/* Remaining macros are deprecated. */</span></div>
|
||
<div class="line"><a name="l01662"></a><span class="lineno"> 1662</span>  </div>
|
||
<div class="line"><a name="l01663"></a><span class="lineno"> 1663</span> <span class="preprocessor">#if defined(JSON_HEDLEY_GCC_NOT_CLANG_VERSION_CHECK)</span></div>
|
||
<div class="line"><a name="l01664"></a><span class="lineno"> 1664</span> <span class="preprocessor"> #undef JSON_HEDLEY_GCC_NOT_CLANG_VERSION_CHECK</span></div>
|
||
<div class="line"><a name="l01665"></a><span class="lineno"> 1665</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l01666"></a><span class="lineno"> 1666</span> <span class="preprocessor">#if defined(__clang__)</span></div>
|
||
<div class="line"><a name="l01667"></a><span class="lineno"> 1667</span> <span class="preprocessor"> #define JSON_HEDLEY_GCC_NOT_CLANG_VERSION_CHECK(major,minor,patch) (0)</span></div>
|
||
<div class="line"><a name="l01668"></a><span class="lineno"> 1668</span> <span class="preprocessor">#else</span></div>
|
||
<div class="line"><a name="l01669"></a><span class="lineno"><a class="line" href="json_8hpp.html#af3737b675cbb70bcdfdaca78c2bc7d4a"> 1669</a></span> <span class="preprocessor"> #define JSON_HEDLEY_GCC_NOT_CLANG_VERSION_CHECK(major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch)</span></div>
|
||
<div class="line"><a name="l01670"></a><span class="lineno"> 1670</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l01671"></a><span class="lineno"> 1671</span>  </div>
|
||
<div class="line"><a name="l01672"></a><span class="lineno"> 1672</span> <span class="preprocessor">#if defined(JSON_HEDLEY_CLANG_HAS_ATTRIBUTE)</span></div>
|
||
<div class="line"><a name="l01673"></a><span class="lineno"> 1673</span> <span class="preprocessor"> #undef JSON_HEDLEY_CLANG_HAS_ATTRIBUTE</span></div>
|
||
<div class="line"><a name="l01674"></a><span class="lineno"> 1674</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l01675"></a><span class="lineno"><a class="line" href="json_8hpp.html#a940783ca9410ed9dbe4f7abf44a29394"> 1675</a></span> <span class="preprocessor">#define JSON_HEDLEY_CLANG_HAS_ATTRIBUTE(attribute) JSON_HEDLEY_HAS_ATTRIBUTE(attribute)</span></div>
|
||
<div class="line"><a name="l01676"></a><span class="lineno"> 1676</span>  </div>
|
||
<div class="line"><a name="l01677"></a><span class="lineno"> 1677</span> <span class="preprocessor">#if defined(JSON_HEDLEY_CLANG_HAS_CPP_ATTRIBUTE)</span></div>
|
||
<div class="line"><a name="l01678"></a><span class="lineno"> 1678</span> <span class="preprocessor"> #undef JSON_HEDLEY_CLANG_HAS_CPP_ATTRIBUTE</span></div>
|
||
<div class="line"><a name="l01679"></a><span class="lineno"> 1679</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l01680"></a><span class="lineno"><a class="line" href="json_8hpp.html#a3ce7b30717e453922113c4f62e645e13"> 1680</a></span> <span class="preprocessor">#define JSON_HEDLEY_CLANG_HAS_CPP_ATTRIBUTE(attribute) JSON_HEDLEY_HAS_CPP_ATTRIBUTE(attribute)</span></div>
|
||
<div class="line"><a name="l01681"></a><span class="lineno"> 1681</span>  </div>
|
||
<div class="line"><a name="l01682"></a><span class="lineno"> 1682</span> <span class="preprocessor">#if defined(JSON_HEDLEY_CLANG_HAS_BUILTIN)</span></div>
|
||
<div class="line"><a name="l01683"></a><span class="lineno"> 1683</span> <span class="preprocessor"> #undef JSON_HEDLEY_CLANG_HAS_BUILTIN</span></div>
|
||
<div class="line"><a name="l01684"></a><span class="lineno"> 1684</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l01685"></a><span class="lineno"><a class="line" href="json_8hpp.html#a4500e349152e53a3a6f0ab95c6a4a840"> 1685</a></span> <span class="preprocessor">#define JSON_HEDLEY_CLANG_HAS_BUILTIN(builtin) JSON_HEDLEY_HAS_BUILTIN(builtin)</span></div>
|
||
<div class="line"><a name="l01686"></a><span class="lineno"> 1686</span>  </div>
|
||
<div class="line"><a name="l01687"></a><span class="lineno"> 1687</span> <span class="preprocessor">#if defined(JSON_HEDLEY_CLANG_HAS_FEATURE)</span></div>
|
||
<div class="line"><a name="l01688"></a><span class="lineno"> 1688</span> <span class="preprocessor"> #undef JSON_HEDLEY_CLANG_HAS_FEATURE</span></div>
|
||
<div class="line"><a name="l01689"></a><span class="lineno"> 1689</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l01690"></a><span class="lineno"><a class="line" href="json_8hpp.html#a096be2083232d3a3ea9f3aeb25885f60"> 1690</a></span> <span class="preprocessor">#define JSON_HEDLEY_CLANG_HAS_FEATURE(feature) JSON_HEDLEY_HAS_FEATURE(feature)</span></div>
|
||
<div class="line"><a name="l01691"></a><span class="lineno"> 1691</span>  </div>
|
||
<div class="line"><a name="l01692"></a><span class="lineno"> 1692</span> <span class="preprocessor">#if defined(JSON_HEDLEY_CLANG_HAS_EXTENSION)</span></div>
|
||
<div class="line"><a name="l01693"></a><span class="lineno"> 1693</span> <span class="preprocessor"> #undef JSON_HEDLEY_CLANG_HAS_EXTENSION</span></div>
|
||
<div class="line"><a name="l01694"></a><span class="lineno"> 1694</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l01695"></a><span class="lineno"><a class="line" href="json_8hpp.html#a8fcc2d27e828fbd8d5ef88ba341e56c0"> 1695</a></span> <span class="preprocessor">#define JSON_HEDLEY_CLANG_HAS_EXTENSION(extension) JSON_HEDLEY_HAS_EXTENSION(extension)</span></div>
|
||
<div class="line"><a name="l01696"></a><span class="lineno"> 1696</span>  </div>
|
||
<div class="line"><a name="l01697"></a><span class="lineno"> 1697</span> <span class="preprocessor">#if defined(JSON_HEDLEY_CLANG_HAS_DECLSPEC_DECLSPEC_ATTRIBUTE)</span></div>
|
||
<div class="line"><a name="l01698"></a><span class="lineno"> 1698</span> <span class="preprocessor"> #undef JSON_HEDLEY_CLANG_HAS_DECLSPEC_DECLSPEC_ATTRIBUTE</span></div>
|
||
<div class="line"><a name="l01699"></a><span class="lineno"> 1699</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l01700"></a><span class="lineno"><a class="line" href="json_8hpp.html#afb4bf1280cd8738877e1f0f681a5d96d"> 1700</a></span> <span class="preprocessor">#define JSON_HEDLEY_CLANG_HAS_DECLSPEC_ATTRIBUTE(attribute) JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE(attribute)</span></div>
|
||
<div class="line"><a name="l01701"></a><span class="lineno"> 1701</span>  </div>
|
||
<div class="line"><a name="l01702"></a><span class="lineno"> 1702</span> <span class="preprocessor">#if defined(JSON_HEDLEY_CLANG_HAS_WARNING)</span></div>
|
||
<div class="line"><a name="l01703"></a><span class="lineno"> 1703</span> <span class="preprocessor"> #undef JSON_HEDLEY_CLANG_HAS_WARNING</span></div>
|
||
<div class="line"><a name="l01704"></a><span class="lineno"> 1704</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l01705"></a><span class="lineno"><a class="line" href="json_8hpp.html#a6125ffd318b2d6698faad4175a6e7c56"> 1705</a></span> <span class="preprocessor">#define JSON_HEDLEY_CLANG_HAS_WARNING(warning) JSON_HEDLEY_HAS_WARNING(warning)</span></div>
|
||
<div class="line"><a name="l01706"></a><span class="lineno"> 1706</span>  </div>
|
||
<div class="line"><a name="l01707"></a><span class="lineno"> 1707</span> <span class="preprocessor">#endif </span><span class="comment">/* !defined(JSON_HEDLEY_VERSION) || (JSON_HEDLEY_VERSION < X) */</span><span class="preprocessor"></span></div>
|
||
<div class="line"><a name="l01708"></a><span class="lineno"> 1708</span>  </div>
|
||
<div class="line"><a name="l01709"></a><span class="lineno"> 1709</span>  </div>
|
||
<div class="line"><a name="l01710"></a><span class="lineno"> 1710</span> <span class="comment">// This file contains all internal macro definitions</span></div>
|
||
<div class="line"><a name="l01711"></a><span class="lineno"> 1711</span> <span class="comment">// You MUST include macro_unscope.hpp at the end of json.hpp to undef all of them</span></div>
|
||
<div class="line"><a name="l01712"></a><span class="lineno"> 1712</span>  </div>
|
||
<div class="line"><a name="l01713"></a><span class="lineno"> 1713</span> <span class="comment">// exclude unsupported compilers</span></div>
|
||
<div class="line"><a name="l01714"></a><span class="lineno"> 1714</span> <span class="preprocessor">#if !defined(JSON_SKIP_UNSUPPORTED_COMPILER_CHECK)</span></div>
|
||
<div class="line"><a name="l01715"></a><span class="lineno"> 1715</span> <span class="preprocessor"> #if defined(__clang__)</span></div>
|
||
<div class="line"><a name="l01716"></a><span class="lineno"> 1716</span> <span class="preprocessor"> #if (__clang_major__ * 10000 + __clang_minor__ * 100 + __clang_patchlevel__) < 30400</span></div>
|
||
<div class="line"><a name="l01717"></a><span class="lineno"> 1717</span> <span class="preprocessor"> #error "unsupported Clang version - see https://github.com/nlohmann/json#supported-compilers"</span></div>
|
||
<div class="line"><a name="l01718"></a><span class="lineno"> 1718</span> <span class="preprocessor"> #endif</span></div>
|
||
<div class="line"><a name="l01719"></a><span class="lineno"> 1719</span> <span class="preprocessor"> #elif defined(__GNUC__) && !(defined(__ICC) || defined(__INTEL_COMPILER))</span></div>
|
||
<div class="line"><a name="l01720"></a><span class="lineno"> 1720</span> <span class="preprocessor"> #if (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) < 40800</span></div>
|
||
<div class="line"><a name="l01721"></a><span class="lineno"> 1721</span> <span class="preprocessor"> #error "unsupported GCC version - see https://github.com/nlohmann/json#supported-compilers"</span></div>
|
||
<div class="line"><a name="l01722"></a><span class="lineno"> 1722</span> <span class="preprocessor"> #endif</span></div>
|
||
<div class="line"><a name="l01723"></a><span class="lineno"> 1723</span> <span class="preprocessor"> #endif</span></div>
|
||
<div class="line"><a name="l01724"></a><span class="lineno"> 1724</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l01725"></a><span class="lineno"> 1725</span>  </div>
|
||
<div class="line"><a name="l01726"></a><span class="lineno"> 1726</span> <span class="comment">// C++ language standard detection</span></div>
|
||
<div class="line"><a name="l01727"></a><span class="lineno"> 1727</span> <span class="preprocessor">#if (defined(__cplusplus) && __cplusplus >= 201703L) || (defined(_HAS_CXX17) && _HAS_CXX17 == 1) // fix for issue #464</span></div>
|
||
<div class="line"><a name="l01728"></a><span class="lineno"> 1728</span> <span class="preprocessor"> #define JSON_HAS_CPP_17</span></div>
|
||
<div class="line"><a name="l01729"></a><span class="lineno"> 1729</span> <span class="preprocessor"> #define JSON_HAS_CPP_14</span></div>
|
||
<div class="line"><a name="l01730"></a><span class="lineno"> 1730</span> <span class="preprocessor">#elif (defined(__cplusplus) && __cplusplus >= 201402L) || (defined(_HAS_CXX14) && _HAS_CXX14 == 1)</span></div>
|
||
<div class="line"><a name="l01731"></a><span class="lineno"> 1731</span> <span class="preprocessor"> #define JSON_HAS_CPP_14</span></div>
|
||
<div class="line"><a name="l01732"></a><span class="lineno"> 1732</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l01733"></a><span class="lineno"> 1733</span>  </div>
|
||
<div class="line"><a name="l01734"></a><span class="lineno"> 1734</span> <span class="comment">// disable float-equal warnings on GCC/clang</span></div>
|
||
<div class="line"><a name="l01735"></a><span class="lineno"> 1735</span> <span class="preprocessor">#if defined(__clang__) || defined(__GNUC__) || defined(__GNUG__)</span></div>
|
||
<div class="line"><a name="l01736"></a><span class="lineno"> 1736</span> <span class="preprocessor"> #pragma GCC diagnostic push</span></div>
|
||
<div class="line"><a name="l01737"></a><span class="lineno"> 1737</span> <span class="preprocessor"> #pragma GCC diagnostic ignored "-Wfloat-equal"</span></div>
|
||
<div class="line"><a name="l01738"></a><span class="lineno"> 1738</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l01739"></a><span class="lineno"> 1739</span>  </div>
|
||
<div class="line"><a name="l01740"></a><span class="lineno"> 1740</span> <span class="comment">// disable documentation warnings on clang</span></div>
|
||
<div class="line"><a name="l01741"></a><span class="lineno"> 1741</span> <span class="preprocessor">#if defined(__clang__)</span></div>
|
||
<div class="line"><a name="l01742"></a><span class="lineno"> 1742</span> <span class="preprocessor"> #pragma GCC diagnostic push</span></div>
|
||
<div class="line"><a name="l01743"></a><span class="lineno"> 1743</span> <span class="preprocessor"> #pragma GCC diagnostic ignored "-Wdocumentation"</span></div>
|
||
<div class="line"><a name="l01744"></a><span class="lineno"> 1744</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l01745"></a><span class="lineno"> 1745</span>  </div>
|
||
<div class="line"><a name="l01746"></a><span class="lineno"> 1746</span> <span class="comment">// allow to disable exceptions</span></div>
|
||
<div class="line"><a name="l01747"></a><span class="lineno"> 1747</span> <span class="preprocessor">#if (defined(__cpp_exceptions) || defined(__EXCEPTIONS) || defined(_CPPUNWIND)) && !defined(JSON_NOEXCEPTION)</span></div>
|
||
<div class="line"><a name="l01748"></a><span class="lineno"> 1748</span> <span class="preprocessor"> #define JSON_THROW(exception) throw exception</span></div>
|
||
<div class="line"><a name="l01749"></a><span class="lineno"> 1749</span> <span class="preprocessor"> #define JSON_TRY try</span></div>
|
||
<div class="line"><a name="l01750"></a><span class="lineno"> 1750</span> <span class="preprocessor"> #define JSON_CATCH(exception) catch(exception)</span></div>
|
||
<div class="line"><a name="l01751"></a><span class="lineno"> 1751</span> <span class="preprocessor"> #define JSON_INTERNAL_CATCH(exception) catch(exception)</span></div>
|
||
<div class="line"><a name="l01752"></a><span class="lineno"> 1752</span> <span class="preprocessor">#else</span></div>
|
||
<div class="line"><a name="l01753"></a><span class="lineno"> 1753</span> <span class="preprocessor"> #include <cstdlib></span></div>
|
||
<div class="line"><a name="l01754"></a><span class="lineno"><a class="line" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f"> 1754</a></span> <span class="preprocessor"> #define JSON_THROW(exception) std::abort()</span></div>
|
||
<div class="line"><a name="l01755"></a><span class="lineno"><a class="line" href="json_8hpp.html#a985d3b82445302c57257f6432f261fe9"> 1755</a></span> <span class="preprocessor"> #define JSON_TRY if(true)</span></div>
|
||
<div class="line"><a name="l01756"></a><span class="lineno"><a class="line" href="json_8hpp.html#a6954bec49ed2a2dfb938c1131c82740a"> 1756</a></span> <span class="preprocessor"> #define JSON_CATCH(exception) if(false)</span></div>
|
||
<div class="line"><a name="l01757"></a><span class="lineno"><a class="line" href="json_8hpp.html#a5478b7564e65634cc69432ed3cb6490e"> 1757</a></span> <span class="preprocessor"> #define JSON_INTERNAL_CATCH(exception) if(false)</span></div>
|
||
<div class="line"><a name="l01758"></a><span class="lineno"> 1758</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l01759"></a><span class="lineno"> 1759</span>  </div>
|
||
<div class="line"><a name="l01760"></a><span class="lineno"> 1760</span> <span class="comment">// override exception macros</span></div>
|
||
<div class="line"><a name="l01761"></a><span class="lineno"> 1761</span> <span class="preprocessor">#if defined(JSON_THROW_USER)</span></div>
|
||
<div class="line"><a name="l01762"></a><span class="lineno"> 1762</span> <span class="preprocessor"> #undef JSON_THROW</span></div>
|
||
<div class="line"><a name="l01763"></a><span class="lineno"> 1763</span> <span class="preprocessor"> #define JSON_THROW JSON_THROW_USER</span></div>
|
||
<div class="line"><a name="l01764"></a><span class="lineno"> 1764</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l01765"></a><span class="lineno"> 1765</span> <span class="preprocessor">#if defined(JSON_TRY_USER)</span></div>
|
||
<div class="line"><a name="l01766"></a><span class="lineno"> 1766</span> <span class="preprocessor"> #undef JSON_TRY</span></div>
|
||
<div class="line"><a name="l01767"></a><span class="lineno"> 1767</span> <span class="preprocessor"> #define JSON_TRY JSON_TRY_USER</span></div>
|
||
<div class="line"><a name="l01768"></a><span class="lineno"> 1768</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l01769"></a><span class="lineno"> 1769</span> <span class="preprocessor">#if defined(JSON_CATCH_USER)</span></div>
|
||
<div class="line"><a name="l01770"></a><span class="lineno"> 1770</span> <span class="preprocessor"> #undef JSON_CATCH</span></div>
|
||
<div class="line"><a name="l01771"></a><span class="lineno"> 1771</span> <span class="preprocessor"> #define JSON_CATCH JSON_CATCH_USER</span></div>
|
||
<div class="line"><a name="l01772"></a><span class="lineno"> 1772</span> <span class="preprocessor"> #undef JSON_INTERNAL_CATCH</span></div>
|
||
<div class="line"><a name="l01773"></a><span class="lineno"> 1773</span> <span class="preprocessor"> #define JSON_INTERNAL_CATCH JSON_CATCH_USER</span></div>
|
||
<div class="line"><a name="l01774"></a><span class="lineno"> 1774</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l01775"></a><span class="lineno"> 1775</span> <span class="preprocessor">#if defined(JSON_INTERNAL_CATCH_USER)</span></div>
|
||
<div class="line"><a name="l01776"></a><span class="lineno"> 1776</span> <span class="preprocessor"> #undef JSON_INTERNAL_CATCH</span></div>
|
||
<div class="line"><a name="l01777"></a><span class="lineno"> 1777</span> <span class="preprocessor"> #define JSON_INTERNAL_CATCH JSON_INTERNAL_CATCH_USER</span></div>
|
||
<div class="line"><a name="l01778"></a><span class="lineno"> 1778</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l01779"></a><span class="lineno"> 1779</span>  </div>
|
||
<div class="line"><a name="l01785"></a><span class="lineno"><a class="line" href="json_8hpp.html#a4c5d399dfa9252e70f876756f3f49084"> 1785</a></span> <span class="preprocessor">#define NLOHMANN_JSON_SERIALIZE_ENUM(ENUM_TYPE, ...) \</span></div>
|
||
<div class="line"><a name="l01786"></a><span class="lineno"> 1786</span> <span class="preprocessor"> template<typename BasicJsonType> \</span></div>
|
||
<div class="line"><a name="l01787"></a><span class="lineno"> 1787</span> <span class="preprocessor"> inline void to_json(BasicJsonType& j, const ENUM_TYPE& e) \</span></div>
|
||
<div class="line"><a name="l01788"></a><span class="lineno"> 1788</span> <span class="preprocessor"> { \</span></div>
|
||
<div class="line"><a name="l01789"></a><span class="lineno"> 1789</span> <span class="preprocessor"> static_assert(std::is_enum<ENUM_TYPE>::value, #ENUM_TYPE " must be an enum!"); \</span></div>
|
||
<div class="line"><a name="l01790"></a><span class="lineno"> 1790</span> <span class="preprocessor"> static const std::pair<ENUM_TYPE, BasicJsonType> m[] = __VA_ARGS__; \</span></div>
|
||
<div class="line"><a name="l01791"></a><span class="lineno"> 1791</span> <span class="preprocessor"> auto it = std::find_if(std::begin(m), std::end(m), \</span></div>
|
||
<div class="line"><a name="l01792"></a><span class="lineno"> 1792</span> <span class="preprocessor"> [e](const std::pair<ENUM_TYPE, BasicJsonType>& ej_pair) -> bool \</span></div>
|
||
<div class="line"><a name="l01793"></a><span class="lineno"> 1793</span> <span class="preprocessor"> { \</span></div>
|
||
<div class="line"><a name="l01794"></a><span class="lineno"> 1794</span> <span class="preprocessor"> return ej_pair.first == e; \</span></div>
|
||
<div class="line"><a name="l01795"></a><span class="lineno"> 1795</span> <span class="preprocessor"> }); \</span></div>
|
||
<div class="line"><a name="l01796"></a><span class="lineno"> 1796</span> <span class="preprocessor"> j = ((it != std::end(m)) ? it : std::begin(m))->second; \</span></div>
|
||
<div class="line"><a name="l01797"></a><span class="lineno"> 1797</span> <span class="preprocessor"> } \</span></div>
|
||
<div class="line"><a name="l01798"></a><span class="lineno"> 1798</span> <span class="preprocessor"> template<typename BasicJsonType> \</span></div>
|
||
<div class="line"><a name="l01799"></a><span class="lineno"> 1799</span> <span class="preprocessor"> inline void from_json(const BasicJsonType& j, ENUM_TYPE& e) \</span></div>
|
||
<div class="line"><a name="l01800"></a><span class="lineno"> 1800</span> <span class="preprocessor"> { \</span></div>
|
||
<div class="line"><a name="l01801"></a><span class="lineno"> 1801</span> <span class="preprocessor"> static_assert(std::is_enum<ENUM_TYPE>::value, #ENUM_TYPE " must be an enum!"); \</span></div>
|
||
<div class="line"><a name="l01802"></a><span class="lineno"> 1802</span> <span class="preprocessor"> static const std::pair<ENUM_TYPE, BasicJsonType> m[] = __VA_ARGS__; \</span></div>
|
||
<div class="line"><a name="l01803"></a><span class="lineno"> 1803</span> <span class="preprocessor"> auto it = std::find_if(std::begin(m), std::end(m), \</span></div>
|
||
<div class="line"><a name="l01804"></a><span class="lineno"> 1804</span> <span class="preprocessor"> [&j](const std::pair<ENUM_TYPE, BasicJsonType>& ej_pair) -> bool \</span></div>
|
||
<div class="line"><a name="l01805"></a><span class="lineno"> 1805</span> <span class="preprocessor"> { \</span></div>
|
||
<div class="line"><a name="l01806"></a><span class="lineno"> 1806</span> <span class="preprocessor"> return ej_pair.second == j; \</span></div>
|
||
<div class="line"><a name="l01807"></a><span class="lineno"> 1807</span> <span class="preprocessor"> }); \</span></div>
|
||
<div class="line"><a name="l01808"></a><span class="lineno"> 1808</span> <span class="preprocessor"> e = ((it != std::end(m)) ? it : std::begin(m))->first; \</span></div>
|
||
<div class="line"><a name="l01809"></a><span class="lineno"> 1809</span> <span class="preprocessor"> }</span></div>
|
||
<div class="line"><a name="l01810"></a><span class="lineno"> 1810</span>  </div>
|
||
<div class="line"><a name="l01811"></a><span class="lineno"> 1811</span> <span class="comment">// Ugly macros to avoid uglier copy-paste when specializing basic_json. They</span></div>
|
||
<div class="line"><a name="l01812"></a><span class="lineno"> 1812</span> <span class="comment">// may be removed in the future once the class is split.</span></div>
|
||
<div class="line"><a name="l01813"></a><span class="lineno"> 1813</span>  </div>
|
||
<div class="line"><a name="l01814"></a><span class="lineno"><a class="line" href="json_8hpp.html#a0643bd74c2dc6f0e4e420b8190ea8f0f"> 1814</a></span> <span class="preprocessor">#define NLOHMANN_BASIC_JSON_TPL_DECLARATION \</span></div>
|
||
<div class="line"><a name="l01815"></a><span class="lineno"> 1815</span> <span class="preprocessor"> template<template<typename, typename, typename...> class ObjectType, \</span></div>
|
||
<div class="line"><a name="l01816"></a><span class="lineno"> 1816</span> <span class="preprocessor"> template<typename, typename...> class ArrayType, \</span></div>
|
||
<div class="line"><a name="l01817"></a><span class="lineno"> 1817</span> <span class="preprocessor"> class StringType, class BooleanType, class NumberIntegerType, \</span></div>
|
||
<div class="line"><a name="l01818"></a><span class="lineno"> 1818</span> <span class="preprocessor"> class NumberUnsignedType, class NumberFloatType, \</span></div>
|
||
<div class="line"><a name="l01819"></a><span class="lineno"> 1819</span> <span class="preprocessor"> template<typename> class AllocatorType, \</span></div>
|
||
<div class="line"><a name="l01820"></a><span class="lineno"> 1820</span> <span class="preprocessor"> template<typename, typename = void> class JSONSerializer></span></div>
|
||
<div class="line"><a name="l01821"></a><span class="lineno"> 1821</span>  </div>
|
||
<div class="line"><a name="l01822"></a><span class="lineno"><a class="line" href="json_8hpp.html#a80b7254e63f199a1f656f07ae551f632"> 1822</a></span> <span class="preprocessor">#define NLOHMANN_BASIC_JSON_TPL \</span></div>
|
||
<div class="line"><a name="l01823"></a><span class="lineno"> 1823</span> <span class="preprocessor"> basic_json<ObjectType, ArrayType, StringType, BooleanType, \</span></div>
|
||
<div class="line"><a name="l01824"></a><span class="lineno"> 1824</span> <span class="preprocessor"> NumberIntegerType, NumberUnsignedType, NumberFloatType, \</span></div>
|
||
<div class="line"><a name="l01825"></a><span class="lineno"> 1825</span> <span class="preprocessor"> AllocatorType, JSONSerializer></span></div>
|
||
<div class="line"><a name="l01826"></a><span class="lineno"> 1826</span>  </div>
|
||
<div class="line"><a name="l01827"></a><span class="lineno"> 1827</span>  </div>
|
||
<div class="line"><a name="l01828"></a><span class="lineno"> 1828</span> <span class="keyword">namespace </span><a class="code" href="namespacenlohmann.html">nlohmann</a></div>
|
||
<div class="line"><a name="l01829"></a><span class="lineno"> 1829</span> {</div>
|
||
<div class="line"><a name="l01830"></a><span class="lineno"> 1830</span> <span class="keyword">namespace </span>detail</div>
|
||
<div class="line"><a name="l01831"></a><span class="lineno"> 1831</span> {</div>
|
||
<div class="line"><a name="l01833"></a><span class="lineno"> 1833</span> <span class="comment">// exceptions //</span></div>
|
||
<div class="line"><a name="l01835"></a><span class="lineno"> 1835</span> <span class="comment"></span> </div>
|
||
<div class="line"><a name="l01864"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1exception.html"> 1864</a></span> <span class="keyword">class </span><a class="code" href="classnlohmann_1_1detail_1_1exception.html">exception</a> : <span class="keyword">public</span> std::exception</div>
|
||
<div class="line"><a name="l01865"></a><span class="lineno"> 1865</span> {</div>
|
||
<div class="line"><a name="l01866"></a><span class="lineno"> 1866</span>  <span class="keyword">public</span>:</div>
|
||
<div class="line"><a name="l01868"></a><span class="lineno"> 1868</span>  <a class="code" href="json_8hpp.html#a5f2aaec3b681d0a72f7d6e90b70cdcd1">JSON_HEDLEY_RETURNS_NON_NULL</a></div>
|
||
<div class="line"><a name="l01869"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1exception.html#a11fe48748e811531614c84883b00ccd5"> 1869</a></span>  <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classnlohmann_1_1detail_1_1exception.html#a11fe48748e811531614c84883b00ccd5">what</a>() const noexcept<span class="keyword"> override</span></div>
|
||
<div class="line"><a name="l01870"></a><span class="lineno"> 1870</span> <span class="keyword"> </span>{</div>
|
||
<div class="line"><a name="l01871"></a><span class="lineno"> 1871</span>  <span class="keywordflow">return</span> m.what();</div>
|
||
<div class="line"><a name="l01872"></a><span class="lineno"> 1872</span>  }</div>
|
||
<div class="line"><a name="l01873"></a><span class="lineno"> 1873</span>  </div>
|
||
<div class="line"><a name="l01875"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1exception.html#a0d4589a3fb54e81646d986c05efa3b9a"> 1875</a></span>  <span class="keyword">const</span> <span class="keywordtype">int</span> <a class="code" href="classnlohmann_1_1detail_1_1exception.html#a0d4589a3fb54e81646d986c05efa3b9a">id</a>;</div>
|
||
<div class="line"><a name="l01876"></a><span class="lineno"> 1876</span>  </div>
|
||
<div class="line"><a name="l01877"></a><span class="lineno"> 1877</span>  <span class="keyword">protected</span>:</div>
|
||
<div class="line"><a name="l01878"></a><span class="lineno"> 1878</span>  <a class="code" href="json_8hpp.html#a5338981b5ad9027c9e54b1c5597f4344">JSON_HEDLEY_NON_NULL</a>(3)</div>
|
||
<div class="line"><a name="l01879"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1exception.html#ae323ad0d53bc724414c2233164e65657"> 1879</a></span>  <a class="code" href="classnlohmann_1_1detail_1_1exception.html">exception</a>(<span class="keywordtype">int</span> id_, const <span class="keywordtype">char</span>* what_arg) : <span class="keywordtype">id</span>(id_), m(what_arg) {}</div>
|
||
<div class="line"><a name="l01880"></a><span class="lineno"> 1880</span>  </div>
|
||
<div class="line"><a name="l01881"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1exception.html#abf41a7e9178356314082284e6cfea278"> 1881</a></span>  <span class="keyword">static</span> std::string <a class="code" href="classnlohmann_1_1detail_1_1exception.html#abf41a7e9178356314082284e6cfea278">name</a>(<span class="keyword">const</span> std::string& ename, <span class="keywordtype">int</span> id_)</div>
|
||
<div class="line"><a name="l01882"></a><span class="lineno"> 1882</span>  {</div>
|
||
<div class="line"><a name="l01883"></a><span class="lineno"> 1883</span>  <span class="keywordflow">return</span> <span class="stringliteral">"[json.exception."</span> + ename + <span class="stringliteral">"."</span> + <a class="code" href="namespacenlohmann.html#a6ce645a0b8717757e096a5b5773b7a16">std::to_string</a>(id_) + <span class="stringliteral">"] "</span>;</div>
|
||
<div class="line"><a name="l01884"></a><span class="lineno"> 1884</span>  }</div>
|
||
<div class="line"><a name="l01885"></a><span class="lineno"> 1885</span>  </div>
|
||
<div class="line"><a name="l01886"></a><span class="lineno"> 1886</span>  <span class="keyword">private</span>:</div>
|
||
<div class="line"><a name="l01888"></a><span class="lineno"> 1888</span>  std::runtime_error m;</div>
|
||
<div class="line"><a name="l01889"></a><span class="lineno"> 1889</span> };</div>
|
||
<div class="line"><a name="l01890"></a><span class="lineno"> 1890</span>  </div>
|
||
<div class="line"><a name="l01935"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1parse__error.html"> 1935</a></span> <span class="keyword">class </span><a class="code" href="classnlohmann_1_1detail_1_1parse__error.html">parse_error</a> : <span class="keyword">public</span> <a class="code" href="classnlohmann_1_1detail_1_1exception.html">exception</a></div>
|
||
<div class="line"><a name="l01936"></a><span class="lineno"> 1936</span> {</div>
|
||
<div class="line"><a name="l01937"></a><span class="lineno"> 1937</span>  <span class="keyword">public</span>:</div>
|
||
<div class="line"><a name="l01947"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1parse__error.html#a137ea4d27de45d8a844fd13451d40f3d"> 1947</a></span>  <span class="keyword">static</span> <a class="code" href="classnlohmann_1_1detail_1_1parse__error.html">parse_error</a> <a class="code" href="classnlohmann_1_1detail_1_1parse__error.html#a137ea4d27de45d8a844fd13451d40f3d">create</a>(<span class="keywordtype">int</span> id_, <span class="keyword">const</span> <a class="code" href="structnlohmann_1_1detail_1_1position__t.html">position_t</a>& pos, <span class="keyword">const</span> std::string& what_arg)</div>
|
||
<div class="line"><a name="l01948"></a><span class="lineno"> 1948</span>  {</div>
|
||
<div class="line"><a name="l01949"></a><span class="lineno"> 1949</span>  std::string w = <a class="code" href="classnlohmann_1_1detail_1_1exception.html#abf41a7e9178356314082284e6cfea278">exception::name</a>(<span class="stringliteral">"parse_error"</span>, id_) + <span class="stringliteral">"parse error"</span> +</div>
|
||
<div class="line"><a name="l01950"></a><span class="lineno"> 1950</span>  position_string(pos) + <span class="stringliteral">": "</span> + what_arg;</div>
|
||
<div class="line"><a name="l01951"></a><span class="lineno"> 1951</span>  <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1detail_1_1parse__error.html">parse_error</a>(id_, pos.<a class="code" href="structnlohmann_1_1detail_1_1position__t.html#a94cf85cd91d478c20ae143eba906ea1a">chars_read_total</a>, w.c_str());</div>
|
||
<div class="line"><a name="l01952"></a><span class="lineno"> 1952</span>  }</div>
|
||
<div class="line"><a name="l01953"></a><span class="lineno"> 1953</span>  </div>
|
||
<div class="line"><a name="l01954"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1parse__error.html#a9fd60ad6bce80fd99686ad332faefd37"> 1954</a></span>  <span class="keyword">static</span> <a class="code" href="classnlohmann_1_1detail_1_1parse__error.html">parse_error</a> <a class="code" href="classnlohmann_1_1detail_1_1parse__error.html#a9fd60ad6bce80fd99686ad332faefd37">create</a>(<span class="keywordtype">int</span> id_, std::size_t byte_, <span class="keyword">const</span> std::string& what_arg)</div>
|
||
<div class="line"><a name="l01955"></a><span class="lineno"> 1955</span>  {</div>
|
||
<div class="line"><a name="l01956"></a><span class="lineno"> 1956</span>  std::string w = <a class="code" href="classnlohmann_1_1detail_1_1exception.html#abf41a7e9178356314082284e6cfea278">exception::name</a>(<span class="stringliteral">"parse_error"</span>, id_) + <span class="stringliteral">"parse error"</span> +</div>
|
||
<div class="line"><a name="l01957"></a><span class="lineno"> 1957</span>  (byte_ != 0 ? (<span class="stringliteral">" at byte "</span> + <a class="code" href="namespacenlohmann.html#a6ce645a0b8717757e096a5b5773b7a16">std::to_string</a>(byte_)) : <span class="stringliteral">""</span>) +</div>
|
||
<div class="line"><a name="l01958"></a><span class="lineno"> 1958</span>  <span class="stringliteral">": "</span> + what_arg;</div>
|
||
<div class="line"><a name="l01959"></a><span class="lineno"> 1959</span>  <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1detail_1_1parse__error.html">parse_error</a>(id_, byte_, w.c_str());</div>
|
||
<div class="line"><a name="l01960"></a><span class="lineno"> 1960</span>  }</div>
|
||
<div class="line"><a name="l01961"></a><span class="lineno"> 1961</span>  </div>
|
||
<div class="line"><a name="l01971"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1parse__error.html#a9505aaa1ca943be927eec7cc579592ff"> 1971</a></span>  <span class="keyword">const</span> std::size_t <a class="code" href="classnlohmann_1_1detail_1_1parse__error.html#a9505aaa1ca943be927eec7cc579592ff">byte</a>;</div>
|
||
<div class="line"><a name="l01972"></a><span class="lineno"> 1972</span>  </div>
|
||
<div class="line"><a name="l01973"></a><span class="lineno"> 1973</span>  <span class="keyword">private</span>:</div>
|
||
<div class="line"><a name="l01974"></a><span class="lineno"> 1974</span>  <a class="code" href="classnlohmann_1_1detail_1_1parse__error.html">parse_error</a>(<span class="keywordtype">int</span> id_, std::size_t byte_, <span class="keyword">const</span> <span class="keywordtype">char</span>* what_arg)</div>
|
||
<div class="line"><a name="l01975"></a><span class="lineno"> 1975</span>  : <a class="code" href="classnlohmann_1_1detail_1_1exception.html">exception</a>(id_, what_arg), <a class="code" href="classnlohmann_1_1detail_1_1parse__error.html#a9505aaa1ca943be927eec7cc579592ff">byte</a>(byte_) {}</div>
|
||
<div class="line"><a name="l01976"></a><span class="lineno"> 1976</span>  </div>
|
||
<div class="line"><a name="l01977"></a><span class="lineno"> 1977</span>  <span class="keyword">static</span> std::string position_string(<span class="keyword">const</span> <a class="code" href="structnlohmann_1_1detail_1_1position__t.html">position_t</a>& pos)</div>
|
||
<div class="line"><a name="l01978"></a><span class="lineno"> 1978</span>  {</div>
|
||
<div class="line"><a name="l01979"></a><span class="lineno"> 1979</span>  <span class="keywordflow">return</span> <span class="stringliteral">" at line "</span> + <a class="code" href="namespacenlohmann.html#a6ce645a0b8717757e096a5b5773b7a16">std::to_string</a>(pos.<a class="code" href="structnlohmann_1_1detail_1_1position__t.html#a4bbad8bc2c0d17c1b61c3ce729908b71">lines_read</a> + 1) +</div>
|
||
<div class="line"><a name="l01980"></a><span class="lineno"> 1980</span>  <span class="stringliteral">", column "</span> + <a class="code" href="namespacenlohmann.html#a6ce645a0b8717757e096a5b5773b7a16">std::to_string</a>(pos.<a class="code" href="structnlohmann_1_1detail_1_1position__t.html#a74df94563dd32102152ceb8c6d9041d8">chars_read_current_line</a>);</div>
|
||
<div class="line"><a name="l01981"></a><span class="lineno"> 1981</span>  }</div>
|
||
<div class="line"><a name="l01982"></a><span class="lineno"> 1982</span> };</div>
|
||
<div class="line"><a name="l01983"></a><span class="lineno"> 1983</span>  </div>
|
||
<div class="line"><a name="l02021"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1invalid__iterator.html"> 2021</a></span> <span class="keyword">class </span><a class="code" href="classnlohmann_1_1detail_1_1invalid__iterator.html">invalid_iterator</a> : <span class="keyword">public</span> <a class="code" href="classnlohmann_1_1detail_1_1exception.html">exception</a></div>
|
||
<div class="line"><a name="l02022"></a><span class="lineno"> 2022</span> {</div>
|
||
<div class="line"><a name="l02023"></a><span class="lineno"> 2023</span>  <span class="keyword">public</span>:</div>
|
||
<div class="line"><a name="l02024"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1invalid__iterator.html#a4e849260a3caa1b288c7e619130c6c09"> 2024</a></span>  <span class="keyword">static</span> <a class="code" href="classnlohmann_1_1detail_1_1invalid__iterator.html">invalid_iterator</a> <a class="code" href="classnlohmann_1_1detail_1_1invalid__iterator.html#a4e849260a3caa1b288c7e619130c6c09">create</a>(<span class="keywordtype">int</span> id_, <span class="keyword">const</span> std::string& what_arg)</div>
|
||
<div class="line"><a name="l02025"></a><span class="lineno"> 2025</span>  {</div>
|
||
<div class="line"><a name="l02026"></a><span class="lineno"> 2026</span>  std::string w = <a class="code" href="classnlohmann_1_1detail_1_1exception.html#abf41a7e9178356314082284e6cfea278">exception::name</a>(<span class="stringliteral">"invalid_iterator"</span>, id_) + what_arg;</div>
|
||
<div class="line"><a name="l02027"></a><span class="lineno"> 2027</span>  <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1detail_1_1invalid__iterator.html">invalid_iterator</a>(id_, w.c_str());</div>
|
||
<div class="line"><a name="l02028"></a><span class="lineno"> 2028</span>  }</div>
|
||
<div class="line"><a name="l02029"></a><span class="lineno"> 2029</span>  </div>
|
||
<div class="line"><a name="l02030"></a><span class="lineno"> 2030</span>  <span class="keyword">private</span>:</div>
|
||
<div class="line"><a name="l02031"></a><span class="lineno"> 2031</span>  <a class="code" href="json_8hpp.html#a5338981b5ad9027c9e54b1c5597f4344">JSON_HEDLEY_NON_NULL</a>(3)</div>
|
||
<div class="line"><a name="l02032"></a><span class="lineno"> 2032</span>  <a class="code" href="classnlohmann_1_1detail_1_1invalid__iterator.html">invalid_iterator</a>(<span class="keywordtype">int</span> id_, const <span class="keywordtype">char</span>* what_arg)</div>
|
||
<div class="line"><a name="l02033"></a><span class="lineno"> 2033</span>  : <a class="code" href="classnlohmann_1_1detail_1_1exception.html">exception</a>(id_, what_arg) {}</div>
|
||
<div class="line"><a name="l02034"></a><span class="lineno"> 2034</span> };</div>
|
||
<div class="line"><a name="l02035"></a><span class="lineno"> 2035</span>  </div>
|
||
<div class="line"><a name="l02075"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1type__error.html"> 2075</a></span> <span class="keyword">class </span><a class="code" href="classnlohmann_1_1detail_1_1type__error.html">type_error</a> : <span class="keyword">public</span> <a class="code" href="classnlohmann_1_1detail_1_1exception.html">exception</a></div>
|
||
<div class="line"><a name="l02076"></a><span class="lineno"> 2076</span> {</div>
|
||
<div class="line"><a name="l02077"></a><span class="lineno"> 2077</span>  <span class="keyword">public</span>:</div>
|
||
<div class="line"><a name="l02078"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f"> 2078</a></span>  <span class="keyword">static</span> <a class="code" href="classnlohmann_1_1detail_1_1type__error.html">type_error</a> <a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">create</a>(<span class="keywordtype">int</span> id_, <span class="keyword">const</span> std::string& what_arg)</div>
|
||
<div class="line"><a name="l02079"></a><span class="lineno"> 2079</span>  {</div>
|
||
<div class="line"><a name="l02080"></a><span class="lineno"> 2080</span>  std::string w = <a class="code" href="classnlohmann_1_1detail_1_1exception.html#abf41a7e9178356314082284e6cfea278">exception::name</a>(<span class="stringliteral">"type_error"</span>, id_) + what_arg;</div>
|
||
<div class="line"><a name="l02081"></a><span class="lineno"> 2081</span>  <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1detail_1_1type__error.html">type_error</a>(id_, w.c_str());</div>
|
||
<div class="line"><a name="l02082"></a><span class="lineno"> 2082</span>  }</div>
|
||
<div class="line"><a name="l02083"></a><span class="lineno"> 2083</span>  </div>
|
||
<div class="line"><a name="l02084"></a><span class="lineno"> 2084</span>  <span class="keyword">private</span>:</div>
|
||
<div class="line"><a name="l02085"></a><span class="lineno"> 2085</span>  <a class="code" href="json_8hpp.html#a5338981b5ad9027c9e54b1c5597f4344">JSON_HEDLEY_NON_NULL</a>(3)</div>
|
||
<div class="line"><a name="l02086"></a><span class="lineno"> 2086</span>  <a class="code" href="classnlohmann_1_1detail_1_1type__error.html">type_error</a>(<span class="keywordtype">int</span> id_, const <span class="keywordtype">char</span>* what_arg) : <a class="code" href="classnlohmann_1_1detail_1_1exception.html">exception</a>(id_, what_arg) {}</div>
|
||
<div class="line"><a name="l02087"></a><span class="lineno"> 2087</span> };</div>
|
||
<div class="line"><a name="l02088"></a><span class="lineno"> 2088</span>  </div>
|
||
<div class="line"><a name="l02122"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1out__of__range.html"> 2122</a></span> <span class="keyword">class </span><a class="code" href="classnlohmann_1_1detail_1_1out__of__range.html">out_of_range</a> : <span class="keyword">public</span> <a class="code" href="classnlohmann_1_1detail_1_1exception.html">exception</a></div>
|
||
<div class="line"><a name="l02123"></a><span class="lineno"> 2123</span> {</div>
|
||
<div class="line"><a name="l02124"></a><span class="lineno"> 2124</span>  <span class="keyword">public</span>:</div>
|
||
<div class="line"><a name="l02125"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1out__of__range.html#a3f6d82a6f967c4728a1ec735a7867073"> 2125</a></span>  <span class="keyword">static</span> <a class="code" href="classnlohmann_1_1detail_1_1out__of__range.html">out_of_range</a> <a class="code" href="classnlohmann_1_1detail_1_1out__of__range.html#a3f6d82a6f967c4728a1ec735a7867073">create</a>(<span class="keywordtype">int</span> id_, <span class="keyword">const</span> std::string& what_arg)</div>
|
||
<div class="line"><a name="l02126"></a><span class="lineno"> 2126</span>  {</div>
|
||
<div class="line"><a name="l02127"></a><span class="lineno"> 2127</span>  std::string w = <a class="code" href="classnlohmann_1_1detail_1_1exception.html#abf41a7e9178356314082284e6cfea278">exception::name</a>(<span class="stringliteral">"out_of_range"</span>, id_) + what_arg;</div>
|
||
<div class="line"><a name="l02128"></a><span class="lineno"> 2128</span>  <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1detail_1_1out__of__range.html">out_of_range</a>(id_, w.c_str());</div>
|
||
<div class="line"><a name="l02129"></a><span class="lineno"> 2129</span>  }</div>
|
||
<div class="line"><a name="l02130"></a><span class="lineno"> 2130</span>  </div>
|
||
<div class="line"><a name="l02131"></a><span class="lineno"> 2131</span>  <span class="keyword">private</span>:</div>
|
||
<div class="line"><a name="l02132"></a><span class="lineno"> 2132</span>  <a class="code" href="json_8hpp.html#a5338981b5ad9027c9e54b1c5597f4344">JSON_HEDLEY_NON_NULL</a>(3)</div>
|
||
<div class="line"><a name="l02133"></a><span class="lineno"> 2133</span>  <a class="code" href="classnlohmann_1_1detail_1_1out__of__range.html">out_of_range</a>(<span class="keywordtype">int</span> id_, const <span class="keywordtype">char</span>* what_arg) : <a class="code" href="classnlohmann_1_1detail_1_1exception.html">exception</a>(id_, what_arg) {}</div>
|
||
<div class="line"><a name="l02134"></a><span class="lineno"> 2134</span> };</div>
|
||
<div class="line"><a name="l02135"></a><span class="lineno"> 2135</span>  </div>
|
||
<div class="line"><a name="l02160"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1other__error.html"> 2160</a></span> <span class="keyword">class </span><a class="code" href="classnlohmann_1_1detail_1_1other__error.html">other_error</a> : <span class="keyword">public</span> <a class="code" href="classnlohmann_1_1detail_1_1exception.html">exception</a></div>
|
||
<div class="line"><a name="l02161"></a><span class="lineno"> 2161</span> {</div>
|
||
<div class="line"><a name="l02162"></a><span class="lineno"> 2162</span>  <span class="keyword">public</span>:</div>
|
||
<div class="line"><a name="l02163"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1other__error.html#a87e8ab894e8c85c0d97a0919782d3683"> 2163</a></span>  <span class="keyword">static</span> <a class="code" href="classnlohmann_1_1detail_1_1other__error.html">other_error</a> <a class="code" href="classnlohmann_1_1detail_1_1other__error.html#a87e8ab894e8c85c0d97a0919782d3683">create</a>(<span class="keywordtype">int</span> id_, <span class="keyword">const</span> std::string& what_arg)</div>
|
||
<div class="line"><a name="l02164"></a><span class="lineno"> 2164</span>  {</div>
|
||
<div class="line"><a name="l02165"></a><span class="lineno"> 2165</span>  std::string w = <a class="code" href="classnlohmann_1_1detail_1_1exception.html#abf41a7e9178356314082284e6cfea278">exception::name</a>(<span class="stringliteral">"other_error"</span>, id_) + what_arg;</div>
|
||
<div class="line"><a name="l02166"></a><span class="lineno"> 2166</span>  <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1detail_1_1other__error.html">other_error</a>(id_, w.c_str());</div>
|
||
<div class="line"><a name="l02167"></a><span class="lineno"> 2167</span>  }</div>
|
||
<div class="line"><a name="l02168"></a><span class="lineno"> 2168</span>  </div>
|
||
<div class="line"><a name="l02169"></a><span class="lineno"> 2169</span>  <span class="keyword">private</span>:</div>
|
||
<div class="line"><a name="l02170"></a><span class="lineno"> 2170</span>  <a class="code" href="json_8hpp.html#a5338981b5ad9027c9e54b1c5597f4344">JSON_HEDLEY_NON_NULL</a>(3)</div>
|
||
<div class="line"><a name="l02171"></a><span class="lineno"> 2171</span>  <a class="code" href="classnlohmann_1_1detail_1_1other__error.html">other_error</a>(<span class="keywordtype">int</span> id_, const <span class="keywordtype">char</span>* what_arg) : <a class="code" href="classnlohmann_1_1detail_1_1exception.html">exception</a>(id_, what_arg) {}</div>
|
||
<div class="line"><a name="l02172"></a><span class="lineno"> 2172</span> };</div>
|
||
<div class="line"><a name="l02173"></a><span class="lineno"> 2173</span> } <span class="comment">// namespace detail</span></div>
|
||
<div class="line"><a name="l02174"></a><span class="lineno"> 2174</span> } <span class="comment">// namespace nlohmann</span></div>
|
||
<div class="line"><a name="l02175"></a><span class="lineno"> 2175</span>  </div>
|
||
<div class="line"><a name="l02176"></a><span class="lineno"> 2176</span> <span class="comment">// #include <nlohmann/detail/macro_scope.hpp></span></div>
|
||
<div class="line"><a name="l02177"></a><span class="lineno"> 2177</span>  </div>
|
||
<div class="line"><a name="l02178"></a><span class="lineno"> 2178</span> <span class="comment">// #include <nlohmann/detail/meta/cpp_future.hpp></span></div>
|
||
<div class="line"><a name="l02179"></a><span class="lineno"> 2179</span>  </div>
|
||
<div class="line"><a name="l02180"></a><span class="lineno"> 2180</span>  </div>
|
||
<div class="line"><a name="l02181"></a><span class="lineno"> 2181</span> <span class="preprocessor">#include <ciso646></span> <span class="comment">// not</span></div>
|
||
<div class="line"><a name="l02182"></a><span class="lineno"> 2182</span> <span class="preprocessor">#include <cstddef></span> <span class="comment">// size_t</span></div>
|
||
<div class="line"><a name="l02183"></a><span class="lineno"> 2183</span> <span class="preprocessor">#include <type_traits></span> <span class="comment">// conditional, enable_if, false_type, integral_constant, is_constructible, is_integral, is_same, remove_cv, remove_reference, true_type</span></div>
|
||
<div class="line"><a name="l02184"></a><span class="lineno"> 2184</span>  </div>
|
||
<div class="line"><a name="l02185"></a><span class="lineno"> 2185</span> <span class="keyword">namespace </span><a class="code" href="namespacenlohmann.html">nlohmann</a></div>
|
||
<div class="line"><a name="l02186"></a><span class="lineno"> 2186</span> {</div>
|
||
<div class="line"><a name="l02187"></a><span class="lineno"> 2187</span> <span class="keyword">namespace </span>detail</div>
|
||
<div class="line"><a name="l02188"></a><span class="lineno"> 2188</span> {</div>
|
||
<div class="line"><a name="l02189"></a><span class="lineno"> 2189</span> <span class="comment">// alias templates to reduce boilerplate</span></div>
|
||
<div class="line"><a name="l02190"></a><span class="lineno"> 2190</span> <span class="keyword">template</span><<span class="keywordtype">bool</span> B, <span class="keyword">typename</span> T = <span class="keywordtype">void</span>></div>
|
||
<div class="line"><a name="l02191"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a02bcbc878bee413f25b985ada771aa9c"> 2191</a></span> <span class="keyword">using</span> <a class="code" href="namespacenlohmann_1_1detail.html#a02bcbc878bee413f25b985ada771aa9c">enable_if_t</a> = <span class="keyword">typename</span> std::enable_if<B, T>::type;</div>
|
||
<div class="line"><a name="l02192"></a><span class="lineno"> 2192</span>  </div>
|
||
<div class="line"><a name="l02193"></a><span class="lineno"> 2193</span> <span class="keyword">template</span><<span class="keyword">typename</span> T></div>
|
||
<div class="line"><a name="l02194"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a53a082eedad9f4729fcd8fed552a21f7"> 2194</a></span> <span class="keyword">using</span> <a class="code" href="namespacenlohmann_1_1detail.html#a53a082eedad9f4729fcd8fed552a21f7">uncvref_t</a> = <span class="keyword">typename</span> std::remove_cv<typename std::remove_reference<T>::type>::type;</div>
|
||
<div class="line"><a name="l02195"></a><span class="lineno"> 2195</span>  </div>
|
||
<div class="line"><a name="l02196"></a><span class="lineno"> 2196</span> <span class="comment">// implementation of C++14 index_sequence and affiliates</span></div>
|
||
<div class="line"><a name="l02197"></a><span class="lineno"> 2197</span> <span class="comment">// source: https://stackoverflow.com/a/32223343</span></div>
|
||
<div class="line"><a name="l02198"></a><span class="lineno"> 2198</span> <span class="keyword">template</span><std::size_t... Ints></div>
|
||
<div class="line"><a name="l02199"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1index__sequence.html"> 2199</a></span> <span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1index__sequence.html">index_sequence</a></div>
|
||
<div class="line"><a name="l02200"></a><span class="lineno"> 2200</span> {</div>
|
||
<div class="line"><a name="l02201"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1index__sequence.html#a3c14c4ab277de72b166806193ff4fa10"> 2201</a></span>  <span class="keyword">using</span> <a class="code" href="structnlohmann_1_1detail_1_1index__sequence.html">type</a> = <a class="code" href="structnlohmann_1_1detail_1_1index__sequence.html">index_sequence</a>;</div>
|
||
<div class="line"><a name="l02202"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1index__sequence.html#a2eca43d08fc1eb68bd5fa75b6714d21d"> 2202</a></span>  <span class="keyword">using</span> <a class="code" href="structnlohmann_1_1detail_1_1index__sequence.html#a2eca43d08fc1eb68bd5fa75b6714d21d">value_type</a> = std::size_t;</div>
|
||
<div class="line"><a name="l02203"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1index__sequence.html#a7ac529419787d775f52408135304b337"> 2203</a></span>  <span class="keyword">static</span> constexpr std::size_t <a class="code" href="structnlohmann_1_1detail_1_1index__sequence.html#a7ac529419787d775f52408135304b337">size</a>() noexcept</div>
|
||
<div class="line"><a name="l02204"></a><span class="lineno"> 2204</span>  {</div>
|
||
<div class="line"><a name="l02205"></a><span class="lineno"> 2205</span>  <span class="keywordflow">return</span> <span class="keyword">sizeof</span>...(Ints);</div>
|
||
<div class="line"><a name="l02206"></a><span class="lineno"> 2206</span>  }</div>
|
||
<div class="line"><a name="l02207"></a><span class="lineno"> 2207</span> };</div>
|
||
<div class="line"><a name="l02208"></a><span class="lineno"> 2208</span>  </div>
|
||
<div class="line"><a name="l02209"></a><span class="lineno"> 2209</span> <span class="keyword">template</span><<span class="keyword">class</span> Sequence1, <span class="keyword">class</span> Sequence2></div>
|
||
<div class="line"><a name="l02210"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1merge__and__renumber.html"> 2210</a></span> <span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1merge__and__renumber.html">merge_and_renumber</a>;</div>
|
||
<div class="line"><a name="l02211"></a><span class="lineno"> 2211</span>  </div>
|
||
<div class="line"><a name="l02212"></a><span class="lineno"> 2212</span> <span class="keyword">template</span><std::size_t... I1, std::size_t... I2></div>
|
||
<div class="line"><a name="l02213"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1merge__and__renumber_3_01index__sequence_3_01I1_8_8_8_01_4_00_01inde4885d6f1d93a04f25932afbd429c4793.html"> 2213</a></span> <span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1merge__and__renumber.html">merge_and_renumber</a><<a class="code" href="structnlohmann_1_1detail_1_1index__sequence.html">index_sequence</a><I1...>, <a class="code" href="structnlohmann_1_1detail_1_1index__sequence.html">index_sequence</a><I2...>></div>
|
||
<div class="line"><a name="l02214"></a><span class="lineno"> 2214</span>  : <a class="code" href="structnlohmann_1_1detail_1_1index__sequence.html">index_sequence</a> < I1..., (sizeof...(I1) + I2)... > {};</div>
|
||
<div class="line"><a name="l02215"></a><span class="lineno"> 2215</span>  </div>
|
||
<div class="line"><a name="l02216"></a><span class="lineno"> 2216</span> <span class="keyword">template</span><std::<span class="keywordtype">size_t</span> N></div>
|
||
<div class="line"><a name="l02217"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1make__index__sequence.html"> 2217</a></span> <span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1make__index__sequence.html">make_index_sequence</a></div>
|
||
<div class="line"><a name="l02218"></a><span class="lineno"> 2218</span>  : <a class="code" href="structnlohmann_1_1detail_1_1merge__and__renumber.html">merge_and_renumber</a> < typename make_index_sequence < N / 2 >::type,</div>
|
||
<div class="line"><a name="l02219"></a><span class="lineno"> 2219</span>  typename make_index_sequence < N - N / 2 >::type > {};</div>
|
||
<div class="line"><a name="l02220"></a><span class="lineno"> 2220</span>  </div>
|
||
<div class="line"><a name="l02221"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1make__index__sequence_3_010_01_4.html"> 2221</a></span> <span class="keyword">template</span><> <span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1make__index__sequence.html">make_index_sequence</a><0> : <a class="code" href="structnlohmann_1_1detail_1_1index__sequence.html">index_sequence</a><> {};</div>
|
||
<div class="line"><a name="l02222"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1make__index__sequence_3_011_01_4.html"> 2222</a></span> <span class="keyword">template</span><> <span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1make__index__sequence.html">make_index_sequence</a><1> : <a class="code" href="structnlohmann_1_1detail_1_1index__sequence.html">index_sequence</a><0> {};</div>
|
||
<div class="line"><a name="l02223"></a><span class="lineno"> 2223</span>  </div>
|
||
<div class="line"><a name="l02224"></a><span class="lineno"> 2224</span> <span class="keyword">template</span><<span class="keyword">typename</span>... Ts></div>
|
||
<div class="line"><a name="l02225"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a24800493c6ec02ce033dcbb47b7fd28e"> 2225</a></span> <span class="keyword">using</span> <a class="code" href="structnlohmann_1_1detail_1_1make__index__sequence.html">index_sequence_for</a> = <a class="code" href="structnlohmann_1_1detail_1_1make__index__sequence.html">make_index_sequence</a><<span class="keyword">sizeof</span>...(Ts)>;</div>
|
||
<div class="line"><a name="l02226"></a><span class="lineno"> 2226</span>  </div>
|
||
<div class="line"><a name="l02227"></a><span class="lineno"> 2227</span> <span class="comment">// dispatch utility (taken from ranges-v3)</span></div>
|
||
<div class="line"><a name="l02228"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1priority__tag.html"> 2228</a></span> <span class="keyword">template</span><<span class="keywordtype">unsigned</span> N> <span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1priority__tag.html">priority_tag</a> : <a class="code" href="structnlohmann_1_1detail_1_1priority__tag.html">priority_tag</a> < N - 1 > {};</div>
|
||
<div class="line"><a name="l02229"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1priority__tag_3_010_01_4.html"> 2229</a></span> <span class="keyword">template</span><> <span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1priority__tag.html">priority_tag</a><0> {};</div>
|
||
<div class="line"><a name="l02230"></a><span class="lineno"> 2230</span>  </div>
|
||
<div class="line"><a name="l02231"></a><span class="lineno"> 2231</span> <span class="comment">// taken from ranges-v3</span></div>
|
||
<div class="line"><a name="l02232"></a><span class="lineno"> 2232</span> <span class="keyword">template</span><<span class="keyword">typename</span> T></div>
|
||
<div class="line"><a name="l02233"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1static__const.html"> 2233</a></span> <span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1static__const.html">static_const</a></div>
|
||
<div class="line"><a name="l02234"></a><span class="lineno"> 2234</span> {</div>
|
||
<div class="line"><a name="l02235"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1static__const.html#a6bb7ab2ddd6abc41fb4ffb7c6dfa237e"> 2235</a></span>  <span class="keyword">static</span> constexpr T <a class="code" href="structnlohmann_1_1detail_1_1static__const.html#a6bb7ab2ddd6abc41fb4ffb7c6dfa237e">value</a>{};</div>
|
||
<div class="line"><a name="l02236"></a><span class="lineno"> 2236</span> };</div>
|
||
<div class="line"><a name="l02237"></a><span class="lineno"> 2237</span>  </div>
|
||
<div class="line"><a name="l02238"></a><span class="lineno"> 2238</span> <span class="keyword">template</span><<span class="keyword">typename</span> T></div>
|
||
<div class="line"><a name="l02239"></a><span class="lineno"> 2239</span> constexpr T <a class="code" href="structnlohmann_1_1detail_1_1static__const.html#a6bb7ab2ddd6abc41fb4ffb7c6dfa237e">static_const<T>::value</a>;</div>
|
||
<div class="line"><a name="l02240"></a><span class="lineno"> 2240</span> } <span class="comment">// namespace detail</span></div>
|
||
<div class="line"><a name="l02241"></a><span class="lineno"> 2241</span> } <span class="comment">// namespace nlohmann</span></div>
|
||
<div class="line"><a name="l02242"></a><span class="lineno"> 2242</span>  </div>
|
||
<div class="line"><a name="l02243"></a><span class="lineno"> 2243</span> <span class="comment">// #include <nlohmann/detail/meta/type_traits.hpp></span></div>
|
||
<div class="line"><a name="l02244"></a><span class="lineno"> 2244</span>  </div>
|
||
<div class="line"><a name="l02245"></a><span class="lineno"> 2245</span>  </div>
|
||
<div class="line"><a name="l02246"></a><span class="lineno"> 2246</span> <span class="preprocessor">#include <ciso646></span> <span class="comment">// not</span></div>
|
||
<div class="line"><a name="l02247"></a><span class="lineno"> 2247</span> <span class="preprocessor">#include <limits></span> <span class="comment">// numeric_limits</span></div>
|
||
<div class="line"><a name="l02248"></a><span class="lineno"> 2248</span> <span class="preprocessor">#include <type_traits></span> <span class="comment">// false_type, is_constructible, is_integral, is_same, true_type</span></div>
|
||
<div class="line"><a name="l02249"></a><span class="lineno"> 2249</span> <span class="preprocessor">#include <utility></span> <span class="comment">// declval</span></div>
|
||
<div class="line"><a name="l02250"></a><span class="lineno"> 2250</span>  </div>
|
||
<div class="line"><a name="l02251"></a><span class="lineno"> 2251</span> <span class="comment">// #include <nlohmann/detail/iterators/iterator_traits.hpp></span></div>
|
||
<div class="line"><a name="l02252"></a><span class="lineno"> 2252</span>  </div>
|
||
<div class="line"><a name="l02253"></a><span class="lineno"> 2253</span>  </div>
|
||
<div class="line"><a name="l02254"></a><span class="lineno"> 2254</span> <span class="preprocessor">#include <iterator></span> <span class="comment">// random_access_iterator_tag</span></div>
|
||
<div class="line"><a name="l02255"></a><span class="lineno"> 2255</span>  </div>
|
||
<div class="line"><a name="l02256"></a><span class="lineno"> 2256</span> <span class="comment">// #include <nlohmann/detail/meta/void_t.hpp></span></div>
|
||
<div class="line"><a name="l02257"></a><span class="lineno"> 2257</span>  </div>
|
||
<div class="line"><a name="l02258"></a><span class="lineno"> 2258</span>  </div>
|
||
<div class="line"><a name="l02259"></a><span class="lineno"> 2259</span> <span class="keyword">namespace </span><a class="code" href="namespacenlohmann.html">nlohmann</a></div>
|
||
<div class="line"><a name="l02260"></a><span class="lineno"> 2260</span> {</div>
|
||
<div class="line"><a name="l02261"></a><span class="lineno"> 2261</span> <span class="keyword">namespace </span>detail</div>
|
||
<div class="line"><a name="l02262"></a><span class="lineno"> 2262</span> {</div>
|
||
<div class="line"><a name="l02263"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1make__void.html"> 2263</a></span> <span class="keyword">template</span> <<span class="keyword">typename</span> ...Ts> <span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1make__void.html">make_void</a></div>
|
||
<div class="line"><a name="l02264"></a><span class="lineno"> 2264</span> {</div>
|
||
<div class="line"><a name="l02265"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1make__void.html#a8961e24ae3b2cb65ec47d1ce805d94e4"> 2265</a></span>  <span class="keyword">using</span> <a class="code" href="structnlohmann_1_1detail_1_1make__void.html#a8961e24ae3b2cb65ec47d1ce805d94e4">type</a> = <a class="code" href="namespacenlohmann_1_1detail.html#a59fca69799f6b9e366710cb9043aa77d">void</a>;</div>
|
||
<div class="line"><a name="l02266"></a><span class="lineno"> 2266</span> };</div>
|
||
<div class="line"><a name="l02267"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a92a167c49c6697b6ffe4f79492c705e5"> 2267</a></span> <span class="keyword">template</span> <<span class="keyword">typename</span> ...Ts> <span class="keyword">using</span> <a class="code" href="namespacenlohmann_1_1detail.html#a92a167c49c6697b6ffe4f79492c705e5">void_t</a> = <span class="keyword">typename</span> <a class="code" href="structnlohmann_1_1detail_1_1make__void.html">make_void</a><Ts...>::type;</div>
|
||
<div class="line"><a name="l02268"></a><span class="lineno"> 2268</span> } <span class="comment">// namespace detail</span></div>
|
||
<div class="line"><a name="l02269"></a><span class="lineno"> 2269</span> } <span class="comment">// namespace nlohmann</span></div>
|
||
<div class="line"><a name="l02270"></a><span class="lineno"> 2270</span>  </div>
|
||
<div class="line"><a name="l02271"></a><span class="lineno"> 2271</span> <span class="comment">// #include <nlohmann/detail/meta/cpp_future.hpp></span></div>
|
||
<div class="line"><a name="l02272"></a><span class="lineno"> 2272</span>  </div>
|
||
<div class="line"><a name="l02273"></a><span class="lineno"> 2273</span>  </div>
|
||
<div class="line"><a name="l02274"></a><span class="lineno"> 2274</span> <span class="keyword">namespace </span><a class="code" href="namespacenlohmann.html">nlohmann</a></div>
|
||
<div class="line"><a name="l02275"></a><span class="lineno"> 2275</span> {</div>
|
||
<div class="line"><a name="l02276"></a><span class="lineno"> 2276</span> <span class="keyword">namespace </span>detail</div>
|
||
<div class="line"><a name="l02277"></a><span class="lineno"> 2277</span> {</div>
|
||
<div class="line"><a name="l02278"></a><span class="lineno"> 2278</span> <span class="keyword">template</span> <<span class="keyword">typename</span> It, <span class="keyword">typename</span> = <span class="keywordtype">void</span>></div>
|
||
<div class="line"><a name="l02279"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1iterator__types.html"> 2279</a></span> <span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1iterator__types.html">iterator_types</a> {};</div>
|
||
<div class="line"><a name="l02280"></a><span class="lineno"> 2280</span>  </div>
|
||
<div class="line"><a name="l02281"></a><span class="lineno"> 2281</span> <span class="keyword">template</span> <<span class="keyword">typename</span> It></div>
|
||
<div class="line"><a name="l02282"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1iterator__types_3_01It_00_01void__t_3_01typename_01It_1_1difference_d2be8685966c97e00e99d4fd2366dc0b.html"> 2282</a></span> <span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1iterator__types.html">iterator_types</a> <</div>
|
||
<div class="line"><a name="l02283"></a><span class="lineno"> 2283</span>  It,</div>
|
||
<div class="line"><a name="l02284"></a><span class="lineno"> 2284</span>  <a class="code" href="namespacenlohmann_1_1detail.html#a92a167c49c6697b6ffe4f79492c705e5">void_t</a><typename It::<a class="code" href="structnlohmann_1_1detail_1_1iterator__types_3_01It_00_01void__t_3_01typename_01It_1_1difference_d2be8685966c97e00e99d4fd2366dc0b.html#a1ce16c1c8c1d6a195f5a3d3ad31820f0">difference_type</a>, typename It::value_type, typename It::pointer,</div>
|
||
<div class="line"><a name="l02285"></a><span class="lineno"> 2285</span>  typename It::reference, typename It::iterator_category >></div>
|
||
<div class="line"><a name="l02286"></a><span class="lineno"> 2286</span> {</div>
|
||
<div class="line"><a name="l02287"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1iterator__types_3_01It_00_01void__t_3_01typename_01It_1_1difference_d2be8685966c97e00e99d4fd2366dc0b.html#a1ce16c1c8c1d6a195f5a3d3ad31820f0"> 2287</a></span>  <span class="keyword">using</span> <a class="code" href="structnlohmann_1_1detail_1_1iterator__types_3_01It_00_01void__t_3_01typename_01It_1_1difference_d2be8685966c97e00e99d4fd2366dc0b.html#a1ce16c1c8c1d6a195f5a3d3ad31820f0">difference_type</a> = <span class="keyword">typename</span> It::difference_type;</div>
|
||
<div class="line"><a name="l02288"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1iterator__types_3_01It_00_01void__t_3_01typename_01It_1_1difference_d2be8685966c97e00e99d4fd2366dc0b.html#ac70fcab4cacd8b386c3f2b056885e15e"> 2288</a></span>  <span class="keyword">using</span> <a class="code" href="structnlohmann_1_1detail_1_1iterator__types_3_01It_00_01void__t_3_01typename_01It_1_1difference_d2be8685966c97e00e99d4fd2366dc0b.html#ac70fcab4cacd8b386c3f2b056885e15e">value_type</a> = <span class="keyword">typename</span> It::value_type;</div>
|
||
<div class="line"><a name="l02289"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1iterator__types_3_01It_00_01void__t_3_01typename_01It_1_1difference_d2be8685966c97e00e99d4fd2366dc0b.html#aacaf73dc959b7c2119c15e53b5ce00a3"> 2289</a></span>  <span class="keyword">using</span> <a class="code" href="structnlohmann_1_1detail_1_1iterator__types_3_01It_00_01void__t_3_01typename_01It_1_1difference_d2be8685966c97e00e99d4fd2366dc0b.html#aacaf73dc959b7c2119c15e53b5ce00a3">pointer</a> = <span class="keyword">typename</span> It::pointer;</div>
|
||
<div class="line"><a name="l02290"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1iterator__types_3_01It_00_01void__t_3_01typename_01It_1_1difference_d2be8685966c97e00e99d4fd2366dc0b.html#a5e82d2d8dabd022b8ff916f2e83a82f2"> 2290</a></span>  <span class="keyword">using</span> <a class="code" href="structnlohmann_1_1detail_1_1iterator__types_3_01It_00_01void__t_3_01typename_01It_1_1difference_d2be8685966c97e00e99d4fd2366dc0b.html#a5e82d2d8dabd022b8ff916f2e83a82f2">reference</a> = <span class="keyword">typename</span> It::reference;</div>
|
||
<div class="line"><a name="l02291"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1iterator__types_3_01It_00_01void__t_3_01typename_01It_1_1difference_d2be8685966c97e00e99d4fd2366dc0b.html#aaaafbcd0573ec9cfc5d19411950dc1ac"> 2291</a></span>  <span class="keyword">using</span> <a class="code" href="structnlohmann_1_1detail_1_1iterator__types_3_01It_00_01void__t_3_01typename_01It_1_1difference_d2be8685966c97e00e99d4fd2366dc0b.html#aaaafbcd0573ec9cfc5d19411950dc1ac">iterator_category</a> = <span class="keyword">typename</span> It::iterator_category;</div>
|
||
<div class="line"><a name="l02292"></a><span class="lineno"> 2292</span> };</div>
|
||
<div class="line"><a name="l02293"></a><span class="lineno"> 2293</span>  </div>
|
||
<div class="line"><a name="l02294"></a><span class="lineno"> 2294</span> <span class="comment">// This is required as some compilers implement std::iterator_traits in a way that</span></div>
|
||
<div class="line"><a name="l02295"></a><span class="lineno"> 2295</span> <span class="comment">// doesn't work with SFINAE. See https://github.com/nlohmann/json/issues/1341.</span></div>
|
||
<div class="line"><a name="l02296"></a><span class="lineno"> 2296</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T, <span class="keyword">typename</span> = <span class="keywordtype">void</span>></div>
|
||
<div class="line"><a name="l02297"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1iterator__traits.html"> 2297</a></span> <span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1iterator__traits.html">iterator_traits</a></div>
|
||
<div class="line"><a name="l02298"></a><span class="lineno"> 2298</span> {</div>
|
||
<div class="line"><a name="l02299"></a><span class="lineno"> 2299</span> };</div>
|
||
<div class="line"><a name="l02300"></a><span class="lineno"> 2300</span>  </div>
|
||
<div class="line"><a name="l02301"></a><span class="lineno"> 2301</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T></div>
|
||
<div class="line"><a name="l02302"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1iterator__traits_3_01T_00_01enable__if__t_3_01_9std_1_1is__pointer_3_01T_01_4_1_1value_01_4_01_4.html"> 2302</a></span> <span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1iterator__traits.html">iterator_traits</a> < T, <a class="code" href="namespacenlohmann_1_1detail.html#a02bcbc878bee413f25b985ada771aa9c">enable_if_t</a> < !<a class="code" href="namespacestd.html">std</a>::is_pointer<T>::value >></div>
|
||
<div class="line"><a name="l02303"></a><span class="lineno"> 2303</span>  : <a class="code" href="structnlohmann_1_1detail_1_1iterator__types.html">iterator_types</a><T></div>
|
||
<div class="line"><a name="l02304"></a><span class="lineno"> 2304</span> {</div>
|
||
<div class="line"><a name="l02305"></a><span class="lineno"> 2305</span> };</div>
|
||
<div class="line"><a name="l02306"></a><span class="lineno"> 2306</span>  </div>
|
||
<div class="line"><a name="l02307"></a><span class="lineno"> 2307</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T></div>
|
||
<div class="line"><a name="l02308"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1iterator__traits_3_01T_01_5_00_01enable__if__t_3_01std_1_1is__object_3_01T_01_4_1_1value_01_4_01_4.html"> 2308</a></span> <span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1iterator__traits.html">iterator_traits</a><T*, <a class="code" href="namespacenlohmann_1_1detail.html#a02bcbc878bee413f25b985ada771aa9c">enable_if_t<std::is_object<T>::value</a>>></div>
|
||
<div class="line"><a name="l02309"></a><span class="lineno"> 2309</span> {</div>
|
||
<div class="line"><a name="l02310"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1iterator__traits_3_01T_01_5_00_01enable__if__t_3_01std_1_1is__object_3_01T_01_4_1_1value_01_4_01_4.html#a9b043cfe0fdfb3e9665428fb2be9cea1"> 2310</a></span>  <span class="keyword">using</span> <a class="code" href="structnlohmann_1_1detail_1_1iterator__traits_3_01T_01_5_00_01enable__if__t_3_01std_1_1is__object_3_01T_01_4_1_1value_01_4_01_4.html#a9b043cfe0fdfb3e9665428fb2be9cea1">iterator_category</a> = std::random_access_iterator_tag;</div>
|
||
<div class="line"><a name="l02311"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1iterator__traits_3_01T_01_5_00_01enable__if__t_3_01std_1_1is__object_3_01T_01_4_1_1value_01_4_01_4.html#a443e6a62f5fb2c545fc71c751b98ca8d"> 2311</a></span>  <span class="keyword">using</span> <a class="code" href="structnlohmann_1_1detail_1_1iterator__traits_3_01T_01_5_00_01enable__if__t_3_01std_1_1is__object_3_01T_01_4_1_1value_01_4_01_4.html#a443e6a62f5fb2c545fc71c751b98ca8d">value_type</a> = T;</div>
|
||
<div class="line"><a name="l02312"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1iterator__traits_3_01T_01_5_00_01enable__if__t_3_01std_1_1is__object_3_01T_01_4_1_1value_01_4_01_4.html#ae7be99eb434f5b5f34692874c272b759"> 2312</a></span>  <span class="keyword">using</span> <a class="code" href="structnlohmann_1_1detail_1_1iterator__traits_3_01T_01_5_00_01enable__if__t_3_01std_1_1is__object_3_01T_01_4_1_1value_01_4_01_4.html#ae7be99eb434f5b5f34692874c272b759">difference_type</a> = ptrdiff_t;</div>
|
||
<div class="line"><a name="l02313"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1iterator__traits_3_01T_01_5_00_01enable__if__t_3_01std_1_1is__object_3_01T_01_4_1_1value_01_4_01_4.html#a33ee9a1beb8ee099f989fd4af15178a5"> 2313</a></span>  <span class="keyword">using</span> <a class="code" href="structnlohmann_1_1detail_1_1iterator__traits_3_01T_01_5_00_01enable__if__t_3_01std_1_1is__object_3_01T_01_4_1_1value_01_4_01_4.html#a33ee9a1beb8ee099f989fd4af15178a5">pointer</a> = T*;</div>
|
||
<div class="line"><a name="l02314"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1iterator__traits_3_01T_01_5_00_01enable__if__t_3_01std_1_1is__object_3_01T_01_4_1_1value_01_4_01_4.html#a0809c5949d22f08a993231d2fdf285f0"> 2314</a></span>  <span class="keyword">using</span> <a class="code" href="structnlohmann_1_1detail_1_1iterator__traits_3_01T_01_5_00_01enable__if__t_3_01std_1_1is__object_3_01T_01_4_1_1value_01_4_01_4.html#a0809c5949d22f08a993231d2fdf285f0">reference</a> = T&;</div>
|
||
<div class="line"><a name="l02315"></a><span class="lineno"> 2315</span> };</div>
|
||
<div class="line"><a name="l02316"></a><span class="lineno"> 2316</span> } <span class="comment">// namespace detail</span></div>
|
||
<div class="line"><a name="l02317"></a><span class="lineno"> 2317</span> } <span class="comment">// namespace nlohmann</span></div>
|
||
<div class="line"><a name="l02318"></a><span class="lineno"> 2318</span>  </div>
|
||
<div class="line"><a name="l02319"></a><span class="lineno"> 2319</span> <span class="comment">// #include <nlohmann/detail/macro_scope.hpp></span></div>
|
||
<div class="line"><a name="l02320"></a><span class="lineno"> 2320</span>  </div>
|
||
<div class="line"><a name="l02321"></a><span class="lineno"> 2321</span> <span class="comment">// #include <nlohmann/detail/meta/cpp_future.hpp></span></div>
|
||
<div class="line"><a name="l02322"></a><span class="lineno"> 2322</span>  </div>
|
||
<div class="line"><a name="l02323"></a><span class="lineno"> 2323</span> <span class="comment">// #include <nlohmann/detail/meta/detected.hpp></span></div>
|
||
<div class="line"><a name="l02324"></a><span class="lineno"> 2324</span>  </div>
|
||
<div class="line"><a name="l02325"></a><span class="lineno"> 2325</span>  </div>
|
||
<div class="line"><a name="l02326"></a><span class="lineno"> 2326</span> <span class="preprocessor">#include <type_traits></span></div>
|
||
<div class="line"><a name="l02327"></a><span class="lineno"> 2327</span>  </div>
|
||
<div class="line"><a name="l02328"></a><span class="lineno"> 2328</span> <span class="comment">// #include <nlohmann/detail/meta/void_t.hpp></span></div>
|
||
<div class="line"><a name="l02329"></a><span class="lineno"> 2329</span>  </div>
|
||
<div class="line"><a name="l02330"></a><span class="lineno"> 2330</span>  </div>
|
||
<div class="line"><a name="l02331"></a><span class="lineno"> 2331</span> <span class="comment">// http://en.cppreference.com/w/cpp/experimental/is_detected</span></div>
|
||
<div class="line"><a name="l02332"></a><span class="lineno"> 2332</span> <span class="keyword">namespace </span><a class="code" href="namespacenlohmann.html">nlohmann</a></div>
|
||
<div class="line"><a name="l02333"></a><span class="lineno"> 2333</span> {</div>
|
||
<div class="line"><a name="l02334"></a><span class="lineno"> 2334</span> <span class="keyword">namespace </span>detail</div>
|
||
<div class="line"><a name="l02335"></a><span class="lineno"> 2335</span> {</div>
|
||
<div class="line"><a name="l02336"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1nonesuch.html"> 2336</a></span> <span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1nonesuch.html">nonesuch</a></div>
|
||
<div class="line"><a name="l02337"></a><span class="lineno"> 2337</span> {</div>
|
||
<div class="line"><a name="l02338"></a><span class="lineno"> 2338</span>  <a class="code" href="structnlohmann_1_1detail_1_1nonesuch.html#a6fe87da966856c6cb06617940d90f010">nonesuch</a>() = <span class="keyword">delete</span>;</div>
|
||
<div class="line"><a name="l02339"></a><span class="lineno"> 2339</span>  <a class="code" href="structnlohmann_1_1detail_1_1nonesuch.html#a7b1119845860e548b67f1644a2084373">~nonesuch</a>() = <span class="keyword">delete</span>;</div>
|
||
<div class="line"><a name="l02340"></a><span class="lineno"> 2340</span>  <a class="code" href="structnlohmann_1_1detail_1_1nonesuch.html#a6fe87da966856c6cb06617940d90f010">nonesuch</a>(<a class="code" href="structnlohmann_1_1detail_1_1nonesuch.html">nonesuch</a> <span class="keyword">const</span>&) = <span class="keyword">delete</span>;</div>
|
||
<div class="line"><a name="l02341"></a><span class="lineno"> 2341</span>  <a class="code" href="structnlohmann_1_1detail_1_1nonesuch.html#a6fe87da966856c6cb06617940d90f010">nonesuch</a>(<a class="code" href="structnlohmann_1_1detail_1_1nonesuch.html">nonesuch</a> <span class="keyword">const</span>&&) = <span class="keyword">delete</span>;</div>
|
||
<div class="line"><a name="l02342"></a><span class="lineno"> 2342</span>  <span class="keywordtype">void</span> <a class="code" href="structnlohmann_1_1detail_1_1nonesuch.html#add6ef84c52a851e391cef514c85f2ffe">operator=</a>(<a class="code" href="structnlohmann_1_1detail_1_1nonesuch.html">nonesuch</a> <span class="keyword">const</span>&) = <span class="keyword">delete</span>;</div>
|
||
<div class="line"><a name="l02343"></a><span class="lineno"> 2343</span>  <span class="keywordtype">void</span> <a class="code" href="structnlohmann_1_1detail_1_1nonesuch.html#add6ef84c52a851e391cef514c85f2ffe">operator=</a>(<a class="code" href="structnlohmann_1_1detail_1_1nonesuch.html">nonesuch</a>&&) = <span class="keyword">delete</span>;</div>
|
||
<div class="line"><a name="l02344"></a><span class="lineno"> 2344</span> };</div>
|
||
<div class="line"><a name="l02345"></a><span class="lineno"> 2345</span>  </div>
|
||
<div class="line"><a name="l02346"></a><span class="lineno"> 2346</span> <span class="keyword">template</span> <<span class="keyword">class </span>Default,</div>
|
||
<div class="line"><a name="l02347"></a><span class="lineno"> 2347</span>  <span class="keyword">class </span>AlwaysVoid,</div>
|
||
<div class="line"><a name="l02348"></a><span class="lineno"> 2348</span>  <span class="keyword">template</span> <<span class="keyword">class</span>...> <span class="keyword">class </span>Op,</div>
|
||
<div class="line"><a name="l02349"></a><span class="lineno"> 2349</span>  <span class="keyword">class</span>... Args></div>
|
||
<div class="line"><a name="l02350"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1detector.html"> 2350</a></span> <span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1detector.html">detector</a></div>
|
||
<div class="line"><a name="l02351"></a><span class="lineno"> 2351</span> {</div>
|
||
<div class="line"><a name="l02352"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1detector.html#a5a132aab543d1706e2439268faf8d487"> 2352</a></span>  <span class="keyword">using</span> <a class="code" href="structnlohmann_1_1detail_1_1detector.html#a5a132aab543d1706e2439268faf8d487">value_t</a> = std::false_type;</div>
|
||
<div class="line"><a name="l02353"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1detector.html#a0cd69423587748bf3d3d702cc7b7c2ce"> 2353</a></span>  <span class="keyword">using</span> <a class="code" href="structnlohmann_1_1detail_1_1detector.html#a0cd69423587748bf3d3d702cc7b7c2ce">type</a> = Default;</div>
|
||
<div class="line"><a name="l02354"></a><span class="lineno"> 2354</span> };</div>
|
||
<div class="line"><a name="l02355"></a><span class="lineno"> 2355</span>  </div>
|
||
<div class="line"><a name="l02356"></a><span class="lineno"> 2356</span> <span class="keyword">template</span> <<span class="keyword">class </span>Default, <span class="keyword">template</span> <<span class="keyword">class</span>...> <span class="keyword">class </span>Op, <span class="keyword">class</span>... Args></div>
|
||
<div class="line"><a name="l02357"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1detector_3_01Default_00_01void__t_3_01Op_3_01Args_8_8_8_01_4_01_4_00_01Op_00_01Args_8_8_8_01_4.html"> 2357</a></span> <span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1detector.html">detector</a><Default, <a class="code" href="namespacenlohmann_1_1detail.html#a92a167c49c6697b6ffe4f79492c705e5">void_t</a><Op<Args...>>, Op, Args...></div>
|
||
<div class="line"><a name="l02358"></a><span class="lineno"> 2358</span> {</div>
|
||
<div class="line"><a name="l02359"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1detector_3_01Default_00_01void__t_3_01Op_3_01Args_8_8_8_01_4_01_4_00_01Op_00_01Args_8_8_8_01_4.html#ab748f9f00bb31bee4978a033589f8c85"> 2359</a></span>  <span class="keyword">using</span> <a class="code" href="structnlohmann_1_1detail_1_1detector_3_01Default_00_01void__t_3_01Op_3_01Args_8_8_8_01_4_01_4_00_01Op_00_01Args_8_8_8_01_4.html#ab748f9f00bb31bee4978a033589f8c85">value_t</a> = std::true_type;</div>
|
||
<div class="line"><a name="l02360"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1detector_3_01Default_00_01void__t_3_01Op_3_01Args_8_8_8_01_4_01_4_00_01Op_00_01Args_8_8_8_01_4.html#a5afd6a40e94dde21d120ac646468c495"> 2360</a></span>  <span class="keyword">using</span> <a class="code" href="structnlohmann_1_1detail_1_1detector_3_01Default_00_01void__t_3_01Op_3_01Args_8_8_8_01_4_01_4_00_01Op_00_01Args_8_8_8_01_4.html#a5afd6a40e94dde21d120ac646468c495">type</a> = Op<Args...>;</div>
|
||
<div class="line"><a name="l02361"></a><span class="lineno"> 2361</span> };</div>
|
||
<div class="line"><a name="l02362"></a><span class="lineno"> 2362</span>  </div>
|
||
<div class="line"><a name="l02363"></a><span class="lineno"> 2363</span> <span class="keyword">template</span> <<span class="keyword">template</span> <<span class="keyword">class</span>...> <span class="keyword">class </span>Op, <span class="keyword">class</span>... Args></div>
|
||
<div class="line"><a name="l02364"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a9135fcf616d6ac6e231a86e0a055ac44"> 2364</a></span> <span class="keyword">using</span> <a class="code" href="namespacenlohmann_1_1detail.html#a9135fcf616d6ac6e231a86e0a055ac44">is_detected</a> = <span class="keyword">typename</span> <a class="code" href="structnlohmann_1_1detail_1_1detector.html">detector</a><<a class="code" href="structnlohmann_1_1detail_1_1nonesuch.html">nonesuch</a>, <a class="code" href="namespacenlohmann_1_1detail.html#a59fca69799f6b9e366710cb9043aa77d">void</a>, Op, Args...><a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985">::value_t</a>;</div>
|
||
<div class="line"><a name="l02365"></a><span class="lineno"> 2365</span>  </div>
|
||
<div class="line"><a name="l02366"></a><span class="lineno"> 2366</span> <span class="keyword">template</span> <<span class="keyword">template</span> <<span class="keyword">class</span>...> <span class="keyword">class </span>Op, <span class="keyword">class</span>... Args></div>
|
||
<div class="line"><a name="l02367"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a37e97a32d0b94ce5f745427e4e40204d"> 2367</a></span> <span class="keyword">using</span> <a class="code" href="namespacenlohmann_1_1detail.html#a37e97a32d0b94ce5f745427e4e40204d">detected_t</a> = <span class="keyword">typename</span> <a class="code" href="structnlohmann_1_1detail_1_1detector.html">detector</a><<a class="code" href="structnlohmann_1_1detail_1_1nonesuch.html">nonesuch</a>, <a class="code" href="namespacenlohmann_1_1detail.html#a59fca69799f6b9e366710cb9043aa77d">void</a>, Op, Args...>::type;</div>
|
||
<div class="line"><a name="l02368"></a><span class="lineno"> 2368</span>  </div>
|
||
<div class="line"><a name="l02369"></a><span class="lineno"> 2369</span> <span class="keyword">template</span> <<span class="keyword">class </span>Default, <span class="keyword">template</span> <<span class="keyword">class</span>...> <span class="keyword">class </span>Op, <span class="keyword">class</span>... Args></div>
|
||
<div class="line"><a name="l02370"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a240ce21919ab08e8a6cb3a5cfa412bce"> 2370</a></span> <span class="keyword">using</span> <a class="code" href="structnlohmann_1_1detail_1_1detector.html">detected_or</a> = <a class="code" href="structnlohmann_1_1detail_1_1detector.html">detector</a><Default, <a class="code" href="namespacenlohmann_1_1detail.html#a59fca69799f6b9e366710cb9043aa77d">void</a>, Op, Args...>;</div>
|
||
<div class="line"><a name="l02371"></a><span class="lineno"> 2371</span>  </div>
|
||
<div class="line"><a name="l02372"></a><span class="lineno"> 2372</span> <span class="keyword">template</span> <<span class="keyword">class </span>Default, <span class="keyword">template</span> <<span class="keyword">class</span>...> <span class="keyword">class </span>Op, <span class="keyword">class</span>... Args></div>
|
||
<div class="line"><a name="l02373"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a7ac5b8ef0363101275a2827b3b117dcf"> 2373</a></span> <span class="keyword">using</span> <a class="code" href="namespacenlohmann_1_1detail.html#a7ac5b8ef0363101275a2827b3b117dcf">detected_or_t</a> = <span class="keyword">typename</span> <a class="code" href="structnlohmann_1_1detail_1_1detector.html">detected_or</a><Default, Op, Args...>::type;</div>
|
||
<div class="line"><a name="l02374"></a><span class="lineno"> 2374</span>  </div>
|
||
<div class="line"><a name="l02375"></a><span class="lineno"> 2375</span> <span class="keyword">template</span> <<span class="keyword">class </span>Expected, <span class="keyword">template</span> <<span class="keyword">class</span>...> <span class="keyword">class </span>Op, <span class="keyword">class</span>... Args></div>
|
||
<div class="line"><a name="l02376"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a7542b4dbac07817fd4849ecfa4619def"> 2376</a></span> <span class="keyword">using</span> <a class="code" href="namespacenlohmann_1_1detail.html#a7542b4dbac07817fd4849ecfa4619def">is_detected_exact</a> = std::is_same<Expected, <a class="code" href="namespacenlohmann_1_1detail.html#a37e97a32d0b94ce5f745427e4e40204d">detected_t</a><Op, Args...>>;</div>
|
||
<div class="line"><a name="l02377"></a><span class="lineno"> 2377</span>  </div>
|
||
<div class="line"><a name="l02378"></a><span class="lineno"> 2378</span> <span class="keyword">template</span> <<span class="keyword">class </span>To, <span class="keyword">template</span> <<span class="keyword">class</span>...> <span class="keyword">class </span>Op, <span class="keyword">class</span>... Args></div>
|
||
<div class="line"><a name="l02379"></a><span class="lineno"> 2379</span> <span class="keyword">using</span> <a class="code" href="namespacenlohmann_1_1detail.html#a5262e531c46e357b33007060f294673b">is_detected_convertible</a> =</div>
|
||
<div class="line"><a name="l02380"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a5262e531c46e357b33007060f294673b"> 2380</a></span>  std::is_convertible<<a class="code" href="namespacenlohmann_1_1detail.html#a37e97a32d0b94ce5f745427e4e40204d">detected_t</a><Op, Args...>, To>;</div>
|
||
<div class="line"><a name="l02381"></a><span class="lineno"> 2381</span> } <span class="comment">// namespace detail</span></div>
|
||
<div class="line"><a name="l02382"></a><span class="lineno"> 2382</span> } <span class="comment">// namespace nlohmann</span></div>
|
||
<div class="line"><a name="l02383"></a><span class="lineno"> 2383</span>  </div>
|
||
<div class="line"><a name="l02384"></a><span class="lineno"> 2384</span> <span class="comment">// #include <nlohmann/json_fwd.hpp></span></div>
|
||
<div class="line"><a name="l02385"></a><span class="lineno"> 2385</span> <span class="preprocessor">#ifndef INCLUDE_NLOHMANN_JSON_FWD_HPP_</span></div>
|
||
<div class="line"><a name="l02386"></a><span class="lineno"><a class="line" href="json_8hpp.html#ae7fdc438c6d6cb1f17c4373bce5a802d"> 2386</a></span> <span class="preprocessor">#define INCLUDE_NLOHMANN_JSON_FWD_HPP_</span></div>
|
||
<div class="line"><a name="l02387"></a><span class="lineno"> 2387</span>  </div>
|
||
<div class="line"><a name="l02388"></a><span class="lineno"> 2388</span> <span class="preprocessor">#include <cstdint></span> <span class="comment">// int64_t, uint64_t</span></div>
|
||
<div class="line"><a name="l02389"></a><span class="lineno"> 2389</span> <span class="preprocessor">#include <map></span> <span class="comment">// map</span></div>
|
||
<div class="line"><a name="l02390"></a><span class="lineno"> 2390</span> <span class="preprocessor">#include <memory></span> <span class="comment">// allocator</span></div>
|
||
<div class="line"><a name="l02391"></a><span class="lineno"> 2391</span> <span class="preprocessor">#include <string></span> <span class="comment">// string</span></div>
|
||
<div class="line"><a name="l02392"></a><span class="lineno"> 2392</span> <span class="preprocessor">#include <vector></span> <span class="comment">// vector</span></div>
|
||
<div class="line"><a name="l02393"></a><span class="lineno"> 2393</span>  </div>
|
||
<div class="line"><a name="l02399"></a><span class="lineno"> 2399</span> <span class="keyword">namespace </span><a class="code" href="namespacenlohmann.html">nlohmann</a></div>
|
||
<div class="line"><a name="l02400"></a><span class="lineno"> 2400</span> {</div>
|
||
<div class="line"><a name="l02408"></a><span class="lineno"> 2408</span> <span class="keyword">template</span><<span class="keyword">typename</span> T = <span class="keywordtype">void</span>, <span class="keyword">typename</span> SFINAE = <span class="keywordtype">void</span>></div>
|
||
<div class="line"><a name="l02409"></a><span class="lineno"><a class="line" href="structnlohmann_1_1adl__serializer.html"> 2409</a></span> <span class="keyword">struct </span><a class="code" href="structnlohmann_1_1adl__serializer.html">adl_serializer</a>;</div>
|
||
<div class="line"><a name="l02410"></a><span class="lineno"> 2410</span>  </div>
|
||
<div class="line"><a name="l02411"></a><span class="lineno"> 2411</span> <span class="keyword">template</span><<span class="keyword">template</span><<span class="keyword">typename</span> U, <span class="keyword">typename</span> V, <span class="keyword">typename</span>... Args> <span class="keyword">class </span>ObjectType =</div>
|
||
<div class="line"><a name="l02412"></a><span class="lineno"> 2412</span>  std::map,</div>
|
||
<div class="line"><a name="l02413"></a><span class="lineno"> 2413</span>  <span class="keyword">template</span><<span class="keyword">typename</span> U, <span class="keyword">typename</span>... Args> <span class="keyword">class </span>ArrayType = std::vector,</div>
|
||
<div class="line"><a name="l02414"></a><span class="lineno"> 2414</span>  <span class="keyword">class </span>StringType = std::string, <span class="keyword">class </span>BooleanType = bool,</div>
|
||
<div class="line"><a name="l02415"></a><span class="lineno"> 2415</span>  <span class="keyword">class </span>NumberIntegerType = std::int64_t,</div>
|
||
<div class="line"><a name="l02416"></a><span class="lineno"> 2416</span>  <span class="keyword">class </span>NumberUnsignedType = std::uint64_t,</div>
|
||
<div class="line"><a name="l02417"></a><span class="lineno"> 2417</span>  <span class="keyword">class </span>NumberFloatType = double,</div>
|
||
<div class="line"><a name="l02418"></a><span class="lineno"> 2418</span>  <span class="keyword">template</span><<span class="keyword">typename</span> U> <span class="keyword">class </span>AllocatorType = std::allocator,</div>
|
||
<div class="line"><a name="l02419"></a><span class="lineno"> 2419</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T, <span class="keyword">typename</span> SFINAE = <span class="keywordtype">void</span>> <span class="keyword">class </span>JSONSerializer =</div>
|
||
<div class="line"><a name="l02420"></a><span class="lineno"> 2420</span>  <a class="code" href="structnlohmann_1_1adl__serializer.html">adl_serializer</a>></div>
|
||
<div class="line"><a name="l02421"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html"> 2421</a></span> <span class="keyword">class </span><a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a>;</div>
|
||
<div class="line"><a name="l02422"></a><span class="lineno"> 2422</span>  </div>
|
||
<div class="line"><a name="l02434"></a><span class="lineno"> 2434</span> <span class="keyword">template</span><<span class="keyword">typename</span> BasicJsonType></div>
|
||
<div class="line"><a name="l02435"></a><span class="lineno"><a class="line" href="classnlohmann_1_1json__pointer.html"> 2435</a></span> <span class="keyword">class </span><a class="code" href="classnlohmann_1_1json__pointer.html">json_pointer</a>;</div>
|
||
<div class="line"><a name="l02436"></a><span class="lineno"> 2436</span>  </div>
|
||
<div class="line"><a name="l02445"></a><span class="lineno"><a class="line" href="namespacenlohmann.html#a9cc9a3033850a092f791d86854d117fc"> 2445</a></span> <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<></a>;</div>
|
||
<div class="line"><a name="l02446"></a><span class="lineno"> 2446</span> } <span class="comment">// namespace nlohmann</span></div>
|
||
<div class="line"><a name="l02447"></a><span class="lineno"> 2447</span>  </div>
|
||
<div class="line"><a name="l02448"></a><span class="lineno"> 2448</span> <span class="preprocessor">#endif // INCLUDE_NLOHMANN_JSON_FWD_HPP_</span></div>
|
||
<div class="line"><a name="l02449"></a><span class="lineno"> 2449</span>  </div>
|
||
<div class="line"><a name="l02450"></a><span class="lineno"> 2450</span>  </div>
|
||
<div class="line"><a name="l02451"></a><span class="lineno"> 2451</span> <span class="keyword">namespace </span><a class="code" href="namespacenlohmann.html">nlohmann</a></div>
|
||
<div class="line"><a name="l02452"></a><span class="lineno"> 2452</span> {</div>
|
||
<div class="line"><a name="l02461"></a><span class="lineno"> 2461</span> <span class="keyword">namespace </span>detail</div>
|
||
<div class="line"><a name="l02462"></a><span class="lineno"> 2462</span> {</div>
|
||
<div class="line"><a name="l02464"></a><span class="lineno"> 2464</span> <span class="comment">// helpers //</span></div>
|
||
<div class="line"><a name="l02466"></a><span class="lineno"> 2466</span> <span class="comment"></span> </div>
|
||
<div class="line"><a name="l02467"></a><span class="lineno"> 2467</span> <span class="comment">// Note to maintainers:</span></div>
|
||
<div class="line"><a name="l02468"></a><span class="lineno"> 2468</span> <span class="comment">//</span></div>
|
||
<div class="line"><a name="l02469"></a><span class="lineno"> 2469</span> <span class="comment">// Every trait in this file expects a non CV-qualified type.</span></div>
|
||
<div class="line"><a name="l02470"></a><span class="lineno"> 2470</span> <span class="comment">// The only exceptions are in the 'aliases for detected' section</span></div>
|
||
<div class="line"><a name="l02471"></a><span class="lineno"> 2471</span> <span class="comment">// (i.e. those of the form: decltype(T::member_function(std::declval<T>())))</span></div>
|
||
<div class="line"><a name="l02472"></a><span class="lineno"> 2472</span> <span class="comment">//</span></div>
|
||
<div class="line"><a name="l02473"></a><span class="lineno"> 2473</span> <span class="comment">// In this case, T has to be properly CV-qualified to constraint the function arguments</span></div>
|
||
<div class="line"><a name="l02474"></a><span class="lineno"> 2474</span> <span class="comment">// (e.g. to_json(BasicJsonType&, const T&))</span></div>
|
||
<div class="line"><a name="l02475"></a><span class="lineno"> 2475</span>  </div>
|
||
<div class="line"><a name="l02476"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1is__basic__json.html"> 2476</a></span> <span class="keyword">template</span><<span class="keyword">typename</span>> <span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1is__basic__json.html">is_basic_json</a> : std::false_type {};</div>
|
||
<div class="line"><a name="l02477"></a><span class="lineno"> 2477</span>  </div>
|
||
<div class="line"><a name="l02478"></a><span class="lineno"> 2478</span> <a class="code" href="json_8hpp.html#a0643bd74c2dc6f0e4e420b8190ea8f0f">NLOHMANN_BASIC_JSON_TPL_DECLARATION</a></div>
|
||
<div class="line"><a name="l02479"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1is__basic__json_3_01NLOHMANN__BASIC__JSON__TPL_01_4.html"> 2479</a></span> <span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1is__basic__json.html">is_basic_json</a><<a class="code" href="json_8hpp.html#a80b7254e63f199a1f656f07ae551f632">NLOHMANN_BASIC_JSON_TPL</a>> : std::true_type {};</div>
|
||
<div class="line"><a name="l02480"></a><span class="lineno"> 2480</span>  </div>
|
||
<div class="line"><a name="l02482"></a><span class="lineno"> 2482</span> <span class="comment">// aliases for detected //</span></div>
|
||
<div class="line"><a name="l02484"></a><span class="lineno"> 2484</span> <span class="comment"></span> </div>
|
||
<div class="line"><a name="l02485"></a><span class="lineno"> 2485</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T></div>
|
||
<div class="line"><a name="l02486"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a9c1795c148875722f8482d39e0eb9364"> 2486</a></span> <span class="keyword">using</span> <a class="code" href="namespacenlohmann_1_1detail.html#a9c1795c148875722f8482d39e0eb9364">mapped_type_t</a> = <span class="keyword">typename</span> T::mapped_type;</div>
|
||
<div class="line"><a name="l02487"></a><span class="lineno"> 2487</span>  </div>
|
||
<div class="line"><a name="l02488"></a><span class="lineno"> 2488</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T></div>
|
||
<div class="line"><a name="l02489"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a66dfe39f03b05d6b7265a0ff748d64ef"> 2489</a></span> <span class="keyword">using</span> <a class="code" href="namespacenlohmann_1_1detail.html#a66dfe39f03b05d6b7265a0ff748d64ef">key_type_t</a> = <span class="keyword">typename</span> T::key_type;</div>
|
||
<div class="line"><a name="l02490"></a><span class="lineno"> 2490</span>  </div>
|
||
<div class="line"><a name="l02491"></a><span class="lineno"> 2491</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T></div>
|
||
<div class="line"><a name="l02492"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#af91beae90c2fb0f931079b3d50a343bc"> 2492</a></span> <span class="keyword">using</span> <a class="code" href="namespacenlohmann_1_1detail.html#af91beae90c2fb0f931079b3d50a343bc">value_type_t</a> = <span class="keyword">typename</span> T::value_type;</div>
|
||
<div class="line"><a name="l02493"></a><span class="lineno"> 2493</span>  </div>
|
||
<div class="line"><a name="l02494"></a><span class="lineno"> 2494</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T></div>
|
||
<div class="line"><a name="l02495"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a3603b59a17d1c5e15050743b847992f2"> 2495</a></span> <span class="keyword">using</span> <a class="code" href="namespacenlohmann_1_1detail.html#a3603b59a17d1c5e15050743b847992f2">difference_type_t</a> = <span class="keyword">typename</span> T::difference_type;</div>
|
||
<div class="line"><a name="l02496"></a><span class="lineno"> 2496</span>  </div>
|
||
<div class="line"><a name="l02497"></a><span class="lineno"> 2497</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T></div>
|
||
<div class="line"><a name="l02498"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a26dc71e2dd9336587e56062178f9abce"> 2498</a></span> <span class="keyword">using</span> <a class="code" href="namespacenlohmann_1_1detail.html#a26dc71e2dd9336587e56062178f9abce">pointer_t</a> = <span class="keyword">typename</span> T::pointer;</div>
|
||
<div class="line"><a name="l02499"></a><span class="lineno"> 2499</span>  </div>
|
||
<div class="line"><a name="l02500"></a><span class="lineno"> 2500</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T></div>
|
||
<div class="line"><a name="l02501"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a082bdafd3b4c61d9d1e92b35b8f75ee3"> 2501</a></span> <span class="keyword">using</span> <a class="code" href="namespacenlohmann_1_1detail.html#a082bdafd3b4c61d9d1e92b35b8f75ee3">reference_t</a> = <span class="keyword">typename</span> T::reference;</div>
|
||
<div class="line"><a name="l02502"></a><span class="lineno"> 2502</span>  </div>
|
||
<div class="line"><a name="l02503"></a><span class="lineno"> 2503</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T></div>
|
||
<div class="line"><a name="l02504"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#ad22d2aa3aab018050ae519f6754366e1"> 2504</a></span> <span class="keyword">using</span> <a class="code" href="namespacenlohmann_1_1detail.html#ad22d2aa3aab018050ae519f6754366e1">iterator_category_t</a> = <span class="keyword">typename</span> T::iterator_category;</div>
|
||
<div class="line"><a name="l02505"></a><span class="lineno"> 2505</span>  </div>
|
||
<div class="line"><a name="l02506"></a><span class="lineno"> 2506</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T></div>
|
||
<div class="line"><a name="l02507"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a9ff93db146174305bce1bc4c54703e11"> 2507</a></span> <span class="keyword">using</span> <a class="code" href="namespacenlohmann_1_1detail.html#a9ff93db146174305bce1bc4c54703e11">iterator_t</a> = <span class="keyword">typename</span> T::iterator;</div>
|
||
<div class="line"><a name="l02508"></a><span class="lineno"> 2508</span>  </div>
|
||
<div class="line"><a name="l02509"></a><span class="lineno"> 2509</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T, <span class="keyword">typename</span>... Args></div>
|
||
<div class="line"><a name="l02510"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#af846b6cf2f926009ff3a7a61495ca383"> 2510</a></span> <span class="keyword">using</span> <a class="code" href="namespacenlohmann_1_1detail.html#af846b6cf2f926009ff3a7a61495ca383">to_json_function</a> = decltype(<a class="code" href="namespacenlohmann_1_1detail.html#aaa77b0c9745130b77733a92a1a2e82ec">T::to_json</a>(std::declval<Args>()...));</div>
|
||
<div class="line"><a name="l02511"></a><span class="lineno"> 2511</span>  </div>
|
||
<div class="line"><a name="l02512"></a><span class="lineno"> 2512</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T, <span class="keyword">typename</span>... Args></div>
|
||
<div class="line"><a name="l02513"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a1711ee5cef66a0523055c8d9f024f322"> 2513</a></span> <span class="keyword">using</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1711ee5cef66a0523055c8d9f024f322">from_json_function</a> = decltype(<a class="code" href="namespacenlohmann_1_1detail.html#aef5c8ea108f4d2b03fb4a635617510de">T::from_json</a>(std::declval<Args>()...));</div>
|
||
<div class="line"><a name="l02514"></a><span class="lineno"> 2514</span>  </div>
|
||
<div class="line"><a name="l02515"></a><span class="lineno"> 2515</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T, <span class="keyword">typename</span> U></div>
|
||
<div class="line"><a name="l02516"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#ab4d22cdb6521ee3508db496dea66711e"> 2516</a></span> <span class="keyword">using</span> <a class="code" href="namespacenlohmann_1_1detail.html#ab4d22cdb6521ee3508db496dea66711e">get_template_function</a> = decltype(std::declval<T>().<span class="keyword">template</span> get<U>());</div>
|
||
<div class="line"><a name="l02517"></a><span class="lineno"> 2517</span>  </div>
|
||
<div class="line"><a name="l02518"></a><span class="lineno"> 2518</span> <span class="comment">// trait checking if JSONSerializer<T>::from_json(json const&, udt&) exists</span></div>
|
||
<div class="line"><a name="l02519"></a><span class="lineno"> 2519</span> <span class="keyword">template</span> <<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> T, <span class="keyword">typename</span> = <span class="keywordtype">void</span>></div>
|
||
<div class="line"><a name="l02520"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1has__from__json.html"> 2520</a></span> <span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1has__from__json.html">has_from_json</a> : std::false_type {};</div>
|
||
<div class="line"><a name="l02521"></a><span class="lineno"> 2521</span>  </div>
|
||
<div class="line"><a name="l02522"></a><span class="lineno"> 2522</span> <span class="keyword">template</span> <<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> T></div>
|
||
<div class="line"><a name="l02523"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1has__from__json_3_01BasicJsonType_00_01T_00_01enable__if__t_3_01not_5e786a91cad76ed1c14f425887b41640.html"> 2523</a></span> <span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1has__from__json.html">has_from_json</a><BasicJsonType, T,</div>
|
||
<div class="line"><a name="l02524"></a><span class="lineno"> 2524</span>  <a class="code" href="namespacenlohmann_1_1detail.html#a02bcbc878bee413f25b985ada771aa9c">enable_if_t</a><not <a class="code" href="structnlohmann_1_1detail_1_1is__basic__json.html">is_basic_json</a><T>::value>></div>
|
||
<div class="line"><a name="l02525"></a><span class="lineno"> 2525</span> {</div>
|
||
<div class="line"><a name="l02526"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1has__from__json_3_01BasicJsonType_00_01T_00_01enable__if__t_3_01not_5e786a91cad76ed1c14f425887b41640.html#ab17cea1be422b8985fc19942809560ed"> 2526</a></span>  <span class="keyword">using</span> <a class="code" href="structnlohmann_1_1detail_1_1has__from__json_3_01BasicJsonType_00_01T_00_01enable__if__t_3_01not_5e786a91cad76ed1c14f425887b41640.html#ab17cea1be422b8985fc19942809560ed">serializer</a> = <span class="keyword">typename</span> BasicJsonType::template json_serializer<T, void>;</div>
|
||
<div class="line"><a name="l02527"></a><span class="lineno"> 2527</span>  </div>
|
||
<div class="line"><a name="l02528"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1has__from__json_3_01BasicJsonType_00_01T_00_01enable__if__t_3_01not_5e786a91cad76ed1c14f425887b41640.html#afb638d592883301228bcad21d83bf4aa"> 2528</a></span>  <span class="keyword">static</span> constexpr <span class="keywordtype">bool</span> value =</div>
|
||
<div class="line"><a name="l02529"></a><span class="lineno"> 2529</span>  <a class="code" href="namespacenlohmann_1_1detail.html#a7542b4dbac07817fd4849ecfa4619def">is_detected_exact</a><<a class="code" href="namespacenlohmann_1_1detail.html#a59fca69799f6b9e366710cb9043aa77d">void</a>, <a class="code" href="namespacenlohmann_1_1detail.html#a1711ee5cef66a0523055c8d9f024f322">from_json_function</a>, <a class="code" href="structnlohmann_1_1detail_1_1has__from__json_3_01BasicJsonType_00_01T_00_01enable__if__t_3_01not_5e786a91cad76ed1c14f425887b41640.html#ab17cea1be422b8985fc19942809560ed">serializer</a>,</div>
|
||
<div class="line"><a name="l02530"></a><span class="lineno"> 2530</span>  <span class="keyword">const</span> BasicJsonType&, T&>::value;</div>
|
||
<div class="line"><a name="l02531"></a><span class="lineno"> 2531</span> };</div>
|
||
<div class="line"><a name="l02532"></a><span class="lineno"> 2532</span>  </div>
|
||
<div class="line"><a name="l02533"></a><span class="lineno"> 2533</span> <span class="comment">// This trait checks if JSONSerializer<T>::from_json(json const&) exists</span></div>
|
||
<div class="line"><a name="l02534"></a><span class="lineno"> 2534</span> <span class="comment">// this overload is used for non-default-constructible user-defined-types</span></div>
|
||
<div class="line"><a name="l02535"></a><span class="lineno"> 2535</span> <span class="keyword">template</span> <<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> T, <span class="keyword">typename</span> = <span class="keywordtype">void</span>></div>
|
||
<div class="line"><a name="l02536"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1has__non__default__from__json.html"> 2536</a></span> <span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1has__non__default__from__json.html">has_non_default_from_json</a> : std::false_type {};</div>
|
||
<div class="line"><a name="l02537"></a><span class="lineno"> 2537</span>  </div>
|
||
<div class="line"><a name="l02538"></a><span class="lineno"> 2538</span> <span class="keyword">template</span><<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> T></div>
|
||
<div class="line"><a name="l02539"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1has__non__default__from__json_3_01BasicJsonType_00_01T_00_01enable__a9e4562f31f7ed523e6e0f675606b0f2.html"> 2539</a></span> <span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1has__non__default__from__json.html">has_non_default_from_json</a><BasicJsonType, T, <a class="code" href="namespacenlohmann_1_1detail.html#a02bcbc878bee413f25b985ada771aa9c">enable_if_t</a><not <a class="code" href="structnlohmann_1_1detail_1_1is__basic__json.html">is_basic_json</a><T>::value>></div>
|
||
<div class="line"><a name="l02540"></a><span class="lineno"> 2540</span> {</div>
|
||
<div class="line"><a name="l02541"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1has__non__default__from__json_3_01BasicJsonType_00_01T_00_01enable__a9e4562f31f7ed523e6e0f675606b0f2.html#a610272ed924122e0c46d158ecdfe6faf"> 2541</a></span>  <span class="keyword">using</span> <a class="code" href="structnlohmann_1_1detail_1_1has__non__default__from__json_3_01BasicJsonType_00_01T_00_01enable__a9e4562f31f7ed523e6e0f675606b0f2.html#a610272ed924122e0c46d158ecdfe6faf">serializer</a> = <span class="keyword">typename</span> BasicJsonType::template json_serializer<T, void>;</div>
|
||
<div class="line"><a name="l02542"></a><span class="lineno"> 2542</span>  </div>
|
||
<div class="line"><a name="l02543"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1has__non__default__from__json_3_01BasicJsonType_00_01T_00_01enable__a9e4562f31f7ed523e6e0f675606b0f2.html#a1494ac5fed1163aab4a89208ff04ee85"> 2543</a></span>  <span class="keyword">static</span> constexpr <span class="keywordtype">bool</span> value =</div>
|
||
<div class="line"><a name="l02544"></a><span class="lineno"> 2544</span>  <a class="code" href="namespacenlohmann_1_1detail.html#a7542b4dbac07817fd4849ecfa4619def">is_detected_exact</a><T, <a class="code" href="namespacenlohmann_1_1detail.html#a1711ee5cef66a0523055c8d9f024f322">from_json_function</a>, <a class="code" href="structnlohmann_1_1detail_1_1has__non__default__from__json_3_01BasicJsonType_00_01T_00_01enable__a9e4562f31f7ed523e6e0f675606b0f2.html#a610272ed924122e0c46d158ecdfe6faf">serializer</a>,</div>
|
||
<div class="line"><a name="l02545"></a><span class="lineno"> 2545</span>  <span class="keyword">const</span> BasicJsonType&>::value;</div>
|
||
<div class="line"><a name="l02546"></a><span class="lineno"> 2546</span> };</div>
|
||
<div class="line"><a name="l02547"></a><span class="lineno"> 2547</span>  </div>
|
||
<div class="line"><a name="l02548"></a><span class="lineno"> 2548</span> <span class="comment">// This trait checks if BasicJsonType::json_serializer<T>::to_json exists</span></div>
|
||
<div class="line"><a name="l02549"></a><span class="lineno"> 2549</span> <span class="comment">// Do not evaluate the trait when T is a basic_json type, to avoid template instantiation infinite recursion.</span></div>
|
||
<div class="line"><a name="l02550"></a><span class="lineno"> 2550</span> <span class="keyword">template</span> <<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> T, <span class="keyword">typename</span> = <span class="keywordtype">void</span>></div>
|
||
<div class="line"><a name="l02551"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1has__to__json.html"> 2551</a></span> <span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1has__to__json.html">has_to_json</a> : std::false_type {};</div>
|
||
<div class="line"><a name="l02552"></a><span class="lineno"> 2552</span>  </div>
|
||
<div class="line"><a name="l02553"></a><span class="lineno"> 2553</span> <span class="keyword">template</span> <<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> T></div>
|
||
<div class="line"><a name="l02554"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1has__to__json_3_01BasicJsonType_00_01T_00_01enable__if__t_3_01not_01737900a749c335e922e2f74e2face5e4.html"> 2554</a></span> <span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1has__to__json.html">has_to_json</a><BasicJsonType, T, <a class="code" href="namespacenlohmann_1_1detail.html#a02bcbc878bee413f25b985ada771aa9c">enable_if_t</a><not <a class="code" href="structnlohmann_1_1detail_1_1is__basic__json.html">is_basic_json</a><T>::value>></div>
|
||
<div class="line"><a name="l02555"></a><span class="lineno"> 2555</span> {</div>
|
||
<div class="line"><a name="l02556"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1has__to__json_3_01BasicJsonType_00_01T_00_01enable__if__t_3_01not_01737900a749c335e922e2f74e2face5e4.html#a479098e9480e0adb30fb3fe3586a8005"> 2556</a></span>  <span class="keyword">using</span> <a class="code" href="structnlohmann_1_1detail_1_1has__to__json_3_01BasicJsonType_00_01T_00_01enable__if__t_3_01not_01737900a749c335e922e2f74e2face5e4.html#a479098e9480e0adb30fb3fe3586a8005">serializer</a> = <span class="keyword">typename</span> BasicJsonType::template json_serializer<T, void>;</div>
|
||
<div class="line"><a name="l02557"></a><span class="lineno"> 2557</span>  </div>
|
||
<div class="line"><a name="l02558"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1has__to__json_3_01BasicJsonType_00_01T_00_01enable__if__t_3_01not_01737900a749c335e922e2f74e2face5e4.html#ac5e2f95bd9fa54c6ea870e923e395b63"> 2558</a></span>  <span class="keyword">static</span> constexpr <span class="keywordtype">bool</span> value =</div>
|
||
<div class="line"><a name="l02559"></a><span class="lineno"> 2559</span>  <a class="code" href="namespacenlohmann_1_1detail.html#a7542b4dbac07817fd4849ecfa4619def">is_detected_exact</a><<a class="code" href="namespacenlohmann_1_1detail.html#a59fca69799f6b9e366710cb9043aa77d">void</a>, <a class="code" href="namespacenlohmann_1_1detail.html#af846b6cf2f926009ff3a7a61495ca383">to_json_function</a>, <a class="code" href="structnlohmann_1_1detail_1_1has__to__json_3_01BasicJsonType_00_01T_00_01enable__if__t_3_01not_01737900a749c335e922e2f74e2face5e4.html#a479098e9480e0adb30fb3fe3586a8005">serializer</a>, BasicJsonType&,</div>
|
||
<div class="line"><a name="l02560"></a><span class="lineno"> 2560</span>  T>::value;</div>
|
||
<div class="line"><a name="l02561"></a><span class="lineno"> 2561</span> };</div>
|
||
<div class="line"><a name="l02562"></a><span class="lineno"> 2562</span>  </div>
|
||
<div class="line"><a name="l02563"></a><span class="lineno"> 2563</span>  </div>
|
||
<div class="line"><a name="l02565"></a><span class="lineno"> 2565</span> <span class="comment">// is_ functions //</span></div>
|
||
<div class="line"><a name="l02567"></a><span class="lineno"> 2567</span> <span class="comment"></span> </div>
|
||
<div class="line"><a name="l02568"></a><span class="lineno"> 2568</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T, <span class="keyword">typename</span> = <span class="keywordtype">void</span>></div>
|
||
<div class="line"><a name="l02569"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1is__iterator__traits.html"> 2569</a></span> <span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1is__iterator__traits.html">is_iterator_traits</a> : std::false_type {};</div>
|
||
<div class="line"><a name="l02570"></a><span class="lineno"> 2570</span>  </div>
|
||
<div class="line"><a name="l02571"></a><span class="lineno"> 2571</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T></div>
|
||
<div class="line"><a name="l02572"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1is__iterator__traits_3_01iterator__traits_3_01T_01_4_01_4.html"> 2572</a></span> <span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1is__iterator__traits.html">is_iterator_traits</a><<a class="code" href="structnlohmann_1_1detail_1_1iterator__traits.html">iterator_traits</a><T>></div>
|
||
<div class="line"><a name="l02573"></a><span class="lineno"> 2573</span> {</div>
|
||
<div class="line"><a name="l02574"></a><span class="lineno"> 2574</span>  <span class="keyword">private</span>:</div>
|
||
<div class="line"><a name="l02575"></a><span class="lineno"> 2575</span>  <span class="keyword">using</span> <a class="code" href="structnlohmann_1_1detail_1_1iterator__traits.html">traits</a> = <a class="code" href="structnlohmann_1_1detail_1_1iterator__traits.html">iterator_traits<T></a>;</div>
|
||
<div class="line"><a name="l02576"></a><span class="lineno"> 2576</span>  </div>
|
||
<div class="line"><a name="l02577"></a><span class="lineno"> 2577</span>  <span class="keyword">public</span>:</div>
|
||
<div class="line"><a name="l02578"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1is__iterator__traits_3_01iterator__traits_3_01T_01_4_01_4.html#ac2711760b352b8921accc6609957dc90"> 2578</a></span>  <span class="keyword">static</span> constexpr <span class="keyword">auto</span> value =</div>
|
||
<div class="line"><a name="l02579"></a><span class="lineno"> 2579</span>  <a class="code" href="namespacenlohmann_1_1detail.html#a9135fcf616d6ac6e231a86e0a055ac44">is_detected<value_type_t, traits>::value</a> &&</div>
|
||
<div class="line"><a name="l02580"></a><span class="lineno"> 2580</span>  <a class="code" href="namespacenlohmann_1_1detail.html#a9135fcf616d6ac6e231a86e0a055ac44">is_detected<difference_type_t, traits>::value</a> &&</div>
|
||
<div class="line"><a name="l02581"></a><span class="lineno"> 2581</span>  <a class="code" href="namespacenlohmann_1_1detail.html#a9135fcf616d6ac6e231a86e0a055ac44">is_detected<pointer_t, traits>::value</a> &&</div>
|
||
<div class="line"><a name="l02582"></a><span class="lineno"> 2582</span>  <a class="code" href="namespacenlohmann_1_1detail.html#a9135fcf616d6ac6e231a86e0a055ac44">is_detected<iterator_category_t, traits>::value</a> &&</div>
|
||
<div class="line"><a name="l02583"></a><span class="lineno"> 2583</span>  <a class="code" href="namespacenlohmann_1_1detail.html#a9135fcf616d6ac6e231a86e0a055ac44">is_detected<reference_t, traits>::value</a>;</div>
|
||
<div class="line"><a name="l02584"></a><span class="lineno"> 2584</span> };</div>
|
||
<div class="line"><a name="l02585"></a><span class="lineno"> 2585</span>  </div>
|
||
<div class="line"><a name="l02586"></a><span class="lineno"> 2586</span> <span class="comment">// source: https://stackoverflow.com/a/37193089/4116453</span></div>
|
||
<div class="line"><a name="l02587"></a><span class="lineno"> 2587</span>  </div>
|
||
<div class="line"><a name="l02588"></a><span class="lineno"> 2588</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T, <span class="keyword">typename</span> = <span class="keywordtype">void</span>></div>
|
||
<div class="line"><a name="l02589"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1is__complete__type.html"> 2589</a></span> <span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1is__complete__type.html">is_complete_type</a> : std::false_type {};</div>
|
||
<div class="line"><a name="l02590"></a><span class="lineno"> 2590</span>  </div>
|
||
<div class="line"><a name="l02591"></a><span class="lineno"> 2591</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T></div>
|
||
<div class="line"><a name="l02592"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1is__complete__type_3_01T_00_01decltype_07void_07sizeof_07T_08_08_08_4.html"> 2592</a></span> <span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1is__complete__type.html">is_complete_type</a><T, decltype(<a class="code" href="namespacenlohmann_1_1detail.html#a59fca69799f6b9e366710cb9043aa77d">void</a>(sizeof(T)))> : std::true_type {};</div>
|
||
<div class="line"><a name="l02593"></a><span class="lineno"> 2593</span>  </div>
|
||
<div class="line"><a name="l02594"></a><span class="lineno"> 2594</span> <span class="keyword">template</span> <<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> CompatibleObjectType,</div>
|
||
<div class="line"><a name="l02595"></a><span class="lineno"> 2595</span>  <span class="keyword">typename</span> = <span class="keywordtype">void</span>></div>
|
||
<div class="line"><a name="l02596"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1is__compatible__object__type__impl.html"> 2596</a></span> <span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1is__compatible__object__type__impl.html">is_compatible_object_type_impl</a> : std::false_type {};</div>
|
||
<div class="line"><a name="l02597"></a><span class="lineno"> 2597</span>  </div>
|
||
<div class="line"><a name="l02598"></a><span class="lineno"> 2598</span> <span class="keyword">template</span> <<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> CompatibleObjectType></div>
|
||
<div class="line"><a name="l02599"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1is__compatible__object__type__impl_3_01BasicJsonType_00_01Compatible0bd988932da161d60568f9b7198a50d2.html"> 2599</a></span> <span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1is__compatible__object__type__impl.html">is_compatible_object_type_impl</a> <</div>
|
||
<div class="line"><a name="l02600"></a><span class="lineno"> 2600</span>  BasicJsonType, CompatibleObjectType,</div>
|
||
<div class="line"><a name="l02601"></a><span class="lineno"> 2601</span>  <a class="code" href="namespacenlohmann_1_1detail.html#a02bcbc878bee413f25b985ada771aa9c">enable_if_t</a><<a class="code" href="namespacenlohmann_1_1detail.html#a9135fcf616d6ac6e231a86e0a055ac44">is_detected</a><<a class="code" href="namespacenlohmann_1_1detail.html#a9c1795c148875722f8482d39e0eb9364">mapped_type_t</a>, CompatibleObjectType>::value and</div>
|
||
<div class="line"><a name="l02602"></a><span class="lineno"> 2602</span>  <a class="code" href="namespacenlohmann_1_1detail.html#a9135fcf616d6ac6e231a86e0a055ac44">is_detected</a><key_type_t, CompatibleObjectType>::value >></div>
|
||
<div class="line"><a name="l02603"></a><span class="lineno"> 2603</span> {</div>
|
||
<div class="line"><a name="l02604"></a><span class="lineno"> 2604</span>  </div>
|
||
<div class="line"><a name="l02605"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1is__compatible__object__type__impl_3_01BasicJsonType_00_01Compatible0bd988932da161d60568f9b7198a50d2.html#a551e9ee372c1b24b632e6b668c231a62"> 2605</a></span>  <span class="keyword">using</span> <a class="code" href="structnlohmann_1_1detail_1_1is__compatible__object__type__impl_3_01BasicJsonType_00_01Compatible0bd988932da161d60568f9b7198a50d2.html#a551e9ee372c1b24b632e6b668c231a62">object_t</a> = <span class="keyword">typename</span> BasicJsonType::object_t;</div>
|
||
<div class="line"><a name="l02606"></a><span class="lineno"> 2606</span>  </div>
|
||
<div class="line"><a name="l02607"></a><span class="lineno"> 2607</span>  <span class="comment">// macOS's is_constructible does not play well with nonesuch...</span></div>
|
||
<div class="line"><a name="l02608"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1is__compatible__object__type__impl_3_01BasicJsonType_00_01Compatible0bd988932da161d60568f9b7198a50d2.html#adc8188ae8d65e8175d961cd461a8ee43"> 2608</a></span>  <span class="keyword">static</span> constexpr <span class="keywordtype">bool</span> value =</div>
|
||
<div class="line"><a name="l02609"></a><span class="lineno"> 2609</span>  std::is_constructible<<span class="keyword">typename</span> object_t::key_type,</div>
|
||
<div class="line"><a name="l02610"></a><span class="lineno"> 2610</span>  <span class="keyword">typename</span> CompatibleObjectType::key_type>::value and</div>
|
||
<div class="line"><a name="l02611"></a><span class="lineno"> 2611</span>  std::is_constructible<<span class="keyword">typename</span> object_t::mapped_type,</div>
|
||
<div class="line"><a name="l02612"></a><span class="lineno"> 2612</span>  <span class="keyword">typename</span> CompatibleObjectType::mapped_type>::value;</div>
|
||
<div class="line"><a name="l02613"></a><span class="lineno"> 2613</span> };</div>
|
||
<div class="line"><a name="l02614"></a><span class="lineno"> 2614</span>  </div>
|
||
<div class="line"><a name="l02615"></a><span class="lineno"> 2615</span> <span class="keyword">template</span> <<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> CompatibleObjectType></div>
|
||
<div class="line"><a name="l02616"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1is__compatible__object__type.html"> 2616</a></span> <span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1is__compatible__object__type.html">is_compatible_object_type</a></div>
|
||
<div class="line"><a name="l02617"></a><span class="lineno"> 2617</span>  : <a class="code" href="structnlohmann_1_1detail_1_1is__compatible__object__type__impl.html">is_compatible_object_type_impl</a><BasicJsonType, CompatibleObjectType> {};</div>
|
||
<div class="line"><a name="l02618"></a><span class="lineno"> 2618</span>  </div>
|
||
<div class="line"><a name="l02619"></a><span class="lineno"> 2619</span> <span class="keyword">template</span> <<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> ConstructibleObjectType,</div>
|
||
<div class="line"><a name="l02620"></a><span class="lineno"> 2620</span>  <span class="keyword">typename</span> = <span class="keywordtype">void</span>></div>
|
||
<div class="line"><a name="l02621"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1is__constructible__object__type__impl.html"> 2621</a></span> <span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1is__constructible__object__type__impl.html">is_constructible_object_type_impl</a> : std::false_type {};</div>
|
||
<div class="line"><a name="l02622"></a><span class="lineno"> 2622</span>  </div>
|
||
<div class="line"><a name="l02623"></a><span class="lineno"> 2623</span> <span class="keyword">template</span> <<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> ConstructibleObjectType></div>
|
||
<div class="line"><a name="l02624"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1is__constructible__object__type__impl_3_01BasicJsonType_00_01Construb7f96efbcfd2606ccb5c84a830a60036.html"> 2624</a></span> <span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1is__constructible__object__type__impl.html">is_constructible_object_type_impl</a> <</div>
|
||
<div class="line"><a name="l02625"></a><span class="lineno"> 2625</span>  BasicJsonType, ConstructibleObjectType,</div>
|
||
<div class="line"><a name="l02626"></a><span class="lineno"> 2626</span>  <a class="code" href="namespacenlohmann_1_1detail.html#a02bcbc878bee413f25b985ada771aa9c">enable_if_t</a><<a class="code" href="namespacenlohmann_1_1detail.html#a9135fcf616d6ac6e231a86e0a055ac44">is_detected</a><<a class="code" href="namespacenlohmann_1_1detail.html#a9c1795c148875722f8482d39e0eb9364">mapped_type_t</a>, ConstructibleObjectType>::value and</div>
|
||
<div class="line"><a name="l02627"></a><span class="lineno"> 2627</span>  <a class="code" href="namespacenlohmann_1_1detail.html#a9135fcf616d6ac6e231a86e0a055ac44">is_detected</a><key_type_t, ConstructibleObjectType>::value >></div>
|
||
<div class="line"><a name="l02628"></a><span class="lineno"> 2628</span> {</div>
|
||
<div class="line"><a name="l02629"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1is__constructible__object__type__impl_3_01BasicJsonType_00_01Construb7f96efbcfd2606ccb5c84a830a60036.html#a6f458a63276ef62d60f4b93de03aa020"> 2629</a></span>  <span class="keyword">using</span> <a class="code" href="structnlohmann_1_1detail_1_1is__constructible__object__type__impl_3_01BasicJsonType_00_01Construb7f96efbcfd2606ccb5c84a830a60036.html#a6f458a63276ef62d60f4b93de03aa020">object_t</a> = <span class="keyword">typename</span> BasicJsonType::object_t;</div>
|
||
<div class="line"><a name="l02630"></a><span class="lineno"> 2630</span>  </div>
|
||
<div class="line"><a name="l02631"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1is__constructible__object__type__impl_3_01BasicJsonType_00_01Construb7f96efbcfd2606ccb5c84a830a60036.html#a7c1801a302b938e3176435b6451962e4"> 2631</a></span>  <span class="keyword">static</span> constexpr <span class="keywordtype">bool</span> value =</div>
|
||
<div class="line"><a name="l02632"></a><span class="lineno"> 2632</span>  (std::is_default_constructible<ConstructibleObjectType>::value and</div>
|
||
<div class="line"><a name="l02633"></a><span class="lineno"> 2633</span>  (std::is_move_assignable<ConstructibleObjectType>::value or</div>
|
||
<div class="line"><a name="l02634"></a><span class="lineno"> 2634</span>  std::is_copy_assignable<ConstructibleObjectType>::value) and</div>
|
||
<div class="line"><a name="l02635"></a><span class="lineno"> 2635</span>  (std::is_constructible<<span class="keyword">typename</span> ConstructibleObjectType::key_type,</div>
|
||
<div class="line"><a name="l02636"></a><span class="lineno"> 2636</span>  <span class="keyword">typename</span> object_t::key_type>::value and</div>
|
||
<div class="line"><a name="l02637"></a><span class="lineno"> 2637</span>  std::is_same <</div>
|
||
<div class="line"><a name="l02638"></a><span class="lineno"> 2638</span>  <span class="keyword">typename</span> object_t::mapped_type,</div>
|
||
<div class="line"><a name="l02639"></a><span class="lineno"> 2639</span>  <span class="keyword">typename</span> ConstructibleObjectType::mapped_type >::value)) or</div>
|
||
<div class="line"><a name="l02640"></a><span class="lineno"> 2640</span>  (<a class="code" href="structnlohmann_1_1detail_1_1has__from__json.html">has_from_json</a><BasicJsonType,</div>
|
||
<div class="line"><a name="l02641"></a><span class="lineno"> 2641</span>  <span class="keyword">typename</span> ConstructibleObjectType::mapped_type>::value or</div>
|
||
<div class="line"><a name="l02642"></a><span class="lineno"> 2642</span>  <a class="code" href="structnlohmann_1_1detail_1_1has__non__default__from__json.html">has_non_default_from_json</a> <</div>
|
||
<div class="line"><a name="l02643"></a><span class="lineno"> 2643</span>  BasicJsonType,</div>
|
||
<div class="line"><a name="l02644"></a><span class="lineno"> 2644</span>  <span class="keyword">typename</span> ConstructibleObjectType::mapped_type >::value);</div>
|
||
<div class="line"><a name="l02645"></a><span class="lineno"> 2645</span> };</div>
|
||
<div class="line"><a name="l02646"></a><span class="lineno"> 2646</span>  </div>
|
||
<div class="line"><a name="l02647"></a><span class="lineno"> 2647</span> <span class="keyword">template</span> <<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> ConstructibleObjectType></div>
|
||
<div class="line"><a name="l02648"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1is__constructible__object__type.html"> 2648</a></span> <span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1is__constructible__object__type.html">is_constructible_object_type</a></div>
|
||
<div class="line"><a name="l02649"></a><span class="lineno"> 2649</span>  : <a class="code" href="structnlohmann_1_1detail_1_1is__constructible__object__type__impl.html">is_constructible_object_type_impl</a><BasicJsonType,</div>
|
||
<div class="line"><a name="l02650"></a><span class="lineno"> 2650</span>  ConstructibleObjectType> {};</div>
|
||
<div class="line"><a name="l02651"></a><span class="lineno"> 2651</span>  </div>
|
||
<div class="line"><a name="l02652"></a><span class="lineno"> 2652</span> <span class="keyword">template</span> <<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> CompatibleStringType,</div>
|
||
<div class="line"><a name="l02653"></a><span class="lineno"> 2653</span>  <span class="keyword">typename</span> = <span class="keywordtype">void</span>></div>
|
||
<div class="line"><a name="l02654"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1is__compatible__string__type__impl.html"> 2654</a></span> <span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1is__compatible__string__type__impl.html">is_compatible_string_type_impl</a> : std::false_type {};</div>
|
||
<div class="line"><a name="l02655"></a><span class="lineno"> 2655</span>  </div>
|
||
<div class="line"><a name="l02656"></a><span class="lineno"> 2656</span> <span class="keyword">template</span> <<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> CompatibleStringType></div>
|
||
<div class="line"><a name="l02657"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1is__compatible__string__type__impl_3_01BasicJsonType_00_01Compatible494e9dc742c819c61e54b8282030b5b6.html"> 2657</a></span> <span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1is__compatible__string__type__impl.html">is_compatible_string_type_impl</a> <</div>
|
||
<div class="line"><a name="l02658"></a><span class="lineno"> 2658</span>  BasicJsonType, CompatibleStringType,</div>
|
||
<div class="line"><a name="l02659"></a><span class="lineno"> 2659</span>  <a class="code" href="namespacenlohmann_1_1detail.html#a02bcbc878bee413f25b985ada771aa9c">enable_if_t</a><<a class="code" href="namespacenlohmann_1_1detail.html#a7542b4dbac07817fd4849ecfa4619def">is_detected_exact</a><typename BasicJsonType::string_t::value_type,</div>
|
||
<div class="line"><a name="l02660"></a><span class="lineno"> 2660</span>  <a class="code" href="namespacenlohmann_1_1detail.html#af91beae90c2fb0f931079b3d50a343bc">value_type_t</a>, CompatibleStringType>::value >></div>
|
||
<div class="line"><a name="l02661"></a><span class="lineno"> 2661</span> {</div>
|
||
<div class="line"><a name="l02662"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1is__compatible__string__type__impl_3_01BasicJsonType_00_01Compatible494e9dc742c819c61e54b8282030b5b6.html#adac1e17a2ddf9ac94be736e96e8943a9"> 2662</a></span>  <span class="keyword">static</span> constexpr <span class="keyword">auto</span> value =</div>
|
||
<div class="line"><a name="l02663"></a><span class="lineno"> 2663</span>  std::is_constructible<typename BasicJsonType::string_t, CompatibleStringType>::value;</div>
|
||
<div class="line"><a name="l02664"></a><span class="lineno"> 2664</span> };</div>
|
||
<div class="line"><a name="l02665"></a><span class="lineno"> 2665</span>  </div>
|
||
<div class="line"><a name="l02666"></a><span class="lineno"> 2666</span> <span class="keyword">template</span> <<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> ConstructibleStringType></div>
|
||
<div class="line"><a name="l02667"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1is__compatible__string__type.html"> 2667</a></span> <span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1is__compatible__string__type.html">is_compatible_string_type</a></div>
|
||
<div class="line"><a name="l02668"></a><span class="lineno"> 2668</span>  : <a class="code" href="structnlohmann_1_1detail_1_1is__compatible__string__type__impl.html">is_compatible_string_type_impl</a><BasicJsonType, ConstructibleStringType> {};</div>
|
||
<div class="line"><a name="l02669"></a><span class="lineno"> 2669</span>  </div>
|
||
<div class="line"><a name="l02670"></a><span class="lineno"> 2670</span> <span class="keyword">template</span> <<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> ConstructibleStringType,</div>
|
||
<div class="line"><a name="l02671"></a><span class="lineno"> 2671</span>  <span class="keyword">typename</span> = <span class="keywordtype">void</span>></div>
|
||
<div class="line"><a name="l02672"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1is__constructible__string__type__impl.html"> 2672</a></span> <span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1is__constructible__string__type__impl.html">is_constructible_string_type_impl</a> : std::false_type {};</div>
|
||
<div class="line"><a name="l02673"></a><span class="lineno"> 2673</span>  </div>
|
||
<div class="line"><a name="l02674"></a><span class="lineno"> 2674</span> <span class="keyword">template</span> <<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> ConstructibleStringType></div>
|
||
<div class="line"><a name="l02675"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1is__constructible__string__type__impl_3_01BasicJsonType_00_01Construe4743afb22172cdb3c5f428800835387.html"> 2675</a></span> <span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1is__constructible__string__type__impl.html">is_constructible_string_type_impl</a> <</div>
|
||
<div class="line"><a name="l02676"></a><span class="lineno"> 2676</span>  BasicJsonType, ConstructibleStringType,</div>
|
||
<div class="line"><a name="l02677"></a><span class="lineno"> 2677</span>  <a class="code" href="namespacenlohmann_1_1detail.html#a02bcbc878bee413f25b985ada771aa9c">enable_if_t</a><<a class="code" href="namespacenlohmann_1_1detail.html#a7542b4dbac07817fd4849ecfa4619def">is_detected_exact</a><typename BasicJsonType::string_t::value_type,</div>
|
||
<div class="line"><a name="l02678"></a><span class="lineno"> 2678</span>  <a class="code" href="namespacenlohmann_1_1detail.html#af91beae90c2fb0f931079b3d50a343bc">value_type_t</a>, ConstructibleStringType>::value >></div>
|
||
<div class="line"><a name="l02679"></a><span class="lineno"> 2679</span> {</div>
|
||
<div class="line"><a name="l02680"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1is__constructible__string__type__impl_3_01BasicJsonType_00_01Construe4743afb22172cdb3c5f428800835387.html#a3aeae0de0fc37bd5acf3c9d39b132678"> 2680</a></span>  <span class="keyword">static</span> constexpr <span class="keyword">auto</span> value =</div>
|
||
<div class="line"><a name="l02681"></a><span class="lineno"> 2681</span>  std::is_constructible<ConstructibleStringType,</div>
|
||
<div class="line"><a name="l02682"></a><span class="lineno"> 2682</span>  <span class="keyword">typename</span> BasicJsonType::string_t>::value;</div>
|
||
<div class="line"><a name="l02683"></a><span class="lineno"> 2683</span> };</div>
|
||
<div class="line"><a name="l02684"></a><span class="lineno"> 2684</span>  </div>
|
||
<div class="line"><a name="l02685"></a><span class="lineno"> 2685</span> <span class="keyword">template</span> <<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> ConstructibleStringType></div>
|
||
<div class="line"><a name="l02686"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1is__constructible__string__type.html"> 2686</a></span> <span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1is__constructible__string__type.html">is_constructible_string_type</a></div>
|
||
<div class="line"><a name="l02687"></a><span class="lineno"> 2687</span>  : <a class="code" href="structnlohmann_1_1detail_1_1is__constructible__string__type__impl.html">is_constructible_string_type_impl</a><BasicJsonType, ConstructibleStringType> {};</div>
|
||
<div class="line"><a name="l02688"></a><span class="lineno"> 2688</span>  </div>
|
||
<div class="line"><a name="l02689"></a><span class="lineno"> 2689</span> <span class="keyword">template</span> <<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> CompatibleArrayType, <span class="keyword">typename</span> = <span class="keywordtype">void</span>></div>
|
||
<div class="line"><a name="l02690"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1is__compatible__array__type__impl.html"> 2690</a></span> <span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1is__compatible__array__type__impl.html">is_compatible_array_type_impl</a> : std::false_type {};</div>
|
||
<div class="line"><a name="l02691"></a><span class="lineno"> 2691</span>  </div>
|
||
<div class="line"><a name="l02692"></a><span class="lineno"> 2692</span> <span class="keyword">template</span> <<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> CompatibleArrayType></div>
|
||
<div class="line"><a name="l02693"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1is__compatible__array__type__impl_3_01BasicJsonType_00_01CompatibleA2ae7cc020294dfcc2b3bca5a9db30ddf.html"> 2693</a></span> <span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1is__compatible__array__type__impl.html">is_compatible_array_type_impl</a> <</div>
|
||
<div class="line"><a name="l02694"></a><span class="lineno"> 2694</span>  BasicJsonType, CompatibleArrayType,</div>
|
||
<div class="line"><a name="l02695"></a><span class="lineno"> 2695</span>  <a class="code" href="namespacenlohmann_1_1detail.html#a02bcbc878bee413f25b985ada771aa9c">enable_if_t</a><<a class="code" href="namespacenlohmann_1_1detail.html#a9135fcf616d6ac6e231a86e0a055ac44">is_detected</a><<a class="code" href="namespacenlohmann_1_1detail.html#af91beae90c2fb0f931079b3d50a343bc">value_type_t</a>, CompatibleArrayType>::value and</div>
|
||
<div class="line"><a name="l02696"></a><span class="lineno"> 2696</span>  <a class="code" href="namespacenlohmann_1_1detail.html#a9135fcf616d6ac6e231a86e0a055ac44">is_detected</a><iterator_t, CompatibleArrayType>::value and</div>
|
||
<div class="line"><a name="l02697"></a><span class="lineno"> 2697</span> <span class="comment">// This is needed because json_reverse_iterator has a ::iterator type...</span></div>
|
||
<div class="line"><a name="l02698"></a><span class="lineno"> 2698</span> <span class="comment">// Therefore it is detected as a CompatibleArrayType.</span></div>
|
||
<div class="line"><a name="l02699"></a><span class="lineno"> 2699</span> <span class="comment">// The real fix would be to have an Iterable concept.</span></div>
|
||
<div class="line"><a name="l02700"></a><span class="lineno"> 2700</span>  not <a class="code" href="structnlohmann_1_1detail_1_1is__iterator__traits.html">is_iterator_traits</a><</div>
|
||
<div class="line"><a name="l02701"></a><span class="lineno"> 2701</span>  iterator_traits<CompatibleArrayType>>::value >></div>
|
||
<div class="line"><a name="l02702"></a><span class="lineno"> 2702</span> {</div>
|
||
<div class="line"><a name="l02703"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1is__compatible__array__type__impl_3_01BasicJsonType_00_01CompatibleA2ae7cc020294dfcc2b3bca5a9db30ddf.html#aa9bdf31f85ac3ee17180a008f1cb81f7"> 2703</a></span>  <span class="keyword">static</span> constexpr <span class="keywordtype">bool</span> value =</div>
|
||
<div class="line"><a name="l02704"></a><span class="lineno"> 2704</span>  std::is_constructible<BasicJsonType,</div>
|
||
<div class="line"><a name="l02705"></a><span class="lineno"> 2705</span>  <span class="keyword">typename</span> CompatibleArrayType::value_type>::value;</div>
|
||
<div class="line"><a name="l02706"></a><span class="lineno"> 2706</span> };</div>
|
||
<div class="line"><a name="l02707"></a><span class="lineno"> 2707</span>  </div>
|
||
<div class="line"><a name="l02708"></a><span class="lineno"> 2708</span> <span class="keyword">template</span> <<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> CompatibleArrayType></div>
|
||
<div class="line"><a name="l02709"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1is__compatible__array__type.html"> 2709</a></span> <span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1is__compatible__array__type.html">is_compatible_array_type</a></div>
|
||
<div class="line"><a name="l02710"></a><span class="lineno"> 2710</span>  : <a class="code" href="structnlohmann_1_1detail_1_1is__compatible__array__type__impl.html">is_compatible_array_type_impl</a><BasicJsonType, CompatibleArrayType> {};</div>
|
||
<div class="line"><a name="l02711"></a><span class="lineno"> 2711</span>  </div>
|
||
<div class="line"><a name="l02712"></a><span class="lineno"> 2712</span> <span class="keyword">template</span> <<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> ConstructibleArrayType, <span class="keyword">typename</span> = <span class="keywordtype">void</span>></div>
|
||
<div class="line"><a name="l02713"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1is__constructible__array__type__impl.html"> 2713</a></span> <span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1is__constructible__array__type__impl.html">is_constructible_array_type_impl</a> : std::false_type {};</div>
|
||
<div class="line"><a name="l02714"></a><span class="lineno"> 2714</span>  </div>
|
||
<div class="line"><a name="l02715"></a><span class="lineno"> 2715</span> <span class="keyword">template</span> <<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> ConstructibleArrayType></div>
|
||
<div class="line"><a name="l02716"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1is__constructible__array__type__impl_3_01BasicJsonType_00_01Construce6fa33688da703b95649da4749cdeb98.html"> 2716</a></span> <span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1is__constructible__array__type__impl.html">is_constructible_array_type_impl</a> <</div>
|
||
<div class="line"><a name="l02717"></a><span class="lineno"> 2717</span>  BasicJsonType, ConstructibleArrayType,</div>
|
||
<div class="line"><a name="l02718"></a><span class="lineno"> 2718</span>  <a class="code" href="namespacenlohmann_1_1detail.html#a02bcbc878bee413f25b985ada771aa9c">enable_if_t</a><<a class="code" href="namespacestd.html">std</a>::is_same<ConstructibleArrayType,</div>
|
||
<div class="line"><a name="l02719"></a><span class="lineno"> 2719</span>  typename BasicJsonType::value_type>::value >></div>
|
||
<div class="line"><a name="l02720"></a><span class="lineno"> 2720</span>  : std::true_type {};</div>
|
||
<div class="line"><a name="l02721"></a><span class="lineno"> 2721</span>  </div>
|
||
<div class="line"><a name="l02722"></a><span class="lineno"> 2722</span> <span class="keyword">template</span> <<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> ConstructibleArrayType></div>
|
||
<div class="line"><a name="l02723"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1is__constructible__array__type__impl_3_01BasicJsonType_00_01Construcb751ba39e14100ed41966800a3fcf4db.html"> 2723</a></span> <span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1is__constructible__array__type__impl.html">is_constructible_array_type_impl</a> <</div>
|
||
<div class="line"><a name="l02724"></a><span class="lineno"> 2724</span>  BasicJsonType, ConstructibleArrayType,</div>
|
||
<div class="line"><a name="l02725"></a><span class="lineno"> 2725</span>  <a class="code" href="namespacenlohmann_1_1detail.html#a02bcbc878bee413f25b985ada771aa9c">enable_if_t</a><not <a class="code" href="namespacestd.html">std</a>::is_same<ConstructibleArrayType,</div>
|
||
<div class="line"><a name="l02726"></a><span class="lineno"> 2726</span>  typename BasicJsonType::value_type>::value and</div>
|
||
<div class="line"><a name="l02727"></a><span class="lineno"> 2727</span>  std::is_default_constructible<ConstructibleArrayType>::value and</div>
|
||
<div class="line"><a name="l02728"></a><span class="lineno"> 2728</span> (std::is_move_assignable<ConstructibleArrayType>::value or</div>
|
||
<div class="line"><a name="l02729"></a><span class="lineno"> 2729</span>  std::is_copy_assignable<ConstructibleArrayType>::value) and</div>
|
||
<div class="line"><a name="l02730"></a><span class="lineno"> 2730</span> <a class="code" href="namespacenlohmann_1_1detail.html#a9135fcf616d6ac6e231a86e0a055ac44">is_detected</a><value_type_t, ConstructibleArrayType>::value and</div>
|
||
<div class="line"><a name="l02731"></a><span class="lineno"> 2731</span> <a class="code" href="namespacenlohmann_1_1detail.html#a9135fcf616d6ac6e231a86e0a055ac44">is_detected</a><iterator_t, ConstructibleArrayType>::value and</div>
|
||
<div class="line"><a name="l02732"></a><span class="lineno"> 2732</span> <a class="code" href="structnlohmann_1_1detail_1_1is__complete__type.html">is_complete_type</a><</div>
|
||
<div class="line"><a name="l02733"></a><span class="lineno"> 2733</span> detected_t<value_type_t, ConstructibleArrayType>>::value >></div>
|
||
<div class="line"><a name="l02734"></a><span class="lineno"> 2734</span> {</div>
|
||
<div class="line"><a name="l02735"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1is__constructible__array__type__impl_3_01BasicJsonType_00_01Construcb751ba39e14100ed41966800a3fcf4db.html#a39e2baa94bee9c7abed5e3cada4bf184"> 2735</a></span>  <span class="keyword">static</span> constexpr <span class="keywordtype">bool</span> value =</div>
|
||
<div class="line"><a name="l02736"></a><span class="lineno"> 2736</span>  <span class="comment">// This is needed because json_reverse_iterator has a ::iterator type,</span></div>
|
||
<div class="line"><a name="l02737"></a><span class="lineno"> 2737</span>  <span class="comment">// furthermore, std::back_insert_iterator (and other iterators) have a</span></div>
|
||
<div class="line"><a name="l02738"></a><span class="lineno"> 2738</span>  <span class="comment">// base class `iterator`... Therefore it is detected as a</span></div>
|
||
<div class="line"><a name="l02739"></a><span class="lineno"> 2739</span>  <span class="comment">// ConstructibleArrayType. The real fix would be to have an Iterable</span></div>
|
||
<div class="line"><a name="l02740"></a><span class="lineno"> 2740</span>  <span class="comment">// concept.</span></div>
|
||
<div class="line"><a name="l02741"></a><span class="lineno"> 2741</span>  not <a class="code" href="structnlohmann_1_1detail_1_1is__iterator__traits.html">is_iterator_traits<iterator_traits<ConstructibleArrayType></a>>::value and</div>
|
||
<div class="line"><a name="l02742"></a><span class="lineno"> 2742</span>  </div>
|
||
<div class="line"><a name="l02743"></a><span class="lineno"> 2743</span>  (std::is_same<<span class="keyword">typename</span> ConstructibleArrayType::value_type,</div>
|
||
<div class="line"><a name="l02744"></a><span class="lineno"> 2744</span>  <span class="keyword">typename</span> BasicJsonType::array_t::value_type>::value or</div>
|
||
<div class="line"><a name="l02745"></a><span class="lineno"> 2745</span>  <a class="code" href="structnlohmann_1_1detail_1_1has__from__json.html">has_from_json</a><BasicJsonType,</div>
|
||
<div class="line"><a name="l02746"></a><span class="lineno"> 2746</span>  <span class="keyword">typename</span> ConstructibleArrayType::value_type>::value or</div>
|
||
<div class="line"><a name="l02747"></a><span class="lineno"> 2747</span>  <a class="code" href="structnlohmann_1_1detail_1_1has__non__default__from__json.html">has_non_default_from_json</a> <</div>
|
||
<div class="line"><a name="l02748"></a><span class="lineno"> 2748</span>  BasicJsonType, <span class="keyword">typename</span> ConstructibleArrayType::value_type >::value);</div>
|
||
<div class="line"><a name="l02749"></a><span class="lineno"> 2749</span> };</div>
|
||
<div class="line"><a name="l02750"></a><span class="lineno"> 2750</span>  </div>
|
||
<div class="line"><a name="l02751"></a><span class="lineno"> 2751</span> <span class="keyword">template</span> <<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> ConstructibleArrayType></div>
|
||
<div class="line"><a name="l02752"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1is__constructible__array__type.html"> 2752</a></span> <span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1is__constructible__array__type.html">is_constructible_array_type</a></div>
|
||
<div class="line"><a name="l02753"></a><span class="lineno"> 2753</span>  : <a class="code" href="structnlohmann_1_1detail_1_1is__constructible__array__type__impl.html">is_constructible_array_type_impl</a><BasicJsonType, ConstructibleArrayType> {};</div>
|
||
<div class="line"><a name="l02754"></a><span class="lineno"> 2754</span>  </div>
|
||
<div class="line"><a name="l02755"></a><span class="lineno"> 2755</span> <span class="keyword">template</span> <<span class="keyword">typename</span> RealIntegerType, <span class="keyword">typename</span> CompatibleNumberIntegerType,</div>
|
||
<div class="line"><a name="l02756"></a><span class="lineno"> 2756</span>  <span class="keyword">typename</span> = <span class="keywordtype">void</span>></div>
|
||
<div class="line"><a name="l02757"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1is__compatible__integer__type__impl.html"> 2757</a></span> <span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1is__compatible__integer__type__impl.html">is_compatible_integer_type_impl</a> : std::false_type {};</div>
|
||
<div class="line"><a name="l02758"></a><span class="lineno"> 2758</span>  </div>
|
||
<div class="line"><a name="l02759"></a><span class="lineno"> 2759</span> <span class="keyword">template</span> <<span class="keyword">typename</span> RealIntegerType, <span class="keyword">typename</span> CompatibleNumberIntegerType></div>
|
||
<div class="line"><a name="l02760"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1is__compatible__integer__type__impl_3_01RealIntegerType_00_01Compati3a04243716e8bda67d1ff2aead18da88.html"> 2760</a></span> <span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1is__compatible__integer__type__impl.html">is_compatible_integer_type_impl</a> <</div>
|
||
<div class="line"><a name="l02761"></a><span class="lineno"> 2761</span>  RealIntegerType, CompatibleNumberIntegerType,</div>
|
||
<div class="line"><a name="l02762"></a><span class="lineno"> 2762</span>  <a class="code" href="namespacenlohmann_1_1detail.html#a02bcbc878bee413f25b985ada771aa9c">enable_if_t</a><<a class="code" href="namespacestd.html">std</a>::is_integral<RealIntegerType>::value and</div>
|
||
<div class="line"><a name="l02763"></a><span class="lineno"> 2763</span>  std::is_integral<CompatibleNumberIntegerType>::value and</div>
|
||
<div class="line"><a name="l02764"></a><span class="lineno"> 2764</span>  not std::is_same<bool, CompatibleNumberIntegerType>::value >></div>
|
||
<div class="line"><a name="l02765"></a><span class="lineno"> 2765</span> {</div>
|
||
<div class="line"><a name="l02766"></a><span class="lineno"> 2766</span>  <span class="comment">// is there an assert somewhere on overflows?</span></div>
|
||
<div class="line"><a name="l02767"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1is__compatible__integer__type__impl_3_01RealIntegerType_00_01Compati3a04243716e8bda67d1ff2aead18da88.html#a0e9f2586c4de25750563770c9388ab9f"> 2767</a></span>  <span class="keyword">using</span> <a class="code" href="structnlohmann_1_1detail_1_1is__compatible__integer__type__impl_3_01RealIntegerType_00_01Compati3a04243716e8bda67d1ff2aead18da88.html#a0e9f2586c4de25750563770c9388ab9f">RealLimits</a> = std::numeric_limits<RealIntegerType>;</div>
|
||
<div class="line"><a name="l02768"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1is__compatible__integer__type__impl_3_01RealIntegerType_00_01Compati3a04243716e8bda67d1ff2aead18da88.html#a002983b5c7c0f72b89d2151a6b39627d"> 2768</a></span>  <span class="keyword">using</span> <a class="code" href="structnlohmann_1_1detail_1_1is__compatible__integer__type__impl_3_01RealIntegerType_00_01Compati3a04243716e8bda67d1ff2aead18da88.html#a002983b5c7c0f72b89d2151a6b39627d">CompatibleLimits</a> = std::numeric_limits<CompatibleNumberIntegerType>;</div>
|
||
<div class="line"><a name="l02769"></a><span class="lineno"> 2769</span>  </div>
|
||
<div class="line"><a name="l02770"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1is__compatible__integer__type__impl_3_01RealIntegerType_00_01Compati3a04243716e8bda67d1ff2aead18da88.html#a478242daac7a70e28c749bfec00d1c1b"> 2770</a></span>  <span class="keyword">static</span> constexpr <span class="keyword">auto</span> value =</div>
|
||
<div class="line"><a name="l02771"></a><span class="lineno"> 2771</span>  std::is_constructible<RealIntegerType,</div>
|
||
<div class="line"><a name="l02772"></a><span class="lineno"> 2772</span>  CompatibleNumberIntegerType>::value and</div>
|
||
<div class="line"><a name="l02773"></a><span class="lineno"> 2773</span>  CompatibleLimits::is_integer and</div>
|
||
<div class="line"><a name="l02774"></a><span class="lineno"> 2774</span>  RealLimits::is_signed == CompatibleLimits::is_signed;</div>
|
||
<div class="line"><a name="l02775"></a><span class="lineno"> 2775</span> };</div>
|
||
<div class="line"><a name="l02776"></a><span class="lineno"> 2776</span>  </div>
|
||
<div class="line"><a name="l02777"></a><span class="lineno"> 2777</span> <span class="keyword">template</span> <<span class="keyword">typename</span> RealIntegerType, <span class="keyword">typename</span> CompatibleNumberIntegerType></div>
|
||
<div class="line"><a name="l02778"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1is__compatible__integer__type.html"> 2778</a></span> <span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1is__compatible__integer__type.html">is_compatible_integer_type</a></div>
|
||
<div class="line"><a name="l02779"></a><span class="lineno"> 2779</span>  : <a class="code" href="structnlohmann_1_1detail_1_1is__compatible__integer__type__impl.html">is_compatible_integer_type_impl</a><RealIntegerType,</div>
|
||
<div class="line"><a name="l02780"></a><span class="lineno"> 2780</span>  CompatibleNumberIntegerType> {};</div>
|
||
<div class="line"><a name="l02781"></a><span class="lineno"> 2781</span>  </div>
|
||
<div class="line"><a name="l02782"></a><span class="lineno"> 2782</span> <span class="keyword">template</span> <<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> CompatibleType, <span class="keyword">typename</span> = <span class="keywordtype">void</span>></div>
|
||
<div class="line"><a name="l02783"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1is__compatible__type__impl.html"> 2783</a></span> <span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1is__compatible__type__impl.html">is_compatible_type_impl</a>: std::false_type {};</div>
|
||
<div class="line"><a name="l02784"></a><span class="lineno"> 2784</span>  </div>
|
||
<div class="line"><a name="l02785"></a><span class="lineno"> 2785</span> <span class="keyword">template</span> <<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> CompatibleType></div>
|
||
<div class="line"><a name="l02786"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1is__compatible__type__impl_3_01BasicJsonType_00_01CompatibleType_00_fa54cb60e66f5c6ba93b1dd3f418b703.html"> 2786</a></span> <span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1is__compatible__type__impl.html">is_compatible_type_impl</a> <</div>
|
||
<div class="line"><a name="l02787"></a><span class="lineno"> 2787</span>  BasicJsonType, CompatibleType,</div>
|
||
<div class="line"><a name="l02788"></a><span class="lineno"> 2788</span>  <a class="code" href="namespacenlohmann_1_1detail.html#a02bcbc878bee413f25b985ada771aa9c">enable_if_t</a><<a class="code" href="structnlohmann_1_1detail_1_1is__complete__type.html">is_complete_type</a><CompatibleType>::value >></div>
|
||
<div class="line"><a name="l02789"></a><span class="lineno"> 2789</span> {</div>
|
||
<div class="line"><a name="l02790"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1is__compatible__type__impl_3_01BasicJsonType_00_01CompatibleType_00_fa54cb60e66f5c6ba93b1dd3f418b703.html#a1e4cacef2d41bdc682a1e2946edb0a41"> 2790</a></span>  <span class="keyword">static</span> constexpr <span class="keywordtype">bool</span> value =</div>
|
||
<div class="line"><a name="l02791"></a><span class="lineno"> 2791</span>  <a class="code" href="structnlohmann_1_1detail_1_1has__to__json.html">has_to_json<BasicJsonType, CompatibleType>::value</a>;</div>
|
||
<div class="line"><a name="l02792"></a><span class="lineno"> 2792</span> };</div>
|
||
<div class="line"><a name="l02793"></a><span class="lineno"> 2793</span>  </div>
|
||
<div class="line"><a name="l02794"></a><span class="lineno"> 2794</span> <span class="keyword">template</span> <<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> CompatibleType></div>
|
||
<div class="line"><a name="l02795"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1is__compatible__type.html"> 2795</a></span> <span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1is__compatible__type.html">is_compatible_type</a></div>
|
||
<div class="line"><a name="l02796"></a><span class="lineno"> 2796</span>  : <a class="code" href="structnlohmann_1_1detail_1_1is__compatible__type__impl.html">is_compatible_type_impl</a><BasicJsonType, CompatibleType> {};</div>
|
||
<div class="line"><a name="l02797"></a><span class="lineno"> 2797</span>  </div>
|
||
<div class="line"><a name="l02798"></a><span class="lineno"> 2798</span> <span class="comment">// https://en.cppreference.com/w/cpp/types/conjunction</span></div>
|
||
<div class="line"><a name="l02799"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1conjunction.html"> 2799</a></span> <span class="keyword">template</span><<span class="keyword">class</span>...> <span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1conjunction.html">conjunction</a> : std::true_type { };</div>
|
||
<div class="line"><a name="l02800"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1conjunction_3_01B1_01_4.html"> 2800</a></span> <span class="keyword">template</span><<span class="keyword">class</span> B1> <span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1conjunction_3_01B1_01_4.html">conjunction<B1></a> : B1 { };</div>
|
||
<div class="line"><a name="l02801"></a><span class="lineno"> 2801</span> <span class="keyword">template</span><<span class="keyword">class </span>B1, <span class="keyword">class</span>... Bn></div>
|
||
<div class="line"><a name="l02802"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1conjunction_3_01B1_00_01Bn_8_8_8_01_4.html"> 2802</a></span> <span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1conjunction.html">conjunction</a><B1, Bn...></div>
|
||
<div class="line"><a name="l02803"></a><span class="lineno"> 2803</span> : std::conditional<bool(B1::value), conjunction<Bn...>, B1>::type {};</div>
|
||
<div class="line"><a name="l02804"></a><span class="lineno"> 2804</span>  </div>
|
||
<div class="line"><a name="l02805"></a><span class="lineno"> 2805</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T1, <span class="keyword">typename</span> T2></div>
|
||
<div class="line"><a name="l02806"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1is__constructible__tuple.html"> 2806</a></span> <span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1is__constructible__tuple.html">is_constructible_tuple</a> : std::false_type {};</div>
|
||
<div class="line"><a name="l02807"></a><span class="lineno"> 2807</span>  </div>
|
||
<div class="line"><a name="l02808"></a><span class="lineno"> 2808</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T1, <span class="keyword">typename</span>... Args></div>
|
||
<div class="line"><a name="l02809"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1is__constructible__tuple_3_01T1_00_01std_1_1tuple_3_01Args_8_8_8_01_4_01_4.html"> 2809</a></span> <span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1is__constructible__tuple.html">is_constructible_tuple</a><T1, <a class="code" href="namespacestd.html">std</a>::tuple<Args...>> : <a class="code" href="structnlohmann_1_1detail_1_1conjunction.html">conjunction</a><std::is_constructible<T1, Args>...> {};</div>
|
||
<div class="line"><a name="l02810"></a><span class="lineno"> 2810</span> } <span class="comment">// namespace detail</span></div>
|
||
<div class="line"><a name="l02811"></a><span class="lineno"> 2811</span> } <span class="comment">// namespace nlohmann</span></div>
|
||
<div class="line"><a name="l02812"></a><span class="lineno"> 2812</span>  </div>
|
||
<div class="line"><a name="l02813"></a><span class="lineno"> 2813</span> <span class="comment">// #include <nlohmann/detail/value_t.hpp></span></div>
|
||
<div class="line"><a name="l02814"></a><span class="lineno"> 2814</span>  </div>
|
||
<div class="line"><a name="l02815"></a><span class="lineno"> 2815</span>  </div>
|
||
<div class="line"><a name="l02816"></a><span class="lineno"> 2816</span> <span class="preprocessor">#include <array></span> <span class="comment">// array</span></div>
|
||
<div class="line"><a name="l02817"></a><span class="lineno"> 2817</span> <span class="preprocessor">#include <ciso646></span> <span class="comment">// and</span></div>
|
||
<div class="line"><a name="l02818"></a><span class="lineno"> 2818</span> <span class="preprocessor">#include <cstddef></span> <span class="comment">// size_t</span></div>
|
||
<div class="line"><a name="l02819"></a><span class="lineno"> 2819</span> <span class="preprocessor">#include <cstdint></span> <span class="comment">// uint8_t</span></div>
|
||
<div class="line"><a name="l02820"></a><span class="lineno"> 2820</span> <span class="preprocessor">#include <string></span> <span class="comment">// string</span></div>
|
||
<div class="line"><a name="l02821"></a><span class="lineno"> 2821</span>  </div>
|
||
<div class="line"><a name="l02822"></a><span class="lineno"> 2822</span> <span class="keyword">namespace </span><a class="code" href="namespacenlohmann.html">nlohmann</a></div>
|
||
<div class="line"><a name="l02823"></a><span class="lineno"> 2823</span> {</div>
|
||
<div class="line"><a name="l02824"></a><span class="lineno"> 2824</span> <span class="keyword">namespace </span>detail</div>
|
||
<div class="line"><a name="l02825"></a><span class="lineno"> 2825</span> {</div>
|
||
<div class="line"><a name="l02827"></a><span class="lineno"> 2827</span> <span class="comment">// JSON type enumeration //</span></div>
|
||
<div class="line"><a name="l02829"></a><span class="lineno"> 2829</span> <span class="comment"></span> </div>
|
||
<div class="line"><a name="l02854"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985"> 2854</a></span> <span class="keyword">enum class</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985">value_t</a> : std::uint8_t</div>
|
||
<div class="line"><a name="l02855"></a><span class="lineno"> 2855</span> {</div>
|
||
<div class="line"><a name="l02856"></a><span class="lineno"> 2856</span>  <span class="keyword">null</span>, </div>
|
||
<div class="line"><a name="l02857"></a><span class="lineno"> 2857</span>  <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">object</a>, </div>
|
||
<div class="line"><a name="l02858"></a><span class="lineno"> 2858</span>  <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">array</a>, </div>
|
||
<div class="line"><a name="l02859"></a><span class="lineno"> 2859</span>  <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ab45cffe084dd3d20d928bee85e7b0f21">string</a>, </div>
|
||
<div class="line"><a name="l02860"></a><span class="lineno"> 2860</span>  <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a84e2c64f38f78ba3ea5c905ab5a2da27">boolean</a>, </div>
|
||
<div class="line"><a name="l02861"></a><span class="lineno"> 2861</span>  <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a5763da164f8659d94a56e29df64b4bcc">number_integer</a>, </div>
|
||
<div class="line"><a name="l02862"></a><span class="lineno"> 2862</span>  <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985adce7cc8ec29055c4158828921f2f265e">number_unsigned</a>, </div>
|
||
<div class="line"><a name="l02863"></a><span class="lineno"> 2863</span>  <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ad9966ecb59667235a57b4b999a649eef">number_float</a>, </div>
|
||
<div class="line"><a name="l02864"></a><span class="lineno"> 2864</span>  <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a94708897ec9db8647dfe695714c98e46">discarded</a> </div>
|
||
<div class="line"><a name="l02865"></a><span class="lineno"> 2865</span> };</div>
|
||
<div class="line"><a name="l02866"></a><span class="lineno"> 2866</span>  </div>
|
||
<div class="line"><a name="l02877"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a09169efff3bd1771fff29bd92cea19e0"> 2877</a></span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="namespacenlohmann_1_1detail.html#a09169efff3bd1771fff29bd92cea19e0">operator<</a>(<span class="keyword">const</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985">value_t</a> lhs, <span class="keyword">const</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985">value_t</a> rhs) noexcept</div>
|
||
<div class="line"><a name="l02878"></a><span class="lineno"> 2878</span> {</div>
|
||
<div class="line"><a name="l02879"></a><span class="lineno"> 2879</span>  <span class="keyword">static</span> constexpr std::array<std::uint8_t, 8> order = {{</div>
|
||
<div class="line"><a name="l02880"></a><span class="lineno"> 2880</span>  0 <span class="comment">/* null */</span>, 3 <span class="comment">/* object */</span>, 4 <span class="comment">/* array */</span>, 5 <span class="comment">/* string */</span>,</div>
|
||
<div class="line"><a name="l02881"></a><span class="lineno"> 2881</span>  1 <span class="comment">/* boolean */</span>, 2 <span class="comment">/* integer */</span>, 2 <span class="comment">/* unsigned */</span>, 2 <span class="comment">/* float */</span></div>
|
||
<div class="line"><a name="l02882"></a><span class="lineno"> 2882</span>  }</div>
|
||
<div class="line"><a name="l02883"></a><span class="lineno"> 2883</span>  };</div>
|
||
<div class="line"><a name="l02884"></a><span class="lineno"> 2884</span>  </div>
|
||
<div class="line"><a name="l02885"></a><span class="lineno"> 2885</span>  <span class="keyword">const</span> <span class="keyword">auto</span> l_index = <span class="keyword">static_cast<</span>std::size_t<span class="keyword">></span>(lhs);</div>
|
||
<div class="line"><a name="l02886"></a><span class="lineno"> 2886</span>  <span class="keyword">const</span> <span class="keyword">auto</span> r_index = <span class="keyword">static_cast<</span>std::size_t<span class="keyword">></span>(rhs);</div>
|
||
<div class="line"><a name="l02887"></a><span class="lineno"> 2887</span>  <span class="keywordflow">return</span> l_index < order.size() and r_index < order.size() and order[l_index] < order[r_index];</div>
|
||
<div class="line"><a name="l02888"></a><span class="lineno"> 2888</span> }</div>
|
||
<div class="line"><a name="l02889"></a><span class="lineno"> 2889</span> } <span class="comment">// namespace detail</span></div>
|
||
<div class="line"><a name="l02890"></a><span class="lineno"> 2890</span> } <span class="comment">// namespace nlohmann</span></div>
|
||
<div class="line"><a name="l02891"></a><span class="lineno"> 2891</span>  </div>
|
||
<div class="line"><a name="l02892"></a><span class="lineno"> 2892</span>  </div>
|
||
<div class="line"><a name="l02893"></a><span class="lineno"> 2893</span> <span class="keyword">namespace </span><a class="code" href="namespacenlohmann.html">nlohmann</a></div>
|
||
<div class="line"><a name="l02894"></a><span class="lineno"> 2894</span> {</div>
|
||
<div class="line"><a name="l02895"></a><span class="lineno"> 2895</span> <span class="keyword">namespace </span>detail</div>
|
||
<div class="line"><a name="l02896"></a><span class="lineno"> 2896</span> {</div>
|
||
<div class="line"><a name="l02897"></a><span class="lineno"> 2897</span> <span class="keyword">template</span><<span class="keyword">typename</span> BasicJsonType></div>
|
||
<div class="line"><a name="l02898"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a1f0395aad0fe853a4539288749d3a603"> 2898</a></span> <span class="keywordtype">void</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1f0395aad0fe853a4539288749d3a603">from_json</a>(<span class="keyword">const</span> BasicJsonType& j, <span class="keyword">typename</span> std::nullptr_t& n)</div>
|
||
<div class="line"><a name="l02899"></a><span class="lineno"> 2899</span> {</div>
|
||
<div class="line"><a name="l02900"></a><span class="lineno"> 2900</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not j.is_null()))</div>
|
||
<div class="line"><a name="l02901"></a><span class="lineno"> 2901</span>  {</div>
|
||
<div class="line"><a name="l02902"></a><span class="lineno"> 2902</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(302, <span class="stringliteral">"type must be null, but is "</span> + std::string(j.type_name())));</div>
|
||
<div class="line"><a name="l02903"></a><span class="lineno"> 2903</span>  }</div>
|
||
<div class="line"><a name="l02904"></a><span class="lineno"> 2904</span>  n = <span class="keyword">nullptr</span>;</div>
|
||
<div class="line"><a name="l02905"></a><span class="lineno"> 2905</span> }</div>
|
||
<div class="line"><a name="l02906"></a><span class="lineno"> 2906</span>  </div>
|
||
<div class="line"><a name="l02907"></a><span class="lineno"> 2907</span> <span class="comment">// overloads for basic_json template parameters</span></div>
|
||
<div class="line"><a name="l02908"></a><span class="lineno"> 2908</span> <span class="keyword">template</span><<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> ArithmeticType,</div>
|
||
<div class="line"><a name="l02909"></a><span class="lineno"> 2909</span>  enable_if_t<std::is_arithmetic<ArithmeticType>::value and</div>
|
||
<div class="line"><a name="l02910"></a><span class="lineno"> 2910</span>  not std::is_same<ArithmeticType, typename BasicJsonType::boolean_t>::value,</div>
|
||
<div class="line"><a name="l02911"></a><span class="lineno"> 2911</span>  <span class="keywordtype">int</span>> = 0></div>
|
||
<div class="line"><a name="l02912"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a85955b9c6dd31846e4b8e891f78614b6"> 2912</a></span> <span class="keywordtype">void</span> <a class="code" href="namespacenlohmann_1_1detail.html#a85955b9c6dd31846e4b8e891f78614b6">get_arithmetic_value</a>(<span class="keyword">const</span> BasicJsonType& j, ArithmeticType& val)</div>
|
||
<div class="line"><a name="l02913"></a><span class="lineno"> 2913</span> {</div>
|
||
<div class="line"><a name="l02914"></a><span class="lineno"> 2914</span>  <span class="keywordflow">switch</span> (<span class="keyword">static_cast<</span><a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985">value_t</a><span class="keyword">></span>(j))</div>
|
||
<div class="line"><a name="l02915"></a><span class="lineno"> 2915</span>  {</div>
|
||
<div class="line"><a name="l02916"></a><span class="lineno"> 2916</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985adce7cc8ec29055c4158828921f2f265e">value_t::number_unsigned</a>:</div>
|
||
<div class="line"><a name="l02917"></a><span class="lineno"> 2917</span>  {</div>
|
||
<div class="line"><a name="l02918"></a><span class="lineno"> 2918</span>  val = <span class="keyword">static_cast<</span>ArithmeticType<span class="keyword">></span>(*j.template get_ptr<const typename BasicJsonType::number_unsigned_t*>());</div>
|
||
<div class="line"><a name="l02919"></a><span class="lineno"> 2919</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l02920"></a><span class="lineno"> 2920</span>  }</div>
|
||
<div class="line"><a name="l02921"></a><span class="lineno"> 2921</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a5763da164f8659d94a56e29df64b4bcc">value_t::number_integer</a>:</div>
|
||
<div class="line"><a name="l02922"></a><span class="lineno"> 2922</span>  {</div>
|
||
<div class="line"><a name="l02923"></a><span class="lineno"> 2923</span>  val = <span class="keyword">static_cast<</span>ArithmeticType<span class="keyword">></span>(*j.template get_ptr<const typename BasicJsonType::number_integer_t*>());</div>
|
||
<div class="line"><a name="l02924"></a><span class="lineno"> 2924</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l02925"></a><span class="lineno"> 2925</span>  }</div>
|
||
<div class="line"><a name="l02926"></a><span class="lineno"> 2926</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ad9966ecb59667235a57b4b999a649eef">value_t::number_float</a>:</div>
|
||
<div class="line"><a name="l02927"></a><span class="lineno"> 2927</span>  {</div>
|
||
<div class="line"><a name="l02928"></a><span class="lineno"> 2928</span>  val = <span class="keyword">static_cast<</span>ArithmeticType<span class="keyword">></span>(*j.template get_ptr<const typename BasicJsonType::number_float_t*>());</div>
|
||
<div class="line"><a name="l02929"></a><span class="lineno"> 2929</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l02930"></a><span class="lineno"> 2930</span>  }</div>
|
||
<div class="line"><a name="l02931"></a><span class="lineno"> 2931</span>  </div>
|
||
<div class="line"><a name="l02932"></a><span class="lineno"> 2932</span>  <span class="keywordflow">default</span>:</div>
|
||
<div class="line"><a name="l02933"></a><span class="lineno"> 2933</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(302, <span class="stringliteral">"type must be number, but is "</span> + std::string(j.type_name())));</div>
|
||
<div class="line"><a name="l02934"></a><span class="lineno"> 2934</span>  }</div>
|
||
<div class="line"><a name="l02935"></a><span class="lineno"> 2935</span> }</div>
|
||
<div class="line"><a name="l02936"></a><span class="lineno"> 2936</span>  </div>
|
||
<div class="line"><a name="l02937"></a><span class="lineno"> 2937</span> <span class="keyword">template</span><<span class="keyword">typename</span> BasicJsonType></div>
|
||
<div class="line"><a name="l02938"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a58117f225f43d03e3a0a4a6f3d77c9d9"> 2938</a></span> <span class="keywordtype">void</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1f0395aad0fe853a4539288749d3a603">from_json</a>(<span class="keyword">const</span> BasicJsonType& j, <span class="keyword">typename</span> BasicJsonType::boolean_t& b)</div>
|
||
<div class="line"><a name="l02939"></a><span class="lineno"> 2939</span> {</div>
|
||
<div class="line"><a name="l02940"></a><span class="lineno"> 2940</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not j.is_boolean()))</div>
|
||
<div class="line"><a name="l02941"></a><span class="lineno"> 2941</span>  {</div>
|
||
<div class="line"><a name="l02942"></a><span class="lineno"> 2942</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(302, <span class="stringliteral">"type must be boolean, but is "</span> + std::string(j.type_name())));</div>
|
||
<div class="line"><a name="l02943"></a><span class="lineno"> 2943</span>  }</div>
|
||
<div class="line"><a name="l02944"></a><span class="lineno"> 2944</span>  b = *j.template get_ptr<const typename BasicJsonType::boolean_t*>();</div>
|
||
<div class="line"><a name="l02945"></a><span class="lineno"> 2945</span> }</div>
|
||
<div class="line"><a name="l02946"></a><span class="lineno"> 2946</span>  </div>
|
||
<div class="line"><a name="l02947"></a><span class="lineno"> 2947</span> <span class="keyword">template</span><<span class="keyword">typename</span> BasicJsonType></div>
|
||
<div class="line"><a name="l02948"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#ad74d89f77ada7a57eff38b43d4bf2335"> 2948</a></span> <span class="keywordtype">void</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1f0395aad0fe853a4539288749d3a603">from_json</a>(<span class="keyword">const</span> BasicJsonType& j, <span class="keyword">typename</span> BasicJsonType::string_t& s)</div>
|
||
<div class="line"><a name="l02949"></a><span class="lineno"> 2949</span> {</div>
|
||
<div class="line"><a name="l02950"></a><span class="lineno"> 2950</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not j.is_string()))</div>
|
||
<div class="line"><a name="l02951"></a><span class="lineno"> 2951</span>  {</div>
|
||
<div class="line"><a name="l02952"></a><span class="lineno"> 2952</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(302, <span class="stringliteral">"type must be string, but is "</span> + std::string(j.type_name())));</div>
|
||
<div class="line"><a name="l02953"></a><span class="lineno"> 2953</span>  }</div>
|
||
<div class="line"><a name="l02954"></a><span class="lineno"> 2954</span>  s = *j.template get_ptr<const typename BasicJsonType::string_t*>();</div>
|
||
<div class="line"><a name="l02955"></a><span class="lineno"> 2955</span> }</div>
|
||
<div class="line"><a name="l02956"></a><span class="lineno"> 2956</span>  </div>
|
||
<div class="line"><a name="l02957"></a><span class="lineno"> 2957</span> <span class="keyword">template</span> <</div>
|
||
<div class="line"><a name="l02958"></a><span class="lineno"> 2958</span>  <span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> ConstructibleStringType,</div>
|
||
<div class="line"><a name="l02959"></a><span class="lineno"> 2959</span>  <a class="code" href="namespacenlohmann_1_1detail.html#a02bcbc878bee413f25b985ada771aa9c">enable_if_t</a> <</div>
|
||
<div class="line"><a name="l02960"></a><span class="lineno"> 2960</span>  is_constructible_string_type<BasicJsonType, ConstructibleStringType>::value and</div>
|
||
<div class="line"><a name="l02961"></a><span class="lineno"> 2961</span>  not std::is_same<<span class="keyword">typename</span> BasicJsonType::string_t,</div>
|
||
<div class="line"><a name="l02962"></a><span class="lineno"> 2962</span>  ConstructibleStringType>::value,</div>
|
||
<div class="line"><a name="l02963"></a><span class="lineno"> 2963</span>  <span class="keywordtype">int</span> > = 0 ></div>
|
||
<div class="line"><a name="l02964"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a2932f2bc2943dac6d51669312f4fc0f5"> 2964</a></span> <span class="keywordtype">void</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1f0395aad0fe853a4539288749d3a603">from_json</a>(<span class="keyword">const</span> BasicJsonType& j, ConstructibleStringType& s)</div>
|
||
<div class="line"><a name="l02965"></a><span class="lineno"> 2965</span> {</div>
|
||
<div class="line"><a name="l02966"></a><span class="lineno"> 2966</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not j.is_string()))</div>
|
||
<div class="line"><a name="l02967"></a><span class="lineno"> 2967</span>  {</div>
|
||
<div class="line"><a name="l02968"></a><span class="lineno"> 2968</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(302, <span class="stringliteral">"type must be string, but is "</span> + std::string(j.type_name())));</div>
|
||
<div class="line"><a name="l02969"></a><span class="lineno"> 2969</span>  }</div>
|
||
<div class="line"><a name="l02970"></a><span class="lineno"> 2970</span>  </div>
|
||
<div class="line"><a name="l02971"></a><span class="lineno"> 2971</span>  s = *j.template get_ptr<const typename BasicJsonType::string_t*>();</div>
|
||
<div class="line"><a name="l02972"></a><span class="lineno"> 2972</span> }</div>
|
||
<div class="line"><a name="l02973"></a><span class="lineno"> 2973</span>  </div>
|
||
<div class="line"><a name="l02974"></a><span class="lineno"> 2974</span> <span class="keyword">template</span><<span class="keyword">typename</span> BasicJsonType></div>
|
||
<div class="line"><a name="l02975"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a7cb5dd7d46a60e65f9a8e0873b3f7dd8"> 2975</a></span> <span class="keywordtype">void</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1f0395aad0fe853a4539288749d3a603">from_json</a>(<span class="keyword">const</span> BasicJsonType& j, <span class="keyword">typename</span> BasicJsonType::number_float_t& val)</div>
|
||
<div class="line"><a name="l02976"></a><span class="lineno"> 2976</span> {</div>
|
||
<div class="line"><a name="l02977"></a><span class="lineno"> 2977</span>  <a class="code" href="namespacenlohmann_1_1detail.html#a85955b9c6dd31846e4b8e891f78614b6">get_arithmetic_value</a>(j, val);</div>
|
||
<div class="line"><a name="l02978"></a><span class="lineno"> 2978</span> }</div>
|
||
<div class="line"><a name="l02979"></a><span class="lineno"> 2979</span>  </div>
|
||
<div class="line"><a name="l02980"></a><span class="lineno"> 2980</span> <span class="keyword">template</span><<span class="keyword">typename</span> BasicJsonType></div>
|
||
<div class="line"><a name="l02981"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#ace4d5680ba413d9fd897ccb5d9c61a1c"> 2981</a></span> <span class="keywordtype">void</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1f0395aad0fe853a4539288749d3a603">from_json</a>(<span class="keyword">const</span> BasicJsonType& j, <span class="keyword">typename</span> BasicJsonType::number_unsigned_t& val)</div>
|
||
<div class="line"><a name="l02982"></a><span class="lineno"> 2982</span> {</div>
|
||
<div class="line"><a name="l02983"></a><span class="lineno"> 2983</span>  <a class="code" href="namespacenlohmann_1_1detail.html#a85955b9c6dd31846e4b8e891f78614b6">get_arithmetic_value</a>(j, val);</div>
|
||
<div class="line"><a name="l02984"></a><span class="lineno"> 2984</span> }</div>
|
||
<div class="line"><a name="l02985"></a><span class="lineno"> 2985</span>  </div>
|
||
<div class="line"><a name="l02986"></a><span class="lineno"> 2986</span> <span class="keyword">template</span><<span class="keyword">typename</span> BasicJsonType></div>
|
||
<div class="line"><a name="l02987"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a047d881e611fcac709dc318f730a1732"> 2987</a></span> <span class="keywordtype">void</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1f0395aad0fe853a4539288749d3a603">from_json</a>(<span class="keyword">const</span> BasicJsonType& j, <span class="keyword">typename</span> BasicJsonType::number_integer_t& val)</div>
|
||
<div class="line"><a name="l02988"></a><span class="lineno"> 2988</span> {</div>
|
||
<div class="line"><a name="l02989"></a><span class="lineno"> 2989</span>  <a class="code" href="namespacenlohmann_1_1detail.html#a85955b9c6dd31846e4b8e891f78614b6">get_arithmetic_value</a>(j, val);</div>
|
||
<div class="line"><a name="l02990"></a><span class="lineno"> 2990</span> }</div>
|
||
<div class="line"><a name="l02991"></a><span class="lineno"> 2991</span>  </div>
|
||
<div class="line"><a name="l02992"></a><span class="lineno"> 2992</span> <span class="keyword">template</span><<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> EnumType,</div>
|
||
<div class="line"><a name="l02993"></a><span class="lineno"> 2993</span>  enable_if_t<std::is_enum<EnumType>::value, <span class="keywordtype">int</span>> = 0></div>
|
||
<div class="line"><a name="l02994"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a5440d650150d01e8015133521351b459"> 2994</a></span> <span class="keywordtype">void</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1f0395aad0fe853a4539288749d3a603">from_json</a>(<span class="keyword">const</span> BasicJsonType& j, EnumType& e)</div>
|
||
<div class="line"><a name="l02995"></a><span class="lineno"> 2995</span> {</div>
|
||
<div class="line"><a name="l02996"></a><span class="lineno"> 2996</span>  <span class="keyword">typename</span> std::underlying_type<EnumType>::type val;</div>
|
||
<div class="line"><a name="l02997"></a><span class="lineno"> 2997</span>  <a class="code" href="namespacenlohmann_1_1detail.html#a85955b9c6dd31846e4b8e891f78614b6">get_arithmetic_value</a>(j, val);</div>
|
||
<div class="line"><a name="l02998"></a><span class="lineno"> 2998</span>  e = <span class="keyword">static_cast<</span>EnumType<span class="keyword">></span>(val);</div>
|
||
<div class="line"><a name="l02999"></a><span class="lineno"> 2999</span> }</div>
|
||
<div class="line"><a name="l03000"></a><span class="lineno"> 3000</span>  </div>
|
||
<div class="line"><a name="l03001"></a><span class="lineno"> 3001</span> <span class="comment">// forward_list doesn't have an insert method</span></div>
|
||
<div class="line"><a name="l03002"></a><span class="lineno"> 3002</span> <span class="keyword">template</span><<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> T, <span class="keyword">typename</span> Allocator,</div>
|
||
<div class="line"><a name="l03003"></a><span class="lineno"> 3003</span>  enable_if_t<std::is_convertible<BasicJsonType, T>::value, <span class="keywordtype">int</span>> = 0></div>
|
||
<div class="line"><a name="l03004"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a5cfb765aad92795abd7fda29d017272a"> 3004</a></span> <span class="keywordtype">void</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1f0395aad0fe853a4539288749d3a603">from_json</a>(<span class="keyword">const</span> BasicJsonType& j, std::forward_list<T, Allocator>& l)</div>
|
||
<div class="line"><a name="l03005"></a><span class="lineno"> 3005</span> {</div>
|
||
<div class="line"><a name="l03006"></a><span class="lineno"> 3006</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not j.is_array()))</div>
|
||
<div class="line"><a name="l03007"></a><span class="lineno"> 3007</span>  {</div>
|
||
<div class="line"><a name="l03008"></a><span class="lineno"> 3008</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(302, <span class="stringliteral">"type must be array, but is "</span> + std::string(j.type_name())));</div>
|
||
<div class="line"><a name="l03009"></a><span class="lineno"> 3009</span>  }</div>
|
||
<div class="line"><a name="l03010"></a><span class="lineno"> 3010</span>  l.clear();</div>
|
||
<div class="line"><a name="l03011"></a><span class="lineno"> 3011</span>  std::transform(j.rbegin(), j.rend(),</div>
|
||
<div class="line"><a name="l03012"></a><span class="lineno"> 3012</span>  std::front_inserter(l), [](<span class="keyword">const</span> BasicJsonType & i)</div>
|
||
<div class="line"><a name="l03013"></a><span class="lineno"> 3013</span>  {</div>
|
||
<div class="line"><a name="l03014"></a><span class="lineno"> 3014</span>  return i.template get<T>();</div>
|
||
<div class="line"><a name="l03015"></a><span class="lineno"> 3015</span>  });</div>
|
||
<div class="line"><a name="l03016"></a><span class="lineno"> 3016</span> }</div>
|
||
<div class="line"><a name="l03017"></a><span class="lineno"> 3017</span>  </div>
|
||
<div class="line"><a name="l03018"></a><span class="lineno"> 3018</span> <span class="comment">// valarray doesn't have an insert method</span></div>
|
||
<div class="line"><a name="l03019"></a><span class="lineno"> 3019</span> <span class="keyword">template</span><<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> T,</div>
|
||
<div class="line"><a name="l03020"></a><span class="lineno"> 3020</span>  enable_if_t<std::is_convertible<BasicJsonType, T>::value, <span class="keywordtype">int</span>> = 0></div>
|
||
<div class="line"><a name="l03021"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a3df497b1d3977f071b488ecac1401517"> 3021</a></span> <span class="keywordtype">void</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1f0395aad0fe853a4539288749d3a603">from_json</a>(<span class="keyword">const</span> BasicJsonType& j, std::valarray<T>& l)</div>
|
||
<div class="line"><a name="l03022"></a><span class="lineno"> 3022</span> {</div>
|
||
<div class="line"><a name="l03023"></a><span class="lineno"> 3023</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not j.is_array()))</div>
|
||
<div class="line"><a name="l03024"></a><span class="lineno"> 3024</span>  {</div>
|
||
<div class="line"><a name="l03025"></a><span class="lineno"> 3025</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(302, <span class="stringliteral">"type must be array, but is "</span> + std::string(j.type_name())));</div>
|
||
<div class="line"><a name="l03026"></a><span class="lineno"> 3026</span>  }</div>
|
||
<div class="line"><a name="l03027"></a><span class="lineno"> 3027</span>  l.resize(j.size());</div>
|
||
<div class="line"><a name="l03028"></a><span class="lineno"> 3028</span>  std::copy(j.begin(), j.end(), std::begin(l));</div>
|
||
<div class="line"><a name="l03029"></a><span class="lineno"> 3029</span> }</div>
|
||
<div class="line"><a name="l03030"></a><span class="lineno"> 3030</span>  </div>
|
||
<div class="line"><a name="l03031"></a><span class="lineno"> 3031</span> <span class="keyword">template</span> <<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> T, std::<span class="keywordtype">size_t</span> N></div>
|
||
<div class="line"><a name="l03032"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a7deb2db8eed6f1762373dde7a6595760"> 3032</a></span> <span class="keyword">auto</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1f0395aad0fe853a4539288749d3a603">from_json</a>(<span class="keyword">const</span> BasicJsonType& j, T (&arr)[N])</div>
|
||
<div class="line"><a name="l03033"></a><span class="lineno"> 3033</span> -> decltype(j.template get<T>(), <span class="keywordtype">void</span>())</div>
|
||
<div class="line"><a name="l03034"></a><span class="lineno"> 3034</span> {</div>
|
||
<div class="line"><a name="l03035"></a><span class="lineno"> 3035</span>  <span class="keywordflow">for</span> (std::size_t i = 0; i < N; ++i)</div>
|
||
<div class="line"><a name="l03036"></a><span class="lineno"> 3036</span>  {</div>
|
||
<div class="line"><a name="l03037"></a><span class="lineno"> 3037</span>  arr[i] = j.at(i).template get<T>();</div>
|
||
<div class="line"><a name="l03038"></a><span class="lineno"> 3038</span>  }</div>
|
||
<div class="line"><a name="l03039"></a><span class="lineno"> 3039</span> }</div>
|
||
<div class="line"><a name="l03040"></a><span class="lineno"> 3040</span>  </div>
|
||
<div class="line"><a name="l03041"></a><span class="lineno"> 3041</span> <span class="keyword">template</span><<span class="keyword">typename</span> BasicJsonType></div>
|
||
<div class="line"><a name="l03042"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a40f7bb070a60e8ba14fffb9c117fcbd8"> 3042</a></span> <span class="keywordtype">void</span> <a class="code" href="namespacenlohmann_1_1detail.html#a40f7bb070a60e8ba14fffb9c117fcbd8">from_json_array_impl</a>(<span class="keyword">const</span> BasicJsonType& j, <span class="keyword">typename</span> BasicJsonType::array_t& arr, <a class="code" href="structnlohmann_1_1detail_1_1priority__tag.html">priority_tag<3></a> <span class="comment">/*unused*/</span>)</div>
|
||
<div class="line"><a name="l03043"></a><span class="lineno"> 3043</span> {</div>
|
||
<div class="line"><a name="l03044"></a><span class="lineno"> 3044</span>  arr = *j.template get_ptr<const typename BasicJsonType::array_t*>();</div>
|
||
<div class="line"><a name="l03045"></a><span class="lineno"> 3045</span> }</div>
|
||
<div class="line"><a name="l03046"></a><span class="lineno"> 3046</span>  </div>
|
||
<div class="line"><a name="l03047"></a><span class="lineno"> 3047</span> <span class="keyword">template</span> <<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> T, std::<span class="keywordtype">size_t</span> N></div>
|
||
<div class="line"><a name="l03048"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#aba0ce45ebb69fd2c7132a00f9a56b503"> 3048</a></span> <span class="keyword">auto</span> <a class="code" href="namespacenlohmann_1_1detail.html#a40f7bb070a60e8ba14fffb9c117fcbd8">from_json_array_impl</a>(<span class="keyword">const</span> BasicJsonType& j, std::array<T, N>& arr,</div>
|
||
<div class="line"><a name="l03049"></a><span class="lineno"> 3049</span>  <a class="code" href="structnlohmann_1_1detail_1_1priority__tag.html">priority_tag<2></a> <span class="comment">/*unused*/</span>)</div>
|
||
<div class="line"><a name="l03050"></a><span class="lineno"> 3050</span> -> decltype(j.template get<T>(), <span class="keywordtype">void</span>())</div>
|
||
<div class="line"><a name="l03051"></a><span class="lineno"> 3051</span> {</div>
|
||
<div class="line"><a name="l03052"></a><span class="lineno"> 3052</span>  <span class="keywordflow">for</span> (std::size_t i = 0; i < N; ++i)</div>
|
||
<div class="line"><a name="l03053"></a><span class="lineno"> 3053</span>  {</div>
|
||
<div class="line"><a name="l03054"></a><span class="lineno"> 3054</span>  arr[i] = j.at(i).template get<T>();</div>
|
||
<div class="line"><a name="l03055"></a><span class="lineno"> 3055</span>  }</div>
|
||
<div class="line"><a name="l03056"></a><span class="lineno"> 3056</span> }</div>
|
||
<div class="line"><a name="l03057"></a><span class="lineno"> 3057</span>  </div>
|
||
<div class="line"><a name="l03058"></a><span class="lineno"> 3058</span> <span class="keyword">template</span><<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> ConstructibleArrayType></div>
|
||
<div class="line"><a name="l03059"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a464e1246f3df7edea79c3f81ab701edd"> 3059</a></span> <span class="keyword">auto</span> <a class="code" href="namespacenlohmann_1_1detail.html#a40f7bb070a60e8ba14fffb9c117fcbd8">from_json_array_impl</a>(<span class="keyword">const</span> BasicJsonType& j, ConstructibleArrayType& arr, <a class="code" href="structnlohmann_1_1detail_1_1priority__tag.html">priority_tag<1></a> <span class="comment">/*unused*/</span>)</div>
|
||
<div class="line"><a name="l03060"></a><span class="lineno"> 3060</span> -> decltype(</div>
|
||
<div class="line"><a name="l03061"></a><span class="lineno"> 3061</span>  arr.reserve(std::declval<typename ConstructibleArrayType::size_type>()),</div>
|
||
<div class="line"><a name="l03062"></a><span class="lineno"> 3062</span>  j.template get<typename ConstructibleArrayType::value_type>(),</div>
|
||
<div class="line"><a name="l03063"></a><span class="lineno"> 3063</span>  <span class="keywordtype">void</span>())</div>
|
||
<div class="line"><a name="l03064"></a><span class="lineno"> 3064</span> {</div>
|
||
<div class="line"><a name="l03065"></a><span class="lineno"> 3065</span>  <span class="keyword">using</span> std::end;</div>
|
||
<div class="line"><a name="l03066"></a><span class="lineno"> 3066</span>  </div>
|
||
<div class="line"><a name="l03067"></a><span class="lineno"> 3067</span>  ConstructibleArrayType ret;</div>
|
||
<div class="line"><a name="l03068"></a><span class="lineno"> 3068</span>  ret.reserve(j.size());</div>
|
||
<div class="line"><a name="l03069"></a><span class="lineno"> 3069</span>  std::transform(j.begin(), j.end(),</div>
|
||
<div class="line"><a name="l03070"></a><span class="lineno"> 3070</span>  std::inserter(ret, end(ret)), [](<span class="keyword">const</span> BasicJsonType & i)</div>
|
||
<div class="line"><a name="l03071"></a><span class="lineno"> 3071</span>  {</div>
|
||
<div class="line"><a name="l03072"></a><span class="lineno"> 3072</span>  <span class="comment">// get<BasicJsonType>() returns *this, this won't call a from_json</span></div>
|
||
<div class="line"><a name="l03073"></a><span class="lineno"> 3073</span>  <span class="comment">// method when value_type is BasicJsonType</span></div>
|
||
<div class="line"><a name="l03074"></a><span class="lineno"> 3074</span>  <span class="keywordflow">return</span> i.template get<typename ConstructibleArrayType::value_type>();</div>
|
||
<div class="line"><a name="l03075"></a><span class="lineno"> 3075</span>  });</div>
|
||
<div class="line"><a name="l03076"></a><span class="lineno"> 3076</span>  arr = std::move(ret);</div>
|
||
<div class="line"><a name="l03077"></a><span class="lineno"> 3077</span> }</div>
|
||
<div class="line"><a name="l03078"></a><span class="lineno"> 3078</span>  </div>
|
||
<div class="line"><a name="l03079"></a><span class="lineno"> 3079</span> <span class="keyword">template</span> <<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> ConstructibleArrayType></div>
|
||
<div class="line"><a name="l03080"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a20cf21255e75cff1ffb0869c2c545e63"> 3080</a></span> <span class="keywordtype">void</span> <a class="code" href="namespacenlohmann_1_1detail.html#a40f7bb070a60e8ba14fffb9c117fcbd8">from_json_array_impl</a>(<span class="keyword">const</span> BasicJsonType& j, ConstructibleArrayType& arr,</div>
|
||
<div class="line"><a name="l03081"></a><span class="lineno"> 3081</span>  <a class="code" href="structnlohmann_1_1detail_1_1priority__tag_3_010_01_4.html">priority_tag<0></a> <span class="comment">/*unused*/</span>)</div>
|
||
<div class="line"><a name="l03082"></a><span class="lineno"> 3082</span> {</div>
|
||
<div class="line"><a name="l03083"></a><span class="lineno"> 3083</span>  <span class="keyword">using</span> std::end;</div>
|
||
<div class="line"><a name="l03084"></a><span class="lineno"> 3084</span>  </div>
|
||
<div class="line"><a name="l03085"></a><span class="lineno"> 3085</span>  ConstructibleArrayType ret;</div>
|
||
<div class="line"><a name="l03086"></a><span class="lineno"> 3086</span>  std::transform(</div>
|
||
<div class="line"><a name="l03087"></a><span class="lineno"> 3087</span>  j.begin(), j.end(), std::inserter(ret, end(ret)),</div>
|
||
<div class="line"><a name="l03088"></a><span class="lineno"> 3088</span>  [](<span class="keyword">const</span> BasicJsonType & i)</div>
|
||
<div class="line"><a name="l03089"></a><span class="lineno"> 3089</span>  {</div>
|
||
<div class="line"><a name="l03090"></a><span class="lineno"> 3090</span>  <span class="comment">// get<BasicJsonType>() returns *this, this won't call a from_json</span></div>
|
||
<div class="line"><a name="l03091"></a><span class="lineno"> 3091</span>  <span class="comment">// method when value_type is BasicJsonType</span></div>
|
||
<div class="line"><a name="l03092"></a><span class="lineno"> 3092</span>  <span class="keywordflow">return</span> i.template get<typename ConstructibleArrayType::value_type>();</div>
|
||
<div class="line"><a name="l03093"></a><span class="lineno"> 3093</span>  });</div>
|
||
<div class="line"><a name="l03094"></a><span class="lineno"> 3094</span>  arr = std::move(ret);</div>
|
||
<div class="line"><a name="l03095"></a><span class="lineno"> 3095</span> }</div>
|
||
<div class="line"><a name="l03096"></a><span class="lineno"> 3096</span>  </div>
|
||
<div class="line"><a name="l03097"></a><span class="lineno"> 3097</span> <span class="keyword">template</span> <<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> ConstructibleArrayType,</div>
|
||
<div class="line"><a name="l03098"></a><span class="lineno"> 3098</span>  <a class="code" href="namespacenlohmann_1_1detail.html#a02bcbc878bee413f25b985ada771aa9c">enable_if_t</a> <</div>
|
||
<div class="line"><a name="l03099"></a><span class="lineno"> 3099</span>  is_constructible_array_type<BasicJsonType, ConstructibleArrayType>::value and</div>
|
||
<div class="line"><a name="l03100"></a><span class="lineno"> 3100</span>  not is_constructible_object_type<BasicJsonType, ConstructibleArrayType>::value and</div>
|
||
<div class="line"><a name="l03101"></a><span class="lineno"> 3101</span>  not is_constructible_string_type<BasicJsonType, ConstructibleArrayType>::value and</div>
|
||
<div class="line"><a name="l03102"></a><span class="lineno"> 3102</span>  not is_basic_json<ConstructibleArrayType>::value,</div>
|
||
<div class="line"><a name="l03103"></a><span class="lineno"> 3103</span>  <span class="keywordtype">int</span> > = 0 ></div>
|
||
<div class="line"><a name="l03104"></a><span class="lineno"> 3104</span>  </div>
|
||
<div class="line"><a name="l03105"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a14d8cdf544585f1c38eab6a0820e55f7"> 3105</a></span> <span class="keyword">auto</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1f0395aad0fe853a4539288749d3a603">from_json</a>(<span class="keyword">const</span> BasicJsonType& j, ConstructibleArrayType& arr)</div>
|
||
<div class="line"><a name="l03106"></a><span class="lineno"> 3106</span> -> decltype(<a class="code" href="namespacenlohmann_1_1detail.html#a40f7bb070a60e8ba14fffb9c117fcbd8">from_json_array_impl</a>(j, arr, <a class="code" href="structnlohmann_1_1detail_1_1priority__tag.html">priority_tag<3></a> {}),</div>
|
||
<div class="line"><a name="l03107"></a><span class="lineno"> 3107</span> j.template get<typename ConstructibleArrayType::value_type>(),</div>
|
||
<div class="line"><a name="l03108"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a59fca69799f6b9e366710cb9043aa77d"> 3108</a></span> <span class="keywordtype">void</span>())</div>
|
||
<div class="line"><a name="l03109"></a><span class="lineno"> 3109</span> {</div>
|
||
<div class="line"><a name="l03110"></a><span class="lineno"> 3110</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not j.is_array()))</div>
|
||
<div class="line"><a name="l03111"></a><span class="lineno"> 3111</span>  {</div>
|
||
<div class="line"><a name="l03112"></a><span class="lineno"> 3112</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(302, <span class="stringliteral">"type must be array, but is "</span> +</div>
|
||
<div class="line"><a name="l03113"></a><span class="lineno"> 3113</span>  std::string(j.type_name())));</div>
|
||
<div class="line"><a name="l03114"></a><span class="lineno"> 3114</span>  }</div>
|
||
<div class="line"><a name="l03115"></a><span class="lineno"> 3115</span>  </div>
|
||
<div class="line"><a name="l03116"></a><span class="lineno"> 3116</span>  <a class="code" href="namespacenlohmann_1_1detail.html#a40f7bb070a60e8ba14fffb9c117fcbd8">from_json_array_impl</a>(j, arr, <a class="code" href="structnlohmann_1_1detail_1_1priority__tag.html">priority_tag<3></a> {});</div>
|
||
<div class="line"><a name="l03117"></a><span class="lineno"> 3117</span> }</div>
|
||
<div class="line"><a name="l03118"></a><span class="lineno"> 3118</span>  </div>
|
||
<div class="line"><a name="l03119"></a><span class="lineno"> 3119</span> <span class="keyword">template</span><<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> ConstructibleObjectType,</div>
|
||
<div class="line"><a name="l03120"></a><span class="lineno"> 3120</span>  enable_if_t<is_constructible_object_type<BasicJsonType, ConstructibleObjectType>::value, <span class="keywordtype">int</span>> = 0></div>
|
||
<div class="line"><a name="l03121"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a5b24896e5f5db6af06d939dde4b63fe1"> 3121</a></span> <span class="keywordtype">void</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1f0395aad0fe853a4539288749d3a603">from_json</a>(<span class="keyword">const</span> BasicJsonType& j, ConstructibleObjectType& obj)</div>
|
||
<div class="line"><a name="l03122"></a><span class="lineno"> 3122</span> {</div>
|
||
<div class="line"><a name="l03123"></a><span class="lineno"> 3123</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not j.is_object()))</div>
|
||
<div class="line"><a name="l03124"></a><span class="lineno"> 3124</span>  {</div>
|
||
<div class="line"><a name="l03125"></a><span class="lineno"> 3125</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(302, <span class="stringliteral">"type must be object, but is "</span> + std::string(j.type_name())));</div>
|
||
<div class="line"><a name="l03126"></a><span class="lineno"> 3126</span>  }</div>
|
||
<div class="line"><a name="l03127"></a><span class="lineno"> 3127</span>  </div>
|
||
<div class="line"><a name="l03128"></a><span class="lineno"> 3128</span>  ConstructibleObjectType ret;</div>
|
||
<div class="line"><a name="l03129"></a><span class="lineno"> 3129</span>  <span class="keyword">auto</span> inner_object = j.template get_ptr<const typename BasicJsonType::object_t*>();</div>
|
||
<div class="line"><a name="l03130"></a><span class="lineno"> 3130</span>  <span class="keyword">using</span> value_type = <span class="keyword">typename</span> ConstructibleObjectType::value_type;</div>
|
||
<div class="line"><a name="l03131"></a><span class="lineno"> 3131</span>  std::transform(</div>
|
||
<div class="line"><a name="l03132"></a><span class="lineno"> 3132</span>  inner_object->begin(), inner_object->end(),</div>
|
||
<div class="line"><a name="l03133"></a><span class="lineno"> 3133</span>  std::inserter(ret, ret.begin()),</div>
|
||
<div class="line"><a name="l03134"></a><span class="lineno"> 3134</span>  [](<span class="keyword">typename</span> BasicJsonType::object_t::value_type <span class="keyword">const</span> & p)</div>
|
||
<div class="line"><a name="l03135"></a><span class="lineno"> 3135</span>  {</div>
|
||
<div class="line"><a name="l03136"></a><span class="lineno"> 3136</span>  return value_type(p.first, p.second.template get<typename ConstructibleObjectType::mapped_type>());</div>
|
||
<div class="line"><a name="l03137"></a><span class="lineno"> 3137</span>  });</div>
|
||
<div class="line"><a name="l03138"></a><span class="lineno"> 3138</span>  obj = std::move(ret);</div>
|
||
<div class="line"><a name="l03139"></a><span class="lineno"> 3139</span> }</div>
|
||
<div class="line"><a name="l03140"></a><span class="lineno"> 3140</span>  </div>
|
||
<div class="line"><a name="l03141"></a><span class="lineno"> 3141</span> <span class="comment">// overload for arithmetic types, not chosen for basic_json template arguments</span></div>
|
||
<div class="line"><a name="l03142"></a><span class="lineno"> 3142</span> <span class="comment">// (BooleanType, etc..); note: Is it really necessary to provide explicit</span></div>
|
||
<div class="line"><a name="l03143"></a><span class="lineno"> 3143</span> <span class="comment">// overloads for boolean_t etc. in case of a custom BooleanType which is not</span></div>
|
||
<div class="line"><a name="l03144"></a><span class="lineno"> 3144</span> <span class="comment">// an arithmetic type?</span></div>
|
||
<div class="line"><a name="l03145"></a><span class="lineno"> 3145</span> <span class="keyword">template</span><<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> ArithmeticType,</div>
|
||
<div class="line"><a name="l03146"></a><span class="lineno"> 3146</span>  <a class="code" href="namespacenlohmann_1_1detail.html#a02bcbc878bee413f25b985ada771aa9c">enable_if_t</a> <</div>
|
||
<div class="line"><a name="l03147"></a><span class="lineno"> 3147</span>  std::is_arithmetic<ArithmeticType>::value and</div>
|
||
<div class="line"><a name="l03148"></a><span class="lineno"> 3148</span>  not std::is_same<ArithmeticType, typename BasicJsonType::number_unsigned_t>::value and</div>
|
||
<div class="line"><a name="l03149"></a><span class="lineno"> 3149</span>  not std::is_same<ArithmeticType, typename BasicJsonType::number_integer_t>::value and</div>
|
||
<div class="line"><a name="l03150"></a><span class="lineno"> 3150</span>  not std::is_same<ArithmeticType, typename BasicJsonType::number_float_t>::value and</div>
|
||
<div class="line"><a name="l03151"></a><span class="lineno"> 3151</span>  not std::is_same<ArithmeticType, typename BasicJsonType::boolean_t>::value,</div>
|
||
<div class="line"><a name="l03152"></a><span class="lineno"> 3152</span>  <span class="keywordtype">int</span>> = 0></div>
|
||
<div class="line"><a name="l03153"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a839b0ab50d2c9bce669068f56bc41202"> 3153</a></span> <span class="keywordtype">void</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1f0395aad0fe853a4539288749d3a603">from_json</a>(<span class="keyword">const</span> BasicJsonType& j, ArithmeticType& val)</div>
|
||
<div class="line"><a name="l03154"></a><span class="lineno"> 3154</span> {</div>
|
||
<div class="line"><a name="l03155"></a><span class="lineno"> 3155</span>  <span class="keywordflow">switch</span> (<span class="keyword">static_cast<</span><a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985">value_t</a><span class="keyword">></span>(j))</div>
|
||
<div class="line"><a name="l03156"></a><span class="lineno"> 3156</span>  {</div>
|
||
<div class="line"><a name="l03157"></a><span class="lineno"> 3157</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985adce7cc8ec29055c4158828921f2f265e">value_t::number_unsigned</a>:</div>
|
||
<div class="line"><a name="l03158"></a><span class="lineno"> 3158</span>  {</div>
|
||
<div class="line"><a name="l03159"></a><span class="lineno"> 3159</span>  val = <span class="keyword">static_cast<</span>ArithmeticType<span class="keyword">></span>(*j.template get_ptr<const typename BasicJsonType::number_unsigned_t*>());</div>
|
||
<div class="line"><a name="l03160"></a><span class="lineno"> 3160</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l03161"></a><span class="lineno"> 3161</span>  }</div>
|
||
<div class="line"><a name="l03162"></a><span class="lineno"> 3162</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a5763da164f8659d94a56e29df64b4bcc">value_t::number_integer</a>:</div>
|
||
<div class="line"><a name="l03163"></a><span class="lineno"> 3163</span>  {</div>
|
||
<div class="line"><a name="l03164"></a><span class="lineno"> 3164</span>  val = <span class="keyword">static_cast<</span>ArithmeticType<span class="keyword">></span>(*j.template get_ptr<const typename BasicJsonType::number_integer_t*>());</div>
|
||
<div class="line"><a name="l03165"></a><span class="lineno"> 3165</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l03166"></a><span class="lineno"> 3166</span>  }</div>
|
||
<div class="line"><a name="l03167"></a><span class="lineno"> 3167</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ad9966ecb59667235a57b4b999a649eef">value_t::number_float</a>:</div>
|
||
<div class="line"><a name="l03168"></a><span class="lineno"> 3168</span>  {</div>
|
||
<div class="line"><a name="l03169"></a><span class="lineno"> 3169</span>  val = <span class="keyword">static_cast<</span>ArithmeticType<span class="keyword">></span>(*j.template get_ptr<const typename BasicJsonType::number_float_t*>());</div>
|
||
<div class="line"><a name="l03170"></a><span class="lineno"> 3170</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l03171"></a><span class="lineno"> 3171</span>  }</div>
|
||
<div class="line"><a name="l03172"></a><span class="lineno"> 3172</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a84e2c64f38f78ba3ea5c905ab5a2da27">value_t::boolean</a>:</div>
|
||
<div class="line"><a name="l03173"></a><span class="lineno"> 3173</span>  {</div>
|
||
<div class="line"><a name="l03174"></a><span class="lineno"> 3174</span>  val = <span class="keyword">static_cast<</span>ArithmeticType<span class="keyword">></span>(*j.template get_ptr<const typename BasicJsonType::boolean_t*>());</div>
|
||
<div class="line"><a name="l03175"></a><span class="lineno"> 3175</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l03176"></a><span class="lineno"> 3176</span>  }</div>
|
||
<div class="line"><a name="l03177"></a><span class="lineno"> 3177</span>  </div>
|
||
<div class="line"><a name="l03178"></a><span class="lineno"> 3178</span>  <span class="keywordflow">default</span>:</div>
|
||
<div class="line"><a name="l03179"></a><span class="lineno"> 3179</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(302, <span class="stringliteral">"type must be number, but is "</span> + std::string(j.type_name())));</div>
|
||
<div class="line"><a name="l03180"></a><span class="lineno"> 3180</span>  }</div>
|
||
<div class="line"><a name="l03181"></a><span class="lineno"> 3181</span> }</div>
|
||
<div class="line"><a name="l03182"></a><span class="lineno"> 3182</span>  </div>
|
||
<div class="line"><a name="l03183"></a><span class="lineno"> 3183</span> <span class="keyword">template</span><<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> A1, <span class="keyword">typename</span> A2></div>
|
||
<div class="line"><a name="l03184"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#aae9f9c2601074e323d49428132cc293d"> 3184</a></span> <span class="keywordtype">void</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1f0395aad0fe853a4539288749d3a603">from_json</a>(<span class="keyword">const</span> BasicJsonType& j, std::pair<A1, A2>& p)</div>
|
||
<div class="line"><a name="l03185"></a><span class="lineno"> 3185</span> {</div>
|
||
<div class="line"><a name="l03186"></a><span class="lineno"> 3186</span>  p = {j.at(0).template get<A1>(), j.at(1).template get<A2>()};</div>
|
||
<div class="line"><a name="l03187"></a><span class="lineno"> 3187</span> }</div>
|
||
<div class="line"><a name="l03188"></a><span class="lineno"> 3188</span>  </div>
|
||
<div class="line"><a name="l03189"></a><span class="lineno"> 3189</span> <span class="keyword">template</span><<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> Tuple, std::size_t... Idx></div>
|
||
<div class="line"><a name="l03190"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a28253915d9db4a0112d60eaee0422949"> 3190</a></span> <span class="keywordtype">void</span> <a class="code" href="namespacenlohmann_1_1detail.html#a28253915d9db4a0112d60eaee0422949">from_json_tuple_impl</a>(<span class="keyword">const</span> BasicJsonType& j, Tuple& t, <a class="code" href="structnlohmann_1_1detail_1_1index__sequence.html">index_sequence<Idx...></a> <span class="comment">/*unused*/</span>)</div>
|
||
<div class="line"><a name="l03191"></a><span class="lineno"> 3191</span> {</div>
|
||
<div class="line"><a name="l03192"></a><span class="lineno"> 3192</span>  t = std::make_tuple(j.at(Idx).template <a class="code" href="namespacenlohmann_1_1detail.html#acc422c11342b31368f610b6f96fcedc6">get</a><<span class="keyword">typename</span> std::tuple_element<Idx, Tuple>::type>()...);</div>
|
||
<div class="line"><a name="l03193"></a><span class="lineno"> 3193</span> }</div>
|
||
<div class="line"><a name="l03194"></a><span class="lineno"> 3194</span>  </div>
|
||
<div class="line"><a name="l03195"></a><span class="lineno"> 3195</span> <span class="keyword">template</span><<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span>... Args></div>
|
||
<div class="line"><a name="l03196"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a8b99ec9b29f3f20a18fc4281fb784e49"> 3196</a></span> <span class="keywordtype">void</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1f0395aad0fe853a4539288749d3a603">from_json</a>(<span class="keyword">const</span> BasicJsonType& j, std::tuple<Args...>& t)</div>
|
||
<div class="line"><a name="l03197"></a><span class="lineno"> 3197</span> {</div>
|
||
<div class="line"><a name="l03198"></a><span class="lineno"> 3198</span>  <a class="code" href="namespacenlohmann_1_1detail.html#a28253915d9db4a0112d60eaee0422949">from_json_tuple_impl</a>(j, t, <a class="code" href="structnlohmann_1_1detail_1_1make__index__sequence.html">index_sequence_for<Args...></a> {});</div>
|
||
<div class="line"><a name="l03199"></a><span class="lineno"> 3199</span> }</div>
|
||
<div class="line"><a name="l03200"></a><span class="lineno"> 3200</span>  </div>
|
||
<div class="line"><a name="l03201"></a><span class="lineno"> 3201</span> <span class="keyword">template</span> <<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> Key, <span class="keyword">typename</span> Value, <span class="keyword">typename</span> Compare, <span class="keyword">typename</span> Allocator,</div>
|
||
<div class="line"><a name="l03202"></a><span class="lineno"> 3202</span>  <span class="keyword">typename</span> = <a class="code" href="namespacenlohmann_1_1detail.html#a02bcbc878bee413f25b985ada771aa9c">enable_if_t</a><not std::is_constructible<</div>
|
||
<div class="line"><a name="l03203"></a><span class="lineno"> 3203</span>  <span class="keyword">typename</span> BasicJsonType::string_t, Key>::value>></div>
|
||
<div class="line"><a name="l03204"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#ae93147a54d2740228ef16a5e6210ca3e"> 3204</a></span> <span class="keywordtype">void</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1f0395aad0fe853a4539288749d3a603">from_json</a>(<span class="keyword">const</span> BasicJsonType& j, std::map<Key, Value, Compare, Allocator>& m)</div>
|
||
<div class="line"><a name="l03205"></a><span class="lineno"> 3205</span> {</div>
|
||
<div class="line"><a name="l03206"></a><span class="lineno"> 3206</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not j.is_array()))</div>
|
||
<div class="line"><a name="l03207"></a><span class="lineno"> 3207</span>  {</div>
|
||
<div class="line"><a name="l03208"></a><span class="lineno"> 3208</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(302, <span class="stringliteral">"type must be array, but is "</span> + std::string(j.type_name())));</div>
|
||
<div class="line"><a name="l03209"></a><span class="lineno"> 3209</span>  }</div>
|
||
<div class="line"><a name="l03210"></a><span class="lineno"> 3210</span>  m.clear();</div>
|
||
<div class="line"><a name="l03211"></a><span class="lineno"> 3211</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>& p : j)</div>
|
||
<div class="line"><a name="l03212"></a><span class="lineno"> 3212</span>  {</div>
|
||
<div class="line"><a name="l03213"></a><span class="lineno"> 3213</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not p.is_array()))</div>
|
||
<div class="line"><a name="l03214"></a><span class="lineno"> 3214</span>  {</div>
|
||
<div class="line"><a name="l03215"></a><span class="lineno"> 3215</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(302, <span class="stringliteral">"type must be array, but is "</span> + std::string(p.type_name())));</div>
|
||
<div class="line"><a name="l03216"></a><span class="lineno"> 3216</span>  }</div>
|
||
<div class="line"><a name="l03217"></a><span class="lineno"> 3217</span>  m.emplace(p.at(0).template get<Key>(), p.at(1).template get<Value>());</div>
|
||
<div class="line"><a name="l03218"></a><span class="lineno"> 3218</span>  }</div>
|
||
<div class="line"><a name="l03219"></a><span class="lineno"> 3219</span> }</div>
|
||
<div class="line"><a name="l03220"></a><span class="lineno"> 3220</span>  </div>
|
||
<div class="line"><a name="l03221"></a><span class="lineno"> 3221</span> <span class="keyword">template</span> <<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> Key, <span class="keyword">typename</span> Value, <span class="keyword">typename</span> Hash, <span class="keyword">typename</span> KeyEqual, <span class="keyword">typename</span> Allocator,</div>
|
||
<div class="line"><a name="l03222"></a><span class="lineno"> 3222</span>  <span class="keyword">typename</span> = <a class="code" href="namespacenlohmann_1_1detail.html#a02bcbc878bee413f25b985ada771aa9c">enable_if_t</a><not std::is_constructible<</div>
|
||
<div class="line"><a name="l03223"></a><span class="lineno"> 3223</span>  <span class="keyword">typename</span> BasicJsonType::string_t, Key>::value>></div>
|
||
<div class="line"><a name="l03224"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#aef5c8ea108f4d2b03fb4a635617510de"> 3224</a></span> <span class="keywordtype">void</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1f0395aad0fe853a4539288749d3a603">from_json</a>(<span class="keyword">const</span> BasicJsonType& j, std::unordered_map<Key, Value, Hash, KeyEqual, Allocator>& m)</div>
|
||
<div class="line"><a name="l03225"></a><span class="lineno"> 3225</span> {</div>
|
||
<div class="line"><a name="l03226"></a><span class="lineno"> 3226</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not j.is_array()))</div>
|
||
<div class="line"><a name="l03227"></a><span class="lineno"> 3227</span>  {</div>
|
||
<div class="line"><a name="l03228"></a><span class="lineno"> 3228</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(302, <span class="stringliteral">"type must be array, but is "</span> + std::string(j.type_name())));</div>
|
||
<div class="line"><a name="l03229"></a><span class="lineno"> 3229</span>  }</div>
|
||
<div class="line"><a name="l03230"></a><span class="lineno"> 3230</span>  m.clear();</div>
|
||
<div class="line"><a name="l03231"></a><span class="lineno"> 3231</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>& p : j)</div>
|
||
<div class="line"><a name="l03232"></a><span class="lineno"> 3232</span>  {</div>
|
||
<div class="line"><a name="l03233"></a><span class="lineno"> 3233</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not p.is_array()))</div>
|
||
<div class="line"><a name="l03234"></a><span class="lineno"> 3234</span>  {</div>
|
||
<div class="line"><a name="l03235"></a><span class="lineno"> 3235</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(302, <span class="stringliteral">"type must be array, but is "</span> + std::string(p.type_name())));</div>
|
||
<div class="line"><a name="l03236"></a><span class="lineno"> 3236</span>  }</div>
|
||
<div class="line"><a name="l03237"></a><span class="lineno"> 3237</span>  m.emplace(p.at(0).template get<Key>(), p.at(1).template get<Value>());</div>
|
||
<div class="line"><a name="l03238"></a><span class="lineno"> 3238</span>  }</div>
|
||
<div class="line"><a name="l03239"></a><span class="lineno"> 3239</span> }</div>
|
||
<div class="line"><a name="l03240"></a><span class="lineno"> 3240</span>  </div>
|
||
<div class="line"><a name="l03241"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1from__json__fn.html"> 3241</a></span> <span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1from__json__fn.html">from_json_fn</a></div>
|
||
<div class="line"><a name="l03242"></a><span class="lineno"> 3242</span> {</div>
|
||
<div class="line"><a name="l03243"></a><span class="lineno"> 3243</span>  <span class="keyword">template</span><<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> T></div>
|
||
<div class="line"><a name="l03244"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1from__json__fn.html#a6d14a74e1043072c77892534572d2973"> 3244</a></span>  <span class="keyword">auto</span> <a class="code" href="structnlohmann_1_1detail_1_1from__json__fn.html#a6d14a74e1043072c77892534572d2973">operator()</a>(<span class="keyword">const</span> BasicJsonType& j, T& val) <span class="keyword">const</span></div>
|
||
<div class="line"><a name="l03245"></a><span class="lineno"> 3245</span>  noexcept(noexcept(<a class="code" href="namespacenlohmann_1_1detail.html#a1f0395aad0fe853a4539288749d3a603">from_json</a>(j, val)))</div>
|
||
<div class="line"><a name="l03246"></a><span class="lineno"> 3246</span>  -> decltype(<a class="code" href="namespacenlohmann_1_1detail.html#a1f0395aad0fe853a4539288749d3a603">from_json</a>(j, val), <span class="keywordtype">void</span>())</div>
|
||
<div class="line"><a name="l03247"></a><span class="lineno"> 3247</span>  {</div>
|
||
<div class="line"><a name="l03248"></a><span class="lineno"> 3248</span>  <span class="keywordflow">return</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1f0395aad0fe853a4539288749d3a603">from_json</a>(j, val);</div>
|
||
<div class="line"><a name="l03249"></a><span class="lineno"> 3249</span>  }</div>
|
||
<div class="line"><a name="l03250"></a><span class="lineno"> 3250</span> };</div>
|
||
<div class="line"><a name="l03251"></a><span class="lineno"> 3251</span> } <span class="comment">// namespace detail</span></div>
|
||
<div class="line"><a name="l03252"></a><span class="lineno"> 3252</span>  </div>
|
||
<div class="line"><a name="l03256"></a><span class="lineno"> 3256</span> <span class="keyword">namespace</span></div>
|
||
<div class="line"><a name="l03257"></a><span class="lineno"> 3257</span> {</div>
|
||
<div class="line"><a name="l03258"></a><span class="lineno"> 3258</span> constexpr <span class="keyword">const</span> <span class="keyword">auto</span>& <a class="code" href="namespacenlohmann_1_1detail.html#aef5c8ea108f4d2b03fb4a635617510de">from_json</a> = <a class="code" href="structnlohmann_1_1detail_1_1static__const.html#a6bb7ab2ddd6abc41fb4ffb7c6dfa237e">detail::static_const<detail::from_json_fn>::value</a>;</div>
|
||
<div class="line"><a name="l03259"></a><span class="lineno"> 3259</span> } <span class="comment">// namespace</span></div>
|
||
<div class="line"><a name="l03260"></a><span class="lineno"> 3260</span> } <span class="comment">// namespace nlohmann</span></div>
|
||
<div class="line"><a name="l03261"></a><span class="lineno"> 3261</span>  </div>
|
||
<div class="line"><a name="l03262"></a><span class="lineno"> 3262</span> <span class="comment">// #include <nlohmann/detail/conversions/to_json.hpp></span></div>
|
||
<div class="line"><a name="l03263"></a><span class="lineno"> 3263</span>  </div>
|
||
<div class="line"><a name="l03264"></a><span class="lineno"> 3264</span>  </div>
|
||
<div class="line"><a name="l03265"></a><span class="lineno"> 3265</span> <span class="preprocessor">#include <algorithm></span> <span class="comment">// copy</span></div>
|
||
<div class="line"><a name="l03266"></a><span class="lineno"> 3266</span> <span class="preprocessor">#include <ciso646></span> <span class="comment">// or, and, not</span></div>
|
||
<div class="line"><a name="l03267"></a><span class="lineno"> 3267</span> <span class="preprocessor">#include <iterator></span> <span class="comment">// begin, end</span></div>
|
||
<div class="line"><a name="l03268"></a><span class="lineno"> 3268</span> <span class="preprocessor">#include <string></span> <span class="comment">// string</span></div>
|
||
<div class="line"><a name="l03269"></a><span class="lineno"> 3269</span> <span class="preprocessor">#include <tuple></span> <span class="comment">// tuple, get</span></div>
|
||
<div class="line"><a name="l03270"></a><span class="lineno"> 3270</span> <span class="preprocessor">#include <type_traits></span> <span class="comment">// is_same, is_constructible, is_floating_point, is_enum, underlying_type</span></div>
|
||
<div class="line"><a name="l03271"></a><span class="lineno"> 3271</span> <span class="preprocessor">#include <utility></span> <span class="comment">// move, forward, declval, pair</span></div>
|
||
<div class="line"><a name="l03272"></a><span class="lineno"> 3272</span> <span class="preprocessor">#include <valarray></span> <span class="comment">// valarray</span></div>
|
||
<div class="line"><a name="l03273"></a><span class="lineno"> 3273</span> <span class="preprocessor">#include <vector></span> <span class="comment">// vector</span></div>
|
||
<div class="line"><a name="l03274"></a><span class="lineno"> 3274</span>  </div>
|
||
<div class="line"><a name="l03275"></a><span class="lineno"> 3275</span> <span class="comment">// #include <nlohmann/detail/iterators/iteration_proxy.hpp></span></div>
|
||
<div class="line"><a name="l03276"></a><span class="lineno"> 3276</span>  </div>
|
||
<div class="line"><a name="l03277"></a><span class="lineno"> 3277</span>  </div>
|
||
<div class="line"><a name="l03278"></a><span class="lineno"> 3278</span> <span class="preprocessor">#include <cstddef></span> <span class="comment">// size_t</span></div>
|
||
<div class="line"><a name="l03279"></a><span class="lineno"> 3279</span> <span class="preprocessor">#include <iterator></span> <span class="comment">// input_iterator_tag</span></div>
|
||
<div class="line"><a name="l03280"></a><span class="lineno"> 3280</span> <span class="preprocessor">#include <string></span> <span class="comment">// string, to_string</span></div>
|
||
<div class="line"><a name="l03281"></a><span class="lineno"> 3281</span> <span class="preprocessor">#include <tuple></span> <span class="comment">// tuple_size, get, tuple_element</span></div>
|
||
<div class="line"><a name="l03282"></a><span class="lineno"> 3282</span>  </div>
|
||
<div class="line"><a name="l03283"></a><span class="lineno"> 3283</span> <span class="comment">// #include <nlohmann/detail/meta/type_traits.hpp></span></div>
|
||
<div class="line"><a name="l03284"></a><span class="lineno"> 3284</span>  </div>
|
||
<div class="line"><a name="l03285"></a><span class="lineno"> 3285</span> <span class="comment">// #include <nlohmann/detail/value_t.hpp></span></div>
|
||
<div class="line"><a name="l03286"></a><span class="lineno"> 3286</span>  </div>
|
||
<div class="line"><a name="l03287"></a><span class="lineno"> 3287</span>  </div>
|
||
<div class="line"><a name="l03288"></a><span class="lineno"> 3288</span> <span class="keyword">namespace </span><a class="code" href="namespacenlohmann.html">nlohmann</a></div>
|
||
<div class="line"><a name="l03289"></a><span class="lineno"> 3289</span> {</div>
|
||
<div class="line"><a name="l03290"></a><span class="lineno"> 3290</span> <span class="keyword">namespace </span>detail</div>
|
||
<div class="line"><a name="l03291"></a><span class="lineno"> 3291</span> {</div>
|
||
<div class="line"><a name="l03292"></a><span class="lineno"> 3292</span> <span class="keyword">template</span><<span class="keyword">typename</span> <span class="keywordtype">string</span>_type></div>
|
||
<div class="line"><a name="l03293"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a3c45286b0a2f15ea0a756cb87a76cf9b"> 3293</a></span> <span class="keywordtype">void</span> <a class="code" href="namespacenlohmann_1_1detail.html#a3c45286b0a2f15ea0a756cb87a76cf9b">int_to_string</a>( string_type& target, std::size_t value )</div>
|
||
<div class="line"><a name="l03294"></a><span class="lineno"> 3294</span> {</div>
|
||
<div class="line"><a name="l03295"></a><span class="lineno"> 3295</span>  target = <a class="code" href="namespacenlohmann.html#a6ce645a0b8717757e096a5b5773b7a16">std::to_string</a>(value);</div>
|
||
<div class="line"><a name="l03296"></a><span class="lineno"> 3296</span> }</div>
|
||
<div class="line"><a name="l03297"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iteration__proxy__value.html"> 3297</a></span> <span class="keyword">template</span> <<span class="keyword">typename</span> IteratorType> <span class="keyword">class </span><a class="code" href="classnlohmann_1_1detail_1_1iteration__proxy__value.html">iteration_proxy_value</a></div>
|
||
<div class="line"><a name="l03298"></a><span class="lineno"> 3298</span> {</div>
|
||
<div class="line"><a name="l03299"></a><span class="lineno"> 3299</span>  <span class="keyword">public</span>:</div>
|
||
<div class="line"><a name="l03300"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iteration__proxy__value.html#ada6b4e6d55d8ed7ac79e49a03e9d1fe2"> 3300</a></span>  <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1detail_1_1iteration__proxy__value.html#ada6b4e6d55d8ed7ac79e49a03e9d1fe2">difference_type</a> = std::ptrdiff_t;</div>
|
||
<div class="line"><a name="l03301"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iteration__proxy__value.html#a5e90a5810cc1bb6c1000eabbfdfe7b9e"> 3301</a></span>  <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1detail_1_1iteration__proxy__value.html">value_type</a> = <a class="code" href="classnlohmann_1_1detail_1_1iteration__proxy__value.html#a459dd8961b80b2089d8161c9aa466581">iteration_proxy_value</a>;</div>
|
||
<div class="line"><a name="l03302"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iteration__proxy__value.html#a44c64feee85b8e7164a05310e6418a4b"> 3302</a></span>  <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1detail_1_1iteration__proxy__value.html">pointer</a> = <a class="code" href="classnlohmann_1_1detail_1_1iteration__proxy__value.html">value_type</a> * ;</div>
|
||
<div class="line"><a name="l03303"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iteration__proxy__value.html#a5bc7d3133daab5ec4797f3132e093af8"> 3303</a></span>  <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1detail_1_1iteration__proxy__value.html">reference</a> = <a class="code" href="classnlohmann_1_1detail_1_1iteration__proxy__value.html">value_type</a> & ;</div>
|
||
<div class="line"><a name="l03304"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iteration__proxy__value.html#a1ab8c44e3772c03651b5ad07216043cf"> 3304</a></span>  <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1detail_1_1iteration__proxy__value.html#a1ab8c44e3772c03651b5ad07216043cf">iterator_category</a> = std::input_iterator_tag;</div>
|
||
<div class="line"><a name="l03305"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iteration__proxy__value.html#a1fc63b88a585fa39942007aab69a74e6"> 3305</a></span>  <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1detail_1_1iteration__proxy__value.html#a1fc63b88a585fa39942007aab69a74e6">string_type</a> = <span class="keyword">typename</span> std::remove_cv< typename std::remove_reference<decltype( std::declval<IteratorType>().<a class="code" href="classnlohmann_1_1detail_1_1iteration__proxy__value.html#af2949ac0d70212738030bfda29c5bcc2">key</a>() ) >::type >::type;</div>
|
||
<div class="line"><a name="l03306"></a><span class="lineno"> 3306</span>  </div>
|
||
<div class="line"><a name="l03307"></a><span class="lineno"> 3307</span>  <span class="keyword">private</span>:</div>
|
||
<div class="line"><a name="l03309"></a><span class="lineno"> 3309</span>  IteratorType anchor;</div>
|
||
<div class="line"><a name="l03311"></a><span class="lineno"> 3311</span>  std::size_t array_index = 0;</div>
|
||
<div class="line"><a name="l03313"></a><span class="lineno"> 3313</span>  <span class="keyword">mutable</span> std::size_t array_index_last = 0;</div>
|
||
<div class="line"><a name="l03315"></a><span class="lineno"> 3315</span>  <span class="keyword">mutable</span> <a class="code" href="classnlohmann_1_1detail_1_1iteration__proxy__value.html#a1fc63b88a585fa39942007aab69a74e6">string_type</a> array_index_str = <span class="stringliteral">"0"</span>;</div>
|
||
<div class="line"><a name="l03317"></a><span class="lineno"> 3317</span>  <span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1iteration__proxy__value.html#a1fc63b88a585fa39942007aab69a74e6">string_type</a> empty_str = <span class="stringliteral">""</span>;</div>
|
||
<div class="line"><a name="l03318"></a><span class="lineno"> 3318</span>  </div>
|
||
<div class="line"><a name="l03319"></a><span class="lineno"> 3319</span>  <span class="keyword">public</span>:</div>
|
||
<div class="line"><a name="l03320"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iteration__proxy__value.html#a459dd8961b80b2089d8161c9aa466581"> 3320</a></span>  <span class="keyword">explicit</span> <a class="code" href="classnlohmann_1_1detail_1_1iteration__proxy__value.html#a459dd8961b80b2089d8161c9aa466581">iteration_proxy_value</a>(IteratorType it) noexcept : anchor(it) {}</div>
|
||
<div class="line"><a name="l03321"></a><span class="lineno"> 3321</span>  </div>
|
||
<div class="line"><a name="l03323"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iteration__proxy__value.html#a10accadf05a172fdc69a016bec201e81"> 3323</a></span>  <a class="code" href="classnlohmann_1_1detail_1_1iteration__proxy__value.html">iteration_proxy_value</a>& <a class="code" href="classnlohmann_1_1detail_1_1iteration__proxy__value.html#a10accadf05a172fdc69a016bec201e81">operator*</a>()</div>
|
||
<div class="line"><a name="l03324"></a><span class="lineno"> 3324</span>  {</div>
|
||
<div class="line"><a name="l03325"></a><span class="lineno"> 3325</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
|
||
<div class="line"><a name="l03326"></a><span class="lineno"> 3326</span>  }</div>
|
||
<div class="line"><a name="l03327"></a><span class="lineno"> 3327</span>  </div>
|
||
<div class="line"><a name="l03329"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iteration__proxy__value.html#adf4db2aef31822f3a179435158a4de11"> 3329</a></span>  <a class="code" href="classnlohmann_1_1detail_1_1iteration__proxy__value.html">iteration_proxy_value</a>& <a class="code" href="classnlohmann_1_1detail_1_1iteration__proxy__value.html#adf4db2aef31822f3a179435158a4de11">operator++</a>()</div>
|
||
<div class="line"><a name="l03330"></a><span class="lineno"> 3330</span>  {</div>
|
||
<div class="line"><a name="l03331"></a><span class="lineno"> 3331</span>  ++anchor;</div>
|
||
<div class="line"><a name="l03332"></a><span class="lineno"> 3332</span>  ++array_index;</div>
|
||
<div class="line"><a name="l03333"></a><span class="lineno"> 3333</span>  </div>
|
||
<div class="line"><a name="l03334"></a><span class="lineno"> 3334</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
|
||
<div class="line"><a name="l03335"></a><span class="lineno"> 3335</span>  }</div>
|
||
<div class="line"><a name="l03336"></a><span class="lineno"> 3336</span>  </div>
|
||
<div class="line"><a name="l03338"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iteration__proxy__value.html#af2b78a8b9c9276b07c928b21bb1e2d54"> 3338</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1detail_1_1iteration__proxy__value.html#af2b78a8b9c9276b07c928b21bb1e2d54">operator==</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1iteration__proxy__value.html">iteration_proxy_value</a>& o)<span class="keyword"> const</span></div>
|
||
<div class="line"><a name="l03339"></a><span class="lineno"> 3339</span> <span class="keyword"> </span>{</div>
|
||
<div class="line"><a name="l03340"></a><span class="lineno"> 3340</span>  <span class="keywordflow">return</span> anchor == o.anchor;</div>
|
||
<div class="line"><a name="l03341"></a><span class="lineno"> 3341</span>  }</div>
|
||
<div class="line"><a name="l03342"></a><span class="lineno"> 3342</span>  </div>
|
||
<div class="line"><a name="l03344"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iteration__proxy__value.html#a646dbb2b1842f44f42ee1e14245b8595"> 3344</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1detail_1_1iteration__proxy__value.html#a646dbb2b1842f44f42ee1e14245b8595">operator!=</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1iteration__proxy__value.html">iteration_proxy_value</a>& o)<span class="keyword"> const</span></div>
|
||
<div class="line"><a name="l03345"></a><span class="lineno"> 3345</span> <span class="keyword"> </span>{</div>
|
||
<div class="line"><a name="l03346"></a><span class="lineno"> 3346</span>  <span class="keywordflow">return</span> anchor != o.anchor;</div>
|
||
<div class="line"><a name="l03347"></a><span class="lineno"> 3347</span>  }</div>
|
||
<div class="line"><a name="l03348"></a><span class="lineno"> 3348</span>  </div>
|
||
<div class="line"><a name="l03350"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iteration__proxy__value.html#af2949ac0d70212738030bfda29c5bcc2"> 3350</a></span>  <span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1iteration__proxy__value.html#a1fc63b88a585fa39942007aab69a74e6">string_type</a>& <a class="code" href="classnlohmann_1_1detail_1_1iteration__proxy__value.html#af2949ac0d70212738030bfda29c5bcc2">key</a>()<span class="keyword"> const</span></div>
|
||
<div class="line"><a name="l03351"></a><span class="lineno"> 3351</span> <span class="keyword"> </span>{</div>
|
||
<div class="line"><a name="l03352"></a><span class="lineno"> 3352</span>  assert(anchor.m_object != <span class="keyword">nullptr</span>);</div>
|
||
<div class="line"><a name="l03353"></a><span class="lineno"> 3353</span>  </div>
|
||
<div class="line"><a name="l03354"></a><span class="lineno"> 3354</span>  <span class="keywordflow">switch</span> (anchor.m_object->type())</div>
|
||
<div class="line"><a name="l03355"></a><span class="lineno"> 3355</span>  {</div>
|
||
<div class="line"><a name="l03356"></a><span class="lineno"> 3356</span>  <span class="comment">// use integer array index as key</span></div>
|
||
<div class="line"><a name="l03357"></a><span class="lineno"> 3357</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>:</div>
|
||
<div class="line"><a name="l03358"></a><span class="lineno"> 3358</span>  {</div>
|
||
<div class="line"><a name="l03359"></a><span class="lineno"> 3359</span>  <span class="keywordflow">if</span> (array_index != array_index_last)</div>
|
||
<div class="line"><a name="l03360"></a><span class="lineno"> 3360</span>  {</div>
|
||
<div class="line"><a name="l03361"></a><span class="lineno"> 3361</span>  <a class="code" href="namespacenlohmann_1_1detail.html#a3c45286b0a2f15ea0a756cb87a76cf9b">int_to_string</a>( array_index_str, array_index );</div>
|
||
<div class="line"><a name="l03362"></a><span class="lineno"> 3362</span>  array_index_last = array_index;</div>
|
||
<div class="line"><a name="l03363"></a><span class="lineno"> 3363</span>  }</div>
|
||
<div class="line"><a name="l03364"></a><span class="lineno"> 3364</span>  <span class="keywordflow">return</span> array_index_str;</div>
|
||
<div class="line"><a name="l03365"></a><span class="lineno"> 3365</span>  }</div>
|
||
<div class="line"><a name="l03366"></a><span class="lineno"> 3366</span>  </div>
|
||
<div class="line"><a name="l03367"></a><span class="lineno"> 3367</span>  <span class="comment">// use key from the object</span></div>
|
||
<div class="line"><a name="l03368"></a><span class="lineno"> 3368</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>:</div>
|
||
<div class="line"><a name="l03369"></a><span class="lineno"> 3369</span>  <span class="keywordflow">return</span> anchor.key();</div>
|
||
<div class="line"><a name="l03370"></a><span class="lineno"> 3370</span>  </div>
|
||
<div class="line"><a name="l03371"></a><span class="lineno"> 3371</span>  <span class="comment">// use an empty key for all primitive types</span></div>
|
||
<div class="line"><a name="l03372"></a><span class="lineno"> 3372</span>  <span class="keywordflow">default</span>:</div>
|
||
<div class="line"><a name="l03373"></a><span class="lineno"> 3373</span>  <span class="keywordflow">return</span> empty_str;</div>
|
||
<div class="line"><a name="l03374"></a><span class="lineno"> 3374</span>  }</div>
|
||
<div class="line"><a name="l03375"></a><span class="lineno"> 3375</span>  }</div>
|
||
<div class="line"><a name="l03376"></a><span class="lineno"> 3376</span>  </div>
|
||
<div class="line"><a name="l03378"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iteration__proxy__value.html#ab8e33bd01c285a1a80b737a1905ceb97"> 3378</a></span>  <span class="keyword">typename</span> IteratorType::reference <a class="code" href="classnlohmann_1_1detail_1_1iteration__proxy__value.html#ab8e33bd01c285a1a80b737a1905ceb97">value</a>()<span class="keyword"> const</span></div>
|
||
<div class="line"><a name="l03379"></a><span class="lineno"> 3379</span> <span class="keyword"> </span>{</div>
|
||
<div class="line"><a name="l03380"></a><span class="lineno"> 3380</span>  <span class="keywordflow">return</span> anchor.value();</div>
|
||
<div class="line"><a name="l03381"></a><span class="lineno"> 3381</span>  }</div>
|
||
<div class="line"><a name="l03382"></a><span class="lineno"> 3382</span> };</div>
|
||
<div class="line"><a name="l03383"></a><span class="lineno"> 3383</span>  </div>
|
||
<div class="line"><a name="l03385"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iteration__proxy.html"> 3385</a></span> <span class="keyword">template</span><<span class="keyword">typename</span> IteratorType> <span class="keyword">class </span><a class="code" href="classnlohmann_1_1detail_1_1iteration__proxy.html">iteration_proxy</a></div>
|
||
<div class="line"><a name="l03386"></a><span class="lineno"> 3386</span> {</div>
|
||
<div class="line"><a name="l03387"></a><span class="lineno"> 3387</span>  <span class="keyword">private</span>:</div>
|
||
<div class="line"><a name="l03389"></a><span class="lineno"> 3389</span>  <span class="keyword">typename</span> IteratorType::reference container;</div>
|
||
<div class="line"><a name="l03390"></a><span class="lineno"> 3390</span>  </div>
|
||
<div class="line"><a name="l03391"></a><span class="lineno"> 3391</span>  <span class="keyword">public</span>:</div>
|
||
<div class="line"><a name="l03393"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iteration__proxy.html#afe257e972e3b4658ef2e355f7389d4a5"> 3393</a></span>  <span class="keyword">explicit</span> <a class="code" href="classnlohmann_1_1detail_1_1iteration__proxy.html#afe257e972e3b4658ef2e355f7389d4a5">iteration_proxy</a>(<span class="keyword">typename</span> IteratorType::reference cont) noexcept</div>
|
||
<div class="line"><a name="l03394"></a><span class="lineno"> 3394</span>  : container(cont) {}</div>
|
||
<div class="line"><a name="l03395"></a><span class="lineno"> 3395</span>  </div>
|
||
<div class="line"><a name="l03397"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iteration__proxy.html#a379f86709d340c4ab1995539b8af623d"> 3397</a></span>  <a class="code" href="classnlohmann_1_1detail_1_1iteration__proxy__value.html">iteration_proxy_value<IteratorType></a> <a class="code" href="classnlohmann_1_1detail_1_1iteration__proxy.html#a379f86709d340c4ab1995539b8af623d">begin</a>() noexcept</div>
|
||
<div class="line"><a name="l03398"></a><span class="lineno"> 3398</span>  {</div>
|
||
<div class="line"><a name="l03399"></a><span class="lineno"> 3399</span>  <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1detail_1_1iteration__proxy__value.html">iteration_proxy_value<IteratorType></a>(container.begin());</div>
|
||
<div class="line"><a name="l03400"></a><span class="lineno"> 3400</span>  }</div>
|
||
<div class="line"><a name="l03401"></a><span class="lineno"> 3401</span>  </div>
|
||
<div class="line"><a name="l03403"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iteration__proxy.html#a90091f8492d23576edef72c5e8b9d4cf"> 3403</a></span>  <a class="code" href="classnlohmann_1_1detail_1_1iteration__proxy__value.html">iteration_proxy_value<IteratorType></a> <a class="code" href="classnlohmann_1_1detail_1_1iteration__proxy.html#a90091f8492d23576edef72c5e8b9d4cf">end</a>() noexcept</div>
|
||
<div class="line"><a name="l03404"></a><span class="lineno"> 3404</span>  {</div>
|
||
<div class="line"><a name="l03405"></a><span class="lineno"> 3405</span>  <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1detail_1_1iteration__proxy__value.html">iteration_proxy_value<IteratorType></a>(container.end());</div>
|
||
<div class="line"><a name="l03406"></a><span class="lineno"> 3406</span>  }</div>
|
||
<div class="line"><a name="l03407"></a><span class="lineno"> 3407</span> };</div>
|
||
<div class="line"><a name="l03408"></a><span class="lineno"> 3408</span> <span class="comment">// Structured Bindings Support</span></div>
|
||
<div class="line"><a name="l03409"></a><span class="lineno"> 3409</span> <span class="comment">// For further reference see https://blog.tartanllama.xyz/structured-bindings/</span></div>
|
||
<div class="line"><a name="l03410"></a><span class="lineno"> 3410</span> <span class="comment">// And see https://github.com/nlohmann/json/pull/1391</span></div>
|
||
<div class="line"><a name="l03411"></a><span class="lineno"> 3411</span> <span class="keyword">template</span> <std::<span class="keywordtype">size_t</span> N, <span class="keyword">typename</span> IteratorType, enable_if_t<N == 0, <span class="keywordtype">int</span>> = 0></div>
|
||
<div class="line"><a name="l03412"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#acc422c11342b31368f610b6f96fcedc6"> 3412</a></span> <span class="keyword">auto</span> <a class="code" href="namespacenlohmann_1_1detail.html#acc422c11342b31368f610b6f96fcedc6">get</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1iteration__proxy__value.html">nlohmann::detail::iteration_proxy_value<IteratorType></a>& i) -> decltype(i.key())</div>
|
||
<div class="line"><a name="l03413"></a><span class="lineno"> 3413</span> {</div>
|
||
<div class="line"><a name="l03414"></a><span class="lineno"> 3414</span>  <span class="keywordflow">return</span> i.key();</div>
|
||
<div class="line"><a name="l03415"></a><span class="lineno"> 3415</span> }</div>
|
||
<div class="line"><a name="l03416"></a><span class="lineno"> 3416</span> <span class="comment">// Structured Bindings Support</span></div>
|
||
<div class="line"><a name="l03417"></a><span class="lineno"> 3417</span> <span class="comment">// For further reference see https://blog.tartanllama.xyz/structured-bindings/</span></div>
|
||
<div class="line"><a name="l03418"></a><span class="lineno"> 3418</span> <span class="comment">// And see https://github.com/nlohmann/json/pull/1391</span></div>
|
||
<div class="line"><a name="l03419"></a><span class="lineno"> 3419</span> <span class="keyword">template</span> <std::<span class="keywordtype">size_t</span> N, <span class="keyword">typename</span> IteratorType, enable_if_t<N == 1, <span class="keywordtype">int</span>> = 0></div>
|
||
<div class="line"><a name="l03420"></a><span class="lineno"> 3420</span> <span class="keyword">auto</span> <a class="code" href="namespacenlohmann_1_1detail.html#acc422c11342b31368f610b6f96fcedc6">get</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1iteration__proxy__value.html">nlohmann::detail::iteration_proxy_value<IteratorType></a>& i) -> decltype(i.value())</div>
|
||
<div class="line"><a name="l03421"></a><span class="lineno"> 3421</span> {</div>
|
||
<div class="line"><a name="l03422"></a><span class="lineno"> 3422</span>  <span class="keywordflow">return</span> i.value();</div>
|
||
<div class="line"><a name="l03423"></a><span class="lineno"> 3423</span> }</div>
|
||
<div class="line"><a name="l03424"></a><span class="lineno"> 3424</span> } <span class="comment">// namespace detail</span></div>
|
||
<div class="line"><a name="l03425"></a><span class="lineno"> 3425</span> } <span class="comment">// namespace nlohmann</span></div>
|
||
<div class="line"><a name="l03426"></a><span class="lineno"> 3426</span>  </div>
|
||
<div class="line"><a name="l03427"></a><span class="lineno"> 3427</span> <span class="comment">// The Addition to the STD Namespace is required to add</span></div>
|
||
<div class="line"><a name="l03428"></a><span class="lineno"> 3428</span> <span class="comment">// Structured Bindings Support to the iteration_proxy_value class</span></div>
|
||
<div class="line"><a name="l03429"></a><span class="lineno"> 3429</span> <span class="comment">// For further reference see https://blog.tartanllama.xyz/structured-bindings/</span></div>
|
||
<div class="line"><a name="l03430"></a><span class="lineno"> 3430</span> <span class="comment">// And see https://github.com/nlohmann/json/pull/1391</span></div>
|
||
<div class="line"><a name="l03431"></a><span class="lineno"><a class="line" href="namespacestd.html"> 3431</a></span> <span class="keyword">namespace </span><a class="code" href="namespacestd.html">std</a></div>
|
||
<div class="line"><a name="l03432"></a><span class="lineno"> 3432</span> {</div>
|
||
<div class="line"><a name="l03433"></a><span class="lineno"> 3433</span> <span class="preprocessor">#if defined(__clang__)</span></div>
|
||
<div class="line"><a name="l03434"></a><span class="lineno"> 3434</span>  <span class="comment">// Fix: https://github.com/nlohmann/json/issues/1401</span></div>
|
||
<div class="line"><a name="l03435"></a><span class="lineno"> 3435</span> <span class="preprocessor"> #pragma clang diagnostic push</span></div>
|
||
<div class="line"><a name="l03436"></a><span class="lineno"> 3436</span> <span class="preprocessor"> #pragma clang diagnostic ignored "-Wmismatched-tags"</span></div>
|
||
<div class="line"><a name="l03437"></a><span class="lineno"> 3437</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l03438"></a><span class="lineno"> 3438</span> <span class="keyword">template</span> <<span class="keyword">typename</span> IteratorType></div>
|
||
<div class="line"><a name="l03439"></a><span class="lineno"><a class="line" href="classstd_1_1tuple__size_3_1_1nlohmann_1_1detail_1_1iteration__proxy__value_3_01IteratorType_01_4_01_4.html"> 3439</a></span> <span class="keyword">class </span>tuple_size<::<a class="code" href="classnlohmann_1_1detail_1_1iteration__proxy__value.html">nlohmann::detail::iteration_proxy_value</a><IteratorType>></div>
|
||
<div class="line"><a name="l03440"></a><span class="lineno"> 3440</span>  : <span class="keyword">public</span> std::integral_constant<std::size_t, 2> {};</div>
|
||
<div class="line"><a name="l03441"></a><span class="lineno"> 3441</span>  </div>
|
||
<div class="line"><a name="l03442"></a><span class="lineno"> 3442</span> <span class="keyword">template</span> <std::<span class="keywordtype">size_t</span> N, <span class="keyword">typename</span> IteratorType></div>
|
||
<div class="line"><a name="l03443"></a><span class="lineno"><a class="line" href="classstd_1_1tuple__element_3_01N_00_01_1_1nlohmann_1_1detail_1_1iteration__proxy__value_3_01IteratorType_01_4_01_4.html"> 3443</a></span> <span class="keyword">class </span>tuple_element<N, ::<a class="code" href="classnlohmann_1_1detail_1_1iteration__proxy__value.html">nlohmann::detail::iteration_proxy_value</a><IteratorType >></div>
|
||
<div class="line"><a name="l03444"></a><span class="lineno"> 3444</span> {</div>
|
||
<div class="line"><a name="l03445"></a><span class="lineno"> 3445</span>  <span class="keyword">public</span>:</div>
|
||
<div class="line"><a name="l03446"></a><span class="lineno"> 3446</span>  <span class="keyword">using</span> <a class="code" href="classstd_1_1tuple__element_3_01N_00_01_1_1nlohmann_1_1detail_1_1iteration__proxy__value_3_01IteratorType_01_4_01_4.html#ace1dfdb74841c2f58c064a50598188fd">type</a> = decltype(</div>
|
||
<div class="line"><a name="l03447"></a><span class="lineno"> 3447</span>  get<N>(std::declval <</div>
|
||
<div class="line"><a name="l03448"></a><span class="lineno"><a class="line" href="classstd_1_1tuple__element_3_01N_00_01_1_1nlohmann_1_1detail_1_1iteration__proxy__value_3_01IteratorType_01_4_01_4.html#ace1dfdb74841c2f58c064a50598188fd"> 3448</a></span>  ::<a class="code" href="classnlohmann_1_1detail_1_1iteration__proxy__value.html">nlohmann::detail::iteration_proxy_value<IteratorType ></a>> ()));</div>
|
||
<div class="line"><a name="l03449"></a><span class="lineno"> 3449</span> };</div>
|
||
<div class="line"><a name="l03450"></a><span class="lineno"> 3450</span> <span class="preprocessor">#if defined(__clang__)</span></div>
|
||
<div class="line"><a name="l03451"></a><span class="lineno"> 3451</span> <span class="preprocessor"> #pragma clang diagnostic pop</span></div>
|
||
<div class="line"><a name="l03452"></a><span class="lineno"> 3452</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l03453"></a><span class="lineno"> 3453</span> } <span class="comment">// namespace std</span></div>
|
||
<div class="line"><a name="l03454"></a><span class="lineno"> 3454</span>  </div>
|
||
<div class="line"><a name="l03455"></a><span class="lineno"> 3455</span> <span class="comment">// #include <nlohmann/detail/meta/cpp_future.hpp></span></div>
|
||
<div class="line"><a name="l03456"></a><span class="lineno"> 3456</span>  </div>
|
||
<div class="line"><a name="l03457"></a><span class="lineno"> 3457</span> <span class="comment">// #include <nlohmann/detail/meta/type_traits.hpp></span></div>
|
||
<div class="line"><a name="l03458"></a><span class="lineno"> 3458</span>  </div>
|
||
<div class="line"><a name="l03459"></a><span class="lineno"> 3459</span> <span class="comment">// #include <nlohmann/detail/value_t.hpp></span></div>
|
||
<div class="line"><a name="l03460"></a><span class="lineno"> 3460</span>  </div>
|
||
<div class="line"><a name="l03461"></a><span class="lineno"> 3461</span>  </div>
|
||
<div class="line"><a name="l03462"></a><span class="lineno"> 3462</span> <span class="keyword">namespace </span><a class="code" href="namespacenlohmann.html">nlohmann</a></div>
|
||
<div class="line"><a name="l03463"></a><span class="lineno"> 3463</span> {</div>
|
||
<div class="line"><a name="l03464"></a><span class="lineno"> 3464</span> <span class="keyword">namespace </span>detail</div>
|
||
<div class="line"><a name="l03465"></a><span class="lineno"> 3465</span> {</div>
|
||
<div class="line"><a name="l03467"></a><span class="lineno"> 3467</span> <span class="comment">// constructors //</span></div>
|
||
<div class="line"><a name="l03469"></a><span class="lineno"> 3469</span> <span class="comment"></span> </div>
|
||
<div class="line"><a name="l03470"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1external__constructor.html"> 3470</a></span> <span class="keyword">template</span><value_t> <span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1external__constructor.html">external_constructor</a>;</div>
|
||
<div class="line"><a name="l03471"></a><span class="lineno"> 3471</span>  </div>
|
||
<div class="line"><a name="l03472"></a><span class="lineno"> 3472</span> <span class="keyword">template</span><></div>
|
||
<div class="line"><a name="l03473"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1boolean_01_4.html"> 3473</a></span> <span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1external__constructor.html">external_constructor</a><<a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985">value_t</a>::<a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a84e2c64f38f78ba3ea5c905ab5a2da27">boolean</a>></div>
|
||
<div class="line"><a name="l03474"></a><span class="lineno"> 3474</span> {</div>
|
||
<div class="line"><a name="l03475"></a><span class="lineno"> 3475</span>  <span class="keyword">template</span><<span class="keyword">typename</span> BasicJsonType></div>
|
||
<div class="line"><a name="l03476"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1boolean_01_4.html#a867122bcf0856c757bd6bcbfb8be74bc"> 3476</a></span>  <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1boolean_01_4.html#a867122bcf0856c757bd6bcbfb8be74bc">construct</a>(BasicJsonType& j, <span class="keyword">typename</span> BasicJsonType::boolean_t b) noexcept</div>
|
||
<div class="line"><a name="l03477"></a><span class="lineno"> 3477</span>  {</div>
|
||
<div class="line"><a name="l03478"></a><span class="lineno"> 3478</span>  j.m_type = <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a84e2c64f38f78ba3ea5c905ab5a2da27">value_t::boolean</a>;</div>
|
||
<div class="line"><a name="l03479"></a><span class="lineno"> 3479</span>  j.m_value = b;</div>
|
||
<div class="line"><a name="l03480"></a><span class="lineno"> 3480</span>  j.assert_invariant();</div>
|
||
<div class="line"><a name="l03481"></a><span class="lineno"> 3481</span>  }</div>
|
||
<div class="line"><a name="l03482"></a><span class="lineno"> 3482</span> };</div>
|
||
<div class="line"><a name="l03483"></a><span class="lineno"> 3483</span>  </div>
|
||
<div class="line"><a name="l03484"></a><span class="lineno"> 3484</span> <span class="keyword">template</span><></div>
|
||
<div class="line"><a name="l03485"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1string_01_4.html"> 3485</a></span> <span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1external__constructor.html">external_constructor</a><<a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985">value_t</a>::<a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ab45cffe084dd3d20d928bee85e7b0f21">string</a>></div>
|
||
<div class="line"><a name="l03486"></a><span class="lineno"> 3486</span> {</div>
|
||
<div class="line"><a name="l03487"></a><span class="lineno"> 3487</span>  <span class="keyword">template</span><<span class="keyword">typename</span> BasicJsonType></div>
|
||
<div class="line"><a name="l03488"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1string_01_4.html#ad88d0b4b7ea01ea20e12cc1b82fe0d92"> 3488</a></span>  <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1string_01_4.html#ad88d0b4b7ea01ea20e12cc1b82fe0d92">construct</a>(BasicJsonType& j, <span class="keyword">const</span> <span class="keyword">typename</span> BasicJsonType::string_t& s)</div>
|
||
<div class="line"><a name="l03489"></a><span class="lineno"> 3489</span>  {</div>
|
||
<div class="line"><a name="l03490"></a><span class="lineno"> 3490</span>  j.m_type = <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ab45cffe084dd3d20d928bee85e7b0f21">value_t::string</a>;</div>
|
||
<div class="line"><a name="l03491"></a><span class="lineno"> 3491</span>  j.m_value = s;</div>
|
||
<div class="line"><a name="l03492"></a><span class="lineno"> 3492</span>  j.assert_invariant();</div>
|
||
<div class="line"><a name="l03493"></a><span class="lineno"> 3493</span>  }</div>
|
||
<div class="line"><a name="l03494"></a><span class="lineno"> 3494</span>  </div>
|
||
<div class="line"><a name="l03495"></a><span class="lineno"> 3495</span>  <span class="keyword">template</span><<span class="keyword">typename</span> BasicJsonType></div>
|
||
<div class="line"><a name="l03496"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1string_01_4.html#a74f56b9ca1d4e8db9751353d76668322"> 3496</a></span>  <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1string_01_4.html#a74f56b9ca1d4e8db9751353d76668322">construct</a>(BasicJsonType& j, <span class="keyword">typename</span> BasicJsonType::string_t&& s)</div>
|
||
<div class="line"><a name="l03497"></a><span class="lineno"> 3497</span>  {</div>
|
||
<div class="line"><a name="l03498"></a><span class="lineno"> 3498</span>  j.m_type = <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ab45cffe084dd3d20d928bee85e7b0f21">value_t::string</a>;</div>
|
||
<div class="line"><a name="l03499"></a><span class="lineno"> 3499</span>  j.m_value = std::move(s);</div>
|
||
<div class="line"><a name="l03500"></a><span class="lineno"> 3500</span>  j.assert_invariant();</div>
|
||
<div class="line"><a name="l03501"></a><span class="lineno"> 3501</span>  }</div>
|
||
<div class="line"><a name="l03502"></a><span class="lineno"> 3502</span>  </div>
|
||
<div class="line"><a name="l03503"></a><span class="lineno"> 3503</span>  <span class="keyword">template</span><<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> CompatibleStringType,</div>
|
||
<div class="line"><a name="l03504"></a><span class="lineno"> 3504</span>  <a class="code" href="namespacenlohmann_1_1detail.html#a02bcbc878bee413f25b985ada771aa9c">enable_if_t<not std::is_same<CompatibleStringType, typename BasicJsonType::string_t>::value</a>,</div>
|
||
<div class="line"><a name="l03505"></a><span class="lineno"> 3505</span>  <span class="keywordtype">int</span>> = 0></div>
|
||
<div class="line"><a name="l03506"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1string_01_4.html#a8822d43f0e20c5a28be329f9ca7de6c4"> 3506</a></span>  <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1string_01_4.html#a8822d43f0e20c5a28be329f9ca7de6c4">construct</a>(BasicJsonType& j, <span class="keyword">const</span> CompatibleStringType& str)</div>
|
||
<div class="line"><a name="l03507"></a><span class="lineno"> 3507</span>  {</div>
|
||
<div class="line"><a name="l03508"></a><span class="lineno"> 3508</span>  j.m_type = <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ab45cffe084dd3d20d928bee85e7b0f21">value_t::string</a>;</div>
|
||
<div class="line"><a name="l03509"></a><span class="lineno"> 3509</span>  j.m_value.string = j.template create<typename BasicJsonType::string_t>(str);</div>
|
||
<div class="line"><a name="l03510"></a><span class="lineno"> 3510</span>  j.assert_invariant();</div>
|
||
<div class="line"><a name="l03511"></a><span class="lineno"> 3511</span>  }</div>
|
||
<div class="line"><a name="l03512"></a><span class="lineno"> 3512</span> };</div>
|
||
<div class="line"><a name="l03513"></a><span class="lineno"> 3513</span>  </div>
|
||
<div class="line"><a name="l03514"></a><span class="lineno"> 3514</span> <span class="keyword">template</span><></div>
|
||
<div class="line"><a name="l03515"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1number__float_01_4.html"> 3515</a></span> <span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1external__constructor.html">external_constructor</a><<a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985">value_t</a>::<a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ad9966ecb59667235a57b4b999a649eef">number_float</a>></div>
|
||
<div class="line"><a name="l03516"></a><span class="lineno"> 3516</span> {</div>
|
||
<div class="line"><a name="l03517"></a><span class="lineno"> 3517</span>  <span class="keyword">template</span><<span class="keyword">typename</span> BasicJsonType></div>
|
||
<div class="line"><a name="l03518"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1number__float_01_4.html#a669df5a4d258b588e67f747c6d656cdb"> 3518</a></span>  <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1number__float_01_4.html#a669df5a4d258b588e67f747c6d656cdb">construct</a>(BasicJsonType& j, <span class="keyword">typename</span> BasicJsonType::number_float_t val) noexcept</div>
|
||
<div class="line"><a name="l03519"></a><span class="lineno"> 3519</span>  {</div>
|
||
<div class="line"><a name="l03520"></a><span class="lineno"> 3520</span>  j.m_type = <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ad9966ecb59667235a57b4b999a649eef">value_t::number_float</a>;</div>
|
||
<div class="line"><a name="l03521"></a><span class="lineno"> 3521</span>  j.m_value = val;</div>
|
||
<div class="line"><a name="l03522"></a><span class="lineno"> 3522</span>  j.assert_invariant();</div>
|
||
<div class="line"><a name="l03523"></a><span class="lineno"> 3523</span>  }</div>
|
||
<div class="line"><a name="l03524"></a><span class="lineno"> 3524</span> };</div>
|
||
<div class="line"><a name="l03525"></a><span class="lineno"> 3525</span>  </div>
|
||
<div class="line"><a name="l03526"></a><span class="lineno"> 3526</span> <span class="keyword">template</span><></div>
|
||
<div class="line"><a name="l03527"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1number__unsigned_01_4.html"> 3527</a></span> <span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1external__constructor.html">external_constructor</a><<a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985">value_t</a>::<a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985adce7cc8ec29055c4158828921f2f265e">number_unsigned</a>></div>
|
||
<div class="line"><a name="l03528"></a><span class="lineno"> 3528</span> {</div>
|
||
<div class="line"><a name="l03529"></a><span class="lineno"> 3529</span>  <span class="keyword">template</span><<span class="keyword">typename</span> BasicJsonType></div>
|
||
<div class="line"><a name="l03530"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1number__unsigned_01_4.html#a17969b14852f43e04353858c87b0f539"> 3530</a></span>  <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1number__unsigned_01_4.html#a17969b14852f43e04353858c87b0f539">construct</a>(BasicJsonType& j, <span class="keyword">typename</span> BasicJsonType::number_unsigned_t val) noexcept</div>
|
||
<div class="line"><a name="l03531"></a><span class="lineno"> 3531</span>  {</div>
|
||
<div class="line"><a name="l03532"></a><span class="lineno"> 3532</span>  j.m_type = <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985adce7cc8ec29055c4158828921f2f265e">value_t::number_unsigned</a>;</div>
|
||
<div class="line"><a name="l03533"></a><span class="lineno"> 3533</span>  j.m_value = val;</div>
|
||
<div class="line"><a name="l03534"></a><span class="lineno"> 3534</span>  j.assert_invariant();</div>
|
||
<div class="line"><a name="l03535"></a><span class="lineno"> 3535</span>  }</div>
|
||
<div class="line"><a name="l03536"></a><span class="lineno"> 3536</span> };</div>
|
||
<div class="line"><a name="l03537"></a><span class="lineno"> 3537</span>  </div>
|
||
<div class="line"><a name="l03538"></a><span class="lineno"> 3538</span> <span class="keyword">template</span><></div>
|
||
<div class="line"><a name="l03539"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1number__integer_01_4.html"> 3539</a></span> <span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1external__constructor.html">external_constructor</a><<a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985">value_t</a>::<a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a5763da164f8659d94a56e29df64b4bcc">number_integer</a>></div>
|
||
<div class="line"><a name="l03540"></a><span class="lineno"> 3540</span> {</div>
|
||
<div class="line"><a name="l03541"></a><span class="lineno"> 3541</span>  <span class="keyword">template</span><<span class="keyword">typename</span> BasicJsonType></div>
|
||
<div class="line"><a name="l03542"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1number__integer_01_4.html#a7c3949672ddb45095cc2527635feef0b"> 3542</a></span>  <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1number__integer_01_4.html#a7c3949672ddb45095cc2527635feef0b">construct</a>(BasicJsonType& j, <span class="keyword">typename</span> BasicJsonType::number_integer_t val) noexcept</div>
|
||
<div class="line"><a name="l03543"></a><span class="lineno"> 3543</span>  {</div>
|
||
<div class="line"><a name="l03544"></a><span class="lineno"> 3544</span>  j.m_type = <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a5763da164f8659d94a56e29df64b4bcc">value_t::number_integer</a>;</div>
|
||
<div class="line"><a name="l03545"></a><span class="lineno"> 3545</span>  j.m_value = val;</div>
|
||
<div class="line"><a name="l03546"></a><span class="lineno"> 3546</span>  j.assert_invariant();</div>
|
||
<div class="line"><a name="l03547"></a><span class="lineno"> 3547</span>  }</div>
|
||
<div class="line"><a name="l03548"></a><span class="lineno"> 3548</span> };</div>
|
||
<div class="line"><a name="l03549"></a><span class="lineno"> 3549</span>  </div>
|
||
<div class="line"><a name="l03550"></a><span class="lineno"> 3550</span> <span class="keyword">template</span><></div>
|
||
<div class="line"><a name="l03551"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1array_01_4.html"> 3551</a></span> <span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1external__constructor.html">external_constructor</a><<a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985">value_t</a>::<a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">array</a>></div>
|
||
<div class="line"><a name="l03552"></a><span class="lineno"> 3552</span> {</div>
|
||
<div class="line"><a name="l03553"></a><span class="lineno"> 3553</span>  <span class="keyword">template</span><<span class="keyword">typename</span> BasicJsonType></div>
|
||
<div class="line"><a name="l03554"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1array_01_4.html#abfb2a6eec0bc21e8a7438546aebc55d8"> 3554</a></span>  <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1array_01_4.html#abfb2a6eec0bc21e8a7438546aebc55d8">construct</a>(BasicJsonType& j, <span class="keyword">const</span> <span class="keyword">typename</span> BasicJsonType::array_t& arr)</div>
|
||
<div class="line"><a name="l03555"></a><span class="lineno"> 3555</span>  {</div>
|
||
<div class="line"><a name="l03556"></a><span class="lineno"> 3556</span>  j.m_type = <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>;</div>
|
||
<div class="line"><a name="l03557"></a><span class="lineno"> 3557</span>  j.m_value = arr;</div>
|
||
<div class="line"><a name="l03558"></a><span class="lineno"> 3558</span>  j.assert_invariant();</div>
|
||
<div class="line"><a name="l03559"></a><span class="lineno"> 3559</span>  }</div>
|
||
<div class="line"><a name="l03560"></a><span class="lineno"> 3560</span>  </div>
|
||
<div class="line"><a name="l03561"></a><span class="lineno"> 3561</span>  <span class="keyword">template</span><<span class="keyword">typename</span> BasicJsonType></div>
|
||
<div class="line"><a name="l03562"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1array_01_4.html#a50474d6624957a630a1d398cac1e7bfa"> 3562</a></span>  <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1array_01_4.html#a50474d6624957a630a1d398cac1e7bfa">construct</a>(BasicJsonType& j, <span class="keyword">typename</span> BasicJsonType::array_t&& arr)</div>
|
||
<div class="line"><a name="l03563"></a><span class="lineno"> 3563</span>  {</div>
|
||
<div class="line"><a name="l03564"></a><span class="lineno"> 3564</span>  j.m_type = <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>;</div>
|
||
<div class="line"><a name="l03565"></a><span class="lineno"> 3565</span>  j.m_value = std::move(arr);</div>
|
||
<div class="line"><a name="l03566"></a><span class="lineno"> 3566</span>  j.assert_invariant();</div>
|
||
<div class="line"><a name="l03567"></a><span class="lineno"> 3567</span>  }</div>
|
||
<div class="line"><a name="l03568"></a><span class="lineno"> 3568</span>  </div>
|
||
<div class="line"><a name="l03569"></a><span class="lineno"> 3569</span>  <span class="keyword">template</span><<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> CompatibleArrayType,</div>
|
||
<div class="line"><a name="l03570"></a><span class="lineno"> 3570</span>  <a class="code" href="namespacenlohmann_1_1detail.html#a02bcbc878bee413f25b985ada771aa9c">enable_if_t<not std::is_same<CompatibleArrayType, typename BasicJsonType::array_t>::value</a>,</div>
|
||
<div class="line"><a name="l03571"></a><span class="lineno"> 3571</span>  <span class="keywordtype">int</span>> = 0></div>
|
||
<div class="line"><a name="l03572"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1array_01_4.html#a110f50fd5378da876d9a6d6a8d945e37"> 3572</a></span>  <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1array_01_4.html#a110f50fd5378da876d9a6d6a8d945e37">construct</a>(BasicJsonType& j, <span class="keyword">const</span> CompatibleArrayType& arr)</div>
|
||
<div class="line"><a name="l03573"></a><span class="lineno"> 3573</span>  {</div>
|
||
<div class="line"><a name="l03574"></a><span class="lineno"> 3574</span>  <span class="keyword">using</span> std::begin;</div>
|
||
<div class="line"><a name="l03575"></a><span class="lineno"> 3575</span>  <span class="keyword">using</span> std::end;</div>
|
||
<div class="line"><a name="l03576"></a><span class="lineno"> 3576</span>  j.m_type = <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>;</div>
|
||
<div class="line"><a name="l03577"></a><span class="lineno"> 3577</span>  j.m_value.array = j.template create<typename BasicJsonType::array_t>(begin(arr), end(arr));</div>
|
||
<div class="line"><a name="l03578"></a><span class="lineno"> 3578</span>  j.assert_invariant();</div>
|
||
<div class="line"><a name="l03579"></a><span class="lineno"> 3579</span>  }</div>
|
||
<div class="line"><a name="l03580"></a><span class="lineno"> 3580</span>  </div>
|
||
<div class="line"><a name="l03581"></a><span class="lineno"> 3581</span>  <span class="keyword">template</span><<span class="keyword">typename</span> BasicJsonType></div>
|
||
<div class="line"><a name="l03582"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1array_01_4.html#a4ebb19b1cb84b4cb224a4c5322e16f14"> 3582</a></span>  <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1array_01_4.html#a4ebb19b1cb84b4cb224a4c5322e16f14">construct</a>(BasicJsonType& j, <span class="keyword">const</span> std::vector<bool>& arr)</div>
|
||
<div class="line"><a name="l03583"></a><span class="lineno"> 3583</span>  {</div>
|
||
<div class="line"><a name="l03584"></a><span class="lineno"> 3584</span>  j.m_type = <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>;</div>
|
||
<div class="line"><a name="l03585"></a><span class="lineno"> 3585</span>  j.m_value = <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>;</div>
|
||
<div class="line"><a name="l03586"></a><span class="lineno"> 3586</span>  j.m_value.array->reserve(arr.size());</div>
|
||
<div class="line"><a name="l03587"></a><span class="lineno"> 3587</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keywordtype">bool</span> x : arr)</div>
|
||
<div class="line"><a name="l03588"></a><span class="lineno"> 3588</span>  {</div>
|
||
<div class="line"><a name="l03589"></a><span class="lineno"> 3589</span>  j.m_value.array->push_back(x);</div>
|
||
<div class="line"><a name="l03590"></a><span class="lineno"> 3590</span>  }</div>
|
||
<div class="line"><a name="l03591"></a><span class="lineno"> 3591</span>  j.assert_invariant();</div>
|
||
<div class="line"><a name="l03592"></a><span class="lineno"> 3592</span>  }</div>
|
||
<div class="line"><a name="l03593"></a><span class="lineno"> 3593</span>  </div>
|
||
<div class="line"><a name="l03594"></a><span class="lineno"> 3594</span>  <span class="keyword">template</span><<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> T,</div>
|
||
<div class="line"><a name="l03595"></a><span class="lineno"> 3595</span>  <a class="code" href="namespacenlohmann_1_1detail.html#a02bcbc878bee413f25b985ada771aa9c">enable_if_t<std::is_convertible<T, BasicJsonType>::value</a>, <span class="keywordtype">int</span>> = 0></div>
|
||
<div class="line"><a name="l03596"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1array_01_4.html#a1b9226304e6492141080b4ebf228ddac"> 3596</a></span>  <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1array_01_4.html#a1b9226304e6492141080b4ebf228ddac">construct</a>(BasicJsonType& j, <span class="keyword">const</span> std::valarray<T>& arr)</div>
|
||
<div class="line"><a name="l03597"></a><span class="lineno"> 3597</span>  {</div>
|
||
<div class="line"><a name="l03598"></a><span class="lineno"> 3598</span>  j.m_type = <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>;</div>
|
||
<div class="line"><a name="l03599"></a><span class="lineno"> 3599</span>  j.m_value = <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>;</div>
|
||
<div class="line"><a name="l03600"></a><span class="lineno"> 3600</span>  j.m_value.array->resize(arr.size());</div>
|
||
<div class="line"><a name="l03601"></a><span class="lineno"> 3601</span>  <span class="keywordflow">if</span> (arr.size() > 0)</div>
|
||
<div class="line"><a name="l03602"></a><span class="lineno"> 3602</span>  {</div>
|
||
<div class="line"><a name="l03603"></a><span class="lineno"> 3603</span>  std::copy(std::begin(arr), std::end(arr), j.m_value.array->begin());</div>
|
||
<div class="line"><a name="l03604"></a><span class="lineno"> 3604</span>  }</div>
|
||
<div class="line"><a name="l03605"></a><span class="lineno"> 3605</span>  j.assert_invariant();</div>
|
||
<div class="line"><a name="l03606"></a><span class="lineno"> 3606</span>  }</div>
|
||
<div class="line"><a name="l03607"></a><span class="lineno"> 3607</span> };</div>
|
||
<div class="line"><a name="l03608"></a><span class="lineno"> 3608</span>  </div>
|
||
<div class="line"><a name="l03609"></a><span class="lineno"> 3609</span> <span class="keyword">template</span><></div>
|
||
<div class="line"><a name="l03610"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1object_01_4.html"> 3610</a></span> <span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1external__constructor.html">external_constructor</a><<a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985">value_t</a>::<a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">object</a>></div>
|
||
<div class="line"><a name="l03611"></a><span class="lineno"> 3611</span> {</div>
|
||
<div class="line"><a name="l03612"></a><span class="lineno"> 3612</span>  <span class="keyword">template</span><<span class="keyword">typename</span> BasicJsonType></div>
|
||
<div class="line"><a name="l03613"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1object_01_4.html#a3a369c5d49596dd4411e368425f9ac7a"> 3613</a></span>  <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1object_01_4.html#a3a369c5d49596dd4411e368425f9ac7a">construct</a>(BasicJsonType& j, <span class="keyword">const</span> <span class="keyword">typename</span> BasicJsonType::object_t& obj)</div>
|
||
<div class="line"><a name="l03614"></a><span class="lineno"> 3614</span>  {</div>
|
||
<div class="line"><a name="l03615"></a><span class="lineno"> 3615</span>  j.m_type = <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>;</div>
|
||
<div class="line"><a name="l03616"></a><span class="lineno"> 3616</span>  j.m_value = obj;</div>
|
||
<div class="line"><a name="l03617"></a><span class="lineno"> 3617</span>  j.assert_invariant();</div>
|
||
<div class="line"><a name="l03618"></a><span class="lineno"> 3618</span>  }</div>
|
||
<div class="line"><a name="l03619"></a><span class="lineno"> 3619</span>  </div>
|
||
<div class="line"><a name="l03620"></a><span class="lineno"> 3620</span>  <span class="keyword">template</span><<span class="keyword">typename</span> BasicJsonType></div>
|
||
<div class="line"><a name="l03621"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1object_01_4.html#a1e044961affbd6417386d6e9f1d545e9"> 3621</a></span>  <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1object_01_4.html#a1e044961affbd6417386d6e9f1d545e9">construct</a>(BasicJsonType& j, <span class="keyword">typename</span> BasicJsonType::object_t&& obj)</div>
|
||
<div class="line"><a name="l03622"></a><span class="lineno"> 3622</span>  {</div>
|
||
<div class="line"><a name="l03623"></a><span class="lineno"> 3623</span>  j.m_type = <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>;</div>
|
||
<div class="line"><a name="l03624"></a><span class="lineno"> 3624</span>  j.m_value = std::move(obj);</div>
|
||
<div class="line"><a name="l03625"></a><span class="lineno"> 3625</span>  j.assert_invariant();</div>
|
||
<div class="line"><a name="l03626"></a><span class="lineno"> 3626</span>  }</div>
|
||
<div class="line"><a name="l03627"></a><span class="lineno"> 3627</span>  </div>
|
||
<div class="line"><a name="l03628"></a><span class="lineno"> 3628</span>  <span class="keyword">template</span><<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> CompatibleObjectType,</div>
|
||
<div class="line"><a name="l03629"></a><span class="lineno"> 3629</span>  <a class="code" href="namespacenlohmann_1_1detail.html#a02bcbc878bee413f25b985ada771aa9c">enable_if_t<not std::is_same<CompatibleObjectType, typename BasicJsonType::object_t>::value</a>, <span class="keywordtype">int</span>> = 0></div>
|
||
<div class="line"><a name="l03630"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1object_01_4.html#a91f89abe0ec4dec59099b691682ff927"> 3630</a></span>  <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1object_01_4.html#a91f89abe0ec4dec59099b691682ff927">construct</a>(BasicJsonType& j, <span class="keyword">const</span> CompatibleObjectType& obj)</div>
|
||
<div class="line"><a name="l03631"></a><span class="lineno"> 3631</span>  {</div>
|
||
<div class="line"><a name="l03632"></a><span class="lineno"> 3632</span>  <span class="keyword">using</span> std::begin;</div>
|
||
<div class="line"><a name="l03633"></a><span class="lineno"> 3633</span>  <span class="keyword">using</span> std::end;</div>
|
||
<div class="line"><a name="l03634"></a><span class="lineno"> 3634</span>  </div>
|
||
<div class="line"><a name="l03635"></a><span class="lineno"> 3635</span>  j.m_type = <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>;</div>
|
||
<div class="line"><a name="l03636"></a><span class="lineno"> 3636</span>  j.m_value.object = j.template create<typename BasicJsonType::object_t>(begin(obj), end(obj));</div>
|
||
<div class="line"><a name="l03637"></a><span class="lineno"> 3637</span>  j.assert_invariant();</div>
|
||
<div class="line"><a name="l03638"></a><span class="lineno"> 3638</span>  }</div>
|
||
<div class="line"><a name="l03639"></a><span class="lineno"> 3639</span> };</div>
|
||
<div class="line"><a name="l03640"></a><span class="lineno"> 3640</span>  </div>
|
||
<div class="line"><a name="l03642"></a><span class="lineno"> 3642</span> <span class="comment">// to_json //</span></div>
|
||
<div class="line"><a name="l03644"></a><span class="lineno"> 3644</span> <span class="comment"></span> </div>
|
||
<div class="line"><a name="l03645"></a><span class="lineno"> 3645</span> <span class="keyword">template</span><<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> T,</div>
|
||
<div class="line"><a name="l03646"></a><span class="lineno"> 3646</span>  enable_if_t<std::is_same<T, typename BasicJsonType::boolean_t>::value, <span class="keywordtype">int</span>> = 0></div>
|
||
<div class="line"><a name="l03647"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a1a804b98cbe89b7e44b698f2ca860490"> 3647</a></span> <span class="keywordtype">void</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1a804b98cbe89b7e44b698f2ca860490">to_json</a>(BasicJsonType& j, T b) noexcept</div>
|
||
<div class="line"><a name="l03648"></a><span class="lineno"> 3648</span> {</div>
|
||
<div class="line"><a name="l03649"></a><span class="lineno"> 3649</span>  <a class="code" href="structnlohmann_1_1detail_1_1external__constructor.html">external_constructor<value_t::boolean>::construct</a>(j, b);</div>
|
||
<div class="line"><a name="l03650"></a><span class="lineno"> 3650</span> }</div>
|
||
<div class="line"><a name="l03651"></a><span class="lineno"> 3651</span>  </div>
|
||
<div class="line"><a name="l03652"></a><span class="lineno"> 3652</span> <span class="keyword">template</span><<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> CompatibleString,</div>
|
||
<div class="line"><a name="l03653"></a><span class="lineno"> 3653</span>  enable_if_t<std::is_constructible<typename BasicJsonType::string_t, CompatibleString>::value, <span class="keywordtype">int</span>> = 0></div>
|
||
<div class="line"><a name="l03654"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a7356ed05cdbbb080cee80e1211e1c6c9"> 3654</a></span> <span class="keywordtype">void</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1a804b98cbe89b7e44b698f2ca860490">to_json</a>(BasicJsonType& j, <span class="keyword">const</span> CompatibleString& s)</div>
|
||
<div class="line"><a name="l03655"></a><span class="lineno"> 3655</span> {</div>
|
||
<div class="line"><a name="l03656"></a><span class="lineno"> 3656</span>  <a class="code" href="structnlohmann_1_1detail_1_1external__constructor.html">external_constructor<value_t::string>::construct</a>(j, s);</div>
|
||
<div class="line"><a name="l03657"></a><span class="lineno"> 3657</span> }</div>
|
||
<div class="line"><a name="l03658"></a><span class="lineno"> 3658</span>  </div>
|
||
<div class="line"><a name="l03659"></a><span class="lineno"> 3659</span> <span class="keyword">template</span><<span class="keyword">typename</span> BasicJsonType></div>
|
||
<div class="line"><a name="l03660"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a4aa1ca6b7c61bf19d1f30ea5b669f68e"> 3660</a></span> <span class="keywordtype">void</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1a804b98cbe89b7e44b698f2ca860490">to_json</a>(BasicJsonType& j, <span class="keyword">typename</span> BasicJsonType::string_t&& s)</div>
|
||
<div class="line"><a name="l03661"></a><span class="lineno"> 3661</span> {</div>
|
||
<div class="line"><a name="l03662"></a><span class="lineno"> 3662</span>  <a class="code" href="structnlohmann_1_1detail_1_1external__constructor.html">external_constructor<value_t::string>::construct</a>(j, std::move(s));</div>
|
||
<div class="line"><a name="l03663"></a><span class="lineno"> 3663</span> }</div>
|
||
<div class="line"><a name="l03664"></a><span class="lineno"> 3664</span>  </div>
|
||
<div class="line"><a name="l03665"></a><span class="lineno"> 3665</span> <span class="keyword">template</span><<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> FloatType,</div>
|
||
<div class="line"><a name="l03666"></a><span class="lineno"> 3666</span>  enable_if_t<std::is_floating_point<FloatType>::value, <span class="keywordtype">int</span>> = 0></div>
|
||
<div class="line"><a name="l03667"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a22bffdc8bc7e43af380ba2050696b230"> 3667</a></span> <span class="keywordtype">void</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1a804b98cbe89b7e44b698f2ca860490">to_json</a>(BasicJsonType& j, FloatType val) noexcept</div>
|
||
<div class="line"><a name="l03668"></a><span class="lineno"> 3668</span> {</div>
|
||
<div class="line"><a name="l03669"></a><span class="lineno"> 3669</span>  <a class="code" href="structnlohmann_1_1detail_1_1external__constructor.html">external_constructor<value_t::number_float>::construct</a>(j, <span class="keyword">static_cast<</span>typename BasicJsonType::number_float_t<span class="keyword">></span>(val));</div>
|
||
<div class="line"><a name="l03670"></a><span class="lineno"> 3670</span> }</div>
|
||
<div class="line"><a name="l03671"></a><span class="lineno"> 3671</span>  </div>
|
||
<div class="line"><a name="l03672"></a><span class="lineno"> 3672</span> <span class="keyword">template</span><<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> CompatibleNumberUnsignedType,</div>
|
||
<div class="line"><a name="l03673"></a><span class="lineno"> 3673</span>  enable_if_t<is_compatible_integer_type<typename BasicJsonType::number_unsigned_t, CompatibleNumberUnsignedType>::value, <span class="keywordtype">int</span>> = 0></div>
|
||
<div class="line"><a name="l03674"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#ae5fd66b5517b3b5a6c6b9fd9f29ba8dc"> 3674</a></span> <span class="keywordtype">void</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1a804b98cbe89b7e44b698f2ca860490">to_json</a>(BasicJsonType& j, CompatibleNumberUnsignedType val) noexcept</div>
|
||
<div class="line"><a name="l03675"></a><span class="lineno"> 3675</span> {</div>
|
||
<div class="line"><a name="l03676"></a><span class="lineno"> 3676</span>  <a class="code" href="structnlohmann_1_1detail_1_1external__constructor.html">external_constructor<value_t::number_unsigned>::construct</a>(j, <span class="keyword">static_cast<</span>typename BasicJsonType::number_unsigned_t<span class="keyword">></span>(val));</div>
|
||
<div class="line"><a name="l03677"></a><span class="lineno"> 3677</span> }</div>
|
||
<div class="line"><a name="l03678"></a><span class="lineno"> 3678</span>  </div>
|
||
<div class="line"><a name="l03679"></a><span class="lineno"> 3679</span> <span class="keyword">template</span><<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> CompatibleNumberIntegerType,</div>
|
||
<div class="line"><a name="l03680"></a><span class="lineno"> 3680</span>  enable_if_t<is_compatible_integer_type<typename BasicJsonType::number_integer_t, CompatibleNumberIntegerType>::value, <span class="keywordtype">int</span>> = 0></div>
|
||
<div class="line"><a name="l03681"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a91fe576be579c8c2fdd14610605c6dd2"> 3681</a></span> <span class="keywordtype">void</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1a804b98cbe89b7e44b698f2ca860490">to_json</a>(BasicJsonType& j, CompatibleNumberIntegerType val) noexcept</div>
|
||
<div class="line"><a name="l03682"></a><span class="lineno"> 3682</span> {</div>
|
||
<div class="line"><a name="l03683"></a><span class="lineno"> 3683</span>  <a class="code" href="structnlohmann_1_1detail_1_1external__constructor.html">external_constructor<value_t::number_integer>::construct</a>(j, <span class="keyword">static_cast<</span>typename BasicJsonType::number_integer_t<span class="keyword">></span>(val));</div>
|
||
<div class="line"><a name="l03684"></a><span class="lineno"> 3684</span> }</div>
|
||
<div class="line"><a name="l03685"></a><span class="lineno"> 3685</span>  </div>
|
||
<div class="line"><a name="l03686"></a><span class="lineno"> 3686</span> <span class="keyword">template</span><<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> EnumType,</div>
|
||
<div class="line"><a name="l03687"></a><span class="lineno"> 3687</span>  enable_if_t<std::is_enum<EnumType>::value, <span class="keywordtype">int</span>> = 0></div>
|
||
<div class="line"><a name="l03688"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a0c8b159dba71981d6c555d284cf6e2bf"> 3688</a></span> <span class="keywordtype">void</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1a804b98cbe89b7e44b698f2ca860490">to_json</a>(BasicJsonType& j, EnumType e) noexcept</div>
|
||
<div class="line"><a name="l03689"></a><span class="lineno"> 3689</span> {</div>
|
||
<div class="line"><a name="l03690"></a><span class="lineno"> 3690</span>  <span class="keyword">using</span> underlying_type = <span class="keyword">typename</span> std::underlying_type<EnumType>::type;</div>
|
||
<div class="line"><a name="l03691"></a><span class="lineno"> 3691</span>  <a class="code" href="structnlohmann_1_1detail_1_1external__constructor.html">external_constructor<value_t::number_integer>::construct</a>(j, <span class="keyword">static_cast<</span>underlying_type<span class="keyword">></span>(e));</div>
|
||
<div class="line"><a name="l03692"></a><span class="lineno"> 3692</span> }</div>
|
||
<div class="line"><a name="l03693"></a><span class="lineno"> 3693</span>  </div>
|
||
<div class="line"><a name="l03694"></a><span class="lineno"> 3694</span> <span class="keyword">template</span><<span class="keyword">typename</span> BasicJsonType></div>
|
||
<div class="line"><a name="l03695"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#aeca6fb5fede5ed1e12a4420d98a5692b"> 3695</a></span> <span class="keywordtype">void</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1a804b98cbe89b7e44b698f2ca860490">to_json</a>(BasicJsonType& j, <span class="keyword">const</span> std::vector<bool>& e)</div>
|
||
<div class="line"><a name="l03696"></a><span class="lineno"> 3696</span> {</div>
|
||
<div class="line"><a name="l03697"></a><span class="lineno"> 3697</span>  <a class="code" href="structnlohmann_1_1detail_1_1external__constructor.html">external_constructor<value_t::array>::construct</a>(j, e);</div>
|
||
<div class="line"><a name="l03698"></a><span class="lineno"> 3698</span> }</div>
|
||
<div class="line"><a name="l03699"></a><span class="lineno"> 3699</span>  </div>
|
||
<div class="line"><a name="l03700"></a><span class="lineno"> 3700</span> <span class="keyword">template</span> <<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> CompatibleArrayType,</div>
|
||
<div class="line"><a name="l03701"></a><span class="lineno"> 3701</span>  <a class="code" href="namespacenlohmann_1_1detail.html#a02bcbc878bee413f25b985ada771aa9c">enable_if_t</a><is_compatible_array_type<BasicJsonType,</div>
|
||
<div class="line"><a name="l03702"></a><span class="lineno"> 3702</span>  CompatibleArrayType>::value and</div>
|
||
<div class="line"><a name="l03703"></a><span class="lineno"> 3703</span>  not is_compatible_object_type<</div>
|
||
<div class="line"><a name="l03704"></a><span class="lineno"> 3704</span>  BasicJsonType, CompatibleArrayType>::value and</div>
|
||
<div class="line"><a name="l03705"></a><span class="lineno"> 3705</span>  not is_compatible_string_type<BasicJsonType, CompatibleArrayType>::value and</div>
|
||
<div class="line"><a name="l03706"></a><span class="lineno"> 3706</span>  not is_basic_json<CompatibleArrayType>::value,</div>
|
||
<div class="line"><a name="l03707"></a><span class="lineno"> 3707</span>  <span class="keywordtype">int</span>> = 0></div>
|
||
<div class="line"><a name="l03708"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a3afebc132c5ff83f9cd160e52030fdfd"> 3708</a></span> <span class="keywordtype">void</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1a804b98cbe89b7e44b698f2ca860490">to_json</a>(BasicJsonType& j, <span class="keyword">const</span> CompatibleArrayType& arr)</div>
|
||
<div class="line"><a name="l03709"></a><span class="lineno"> 3709</span> {</div>
|
||
<div class="line"><a name="l03710"></a><span class="lineno"> 3710</span>  <a class="code" href="structnlohmann_1_1detail_1_1external__constructor.html">external_constructor<value_t::array>::construct</a>(j, arr);</div>
|
||
<div class="line"><a name="l03711"></a><span class="lineno"> 3711</span> }</div>
|
||
<div class="line"><a name="l03712"></a><span class="lineno"> 3712</span>  </div>
|
||
<div class="line"><a name="l03713"></a><span class="lineno"> 3713</span> <span class="keyword">template</span><<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> T,</div>
|
||
<div class="line"><a name="l03714"></a><span class="lineno"> 3714</span>  enable_if_t<std::is_convertible<T, BasicJsonType>::value, <span class="keywordtype">int</span>> = 0></div>
|
||
<div class="line"><a name="l03715"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a7f7c7b9760161b774cdc0b4b838fae64"> 3715</a></span> <span class="keywordtype">void</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1a804b98cbe89b7e44b698f2ca860490">to_json</a>(BasicJsonType& j, <span class="keyword">const</span> std::valarray<T>& arr)</div>
|
||
<div class="line"><a name="l03716"></a><span class="lineno"> 3716</span> {</div>
|
||
<div class="line"><a name="l03717"></a><span class="lineno"> 3717</span>  <a class="code" href="structnlohmann_1_1detail_1_1external__constructor.html">external_constructor<value_t::array>::construct</a>(j, std::move(arr));</div>
|
||
<div class="line"><a name="l03718"></a><span class="lineno"> 3718</span> }</div>
|
||
<div class="line"><a name="l03719"></a><span class="lineno"> 3719</span>  </div>
|
||
<div class="line"><a name="l03720"></a><span class="lineno"> 3720</span> <span class="keyword">template</span><<span class="keyword">typename</span> BasicJsonType></div>
|
||
<div class="line"><a name="l03721"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#aa0fd1b5788e9ba37e31da43dda738cb5"> 3721</a></span> <span class="keywordtype">void</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1a804b98cbe89b7e44b698f2ca860490">to_json</a>(BasicJsonType& j, <span class="keyword">typename</span> BasicJsonType::array_t&& arr)</div>
|
||
<div class="line"><a name="l03722"></a><span class="lineno"> 3722</span> {</div>
|
||
<div class="line"><a name="l03723"></a><span class="lineno"> 3723</span>  <a class="code" href="structnlohmann_1_1detail_1_1external__constructor.html">external_constructor<value_t::array>::construct</a>(j, std::move(arr));</div>
|
||
<div class="line"><a name="l03724"></a><span class="lineno"> 3724</span> }</div>
|
||
<div class="line"><a name="l03725"></a><span class="lineno"> 3725</span>  </div>
|
||
<div class="line"><a name="l03726"></a><span class="lineno"> 3726</span> <span class="keyword">template</span><<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> CompatibleObjectType,</div>
|
||
<div class="line"><a name="l03727"></a><span class="lineno"> 3727</span>  enable_if_t<is_compatible_object_type<BasicJsonType, CompatibleObjectType>::value and not is_basic_json<CompatibleObjectType>::value, <span class="keywordtype">int</span>> = 0></div>
|
||
<div class="line"><a name="l03728"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a24c9c12f3839c94e09532f08de85e949"> 3728</a></span> <span class="keywordtype">void</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1a804b98cbe89b7e44b698f2ca860490">to_json</a>(BasicJsonType& j, <span class="keyword">const</span> CompatibleObjectType& obj)</div>
|
||
<div class="line"><a name="l03729"></a><span class="lineno"> 3729</span> {</div>
|
||
<div class="line"><a name="l03730"></a><span class="lineno"> 3730</span>  <a class="code" href="structnlohmann_1_1detail_1_1external__constructor.html">external_constructor<value_t::object>::construct</a>(j, obj);</div>
|
||
<div class="line"><a name="l03731"></a><span class="lineno"> 3731</span> }</div>
|
||
<div class="line"><a name="l03732"></a><span class="lineno"> 3732</span>  </div>
|
||
<div class="line"><a name="l03733"></a><span class="lineno"> 3733</span> <span class="keyword">template</span><<span class="keyword">typename</span> BasicJsonType></div>
|
||
<div class="line"><a name="l03734"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#ac9f7a5542851c61d93740148eaec509f"> 3734</a></span> <span class="keywordtype">void</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1a804b98cbe89b7e44b698f2ca860490">to_json</a>(BasicJsonType& j, <span class="keyword">typename</span> BasicJsonType::object_t&& obj)</div>
|
||
<div class="line"><a name="l03735"></a><span class="lineno"> 3735</span> {</div>
|
||
<div class="line"><a name="l03736"></a><span class="lineno"> 3736</span>  <a class="code" href="structnlohmann_1_1detail_1_1external__constructor.html">external_constructor<value_t::object>::construct</a>(j, std::move(obj));</div>
|
||
<div class="line"><a name="l03737"></a><span class="lineno"> 3737</span> }</div>
|
||
<div class="line"><a name="l03738"></a><span class="lineno"> 3738</span>  </div>
|
||
<div class="line"><a name="l03739"></a><span class="lineno"> 3739</span> <span class="keyword">template</span> <</div>
|
||
<div class="line"><a name="l03740"></a><span class="lineno"> 3740</span>  <span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> T, std::size_t N,</div>
|
||
<div class="line"><a name="l03741"></a><span class="lineno"> 3741</span>  <a class="code" href="namespacenlohmann_1_1detail.html#a02bcbc878bee413f25b985ada771aa9c">enable_if_t</a><not std::is_constructible<<span class="keyword">typename</span> BasicJsonType::string_t,</div>
|
||
<div class="line"><a name="l03742"></a><span class="lineno"> 3742</span>  <span class="keyword">const</span> T(&)[N]>::value,</div>
|
||
<div class="line"><a name="l03743"></a><span class="lineno"> 3743</span>  <span class="keywordtype">int</span>> = 0 ></div>
|
||
<div class="line"><a name="l03744"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a20ea5175c8999fc8b673e46b892f71f6"> 3744</a></span> <span class="keywordtype">void</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1a804b98cbe89b7e44b698f2ca860490">to_json</a>(BasicJsonType& j, <span class="keyword">const</span> T(&arr)[N])</div>
|
||
<div class="line"><a name="l03745"></a><span class="lineno"> 3745</span> {</div>
|
||
<div class="line"><a name="l03746"></a><span class="lineno"> 3746</span>  <a class="code" href="structnlohmann_1_1detail_1_1external__constructor.html">external_constructor<value_t::array>::construct</a>(j, arr);</div>
|
||
<div class="line"><a name="l03747"></a><span class="lineno"> 3747</span> }</div>
|
||
<div class="line"><a name="l03748"></a><span class="lineno"> 3748</span>  </div>
|
||
<div class="line"><a name="l03749"></a><span class="lineno"> 3749</span> template < typename BasicJsonType, typename T1, typename T2, enable_if_t < std::is_constructible<BasicJsonType, T1>::value&& std::is_constructible<BasicJsonType, T2>::value, <span class="keywordtype">int</span> > = 0 ></div>
|
||
<div class="line"><a name="l03750"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#ab64eeb55b44db44eb8e9070229eb97df"> 3750</a></span> <span class="keywordtype">void</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1a804b98cbe89b7e44b698f2ca860490">to_json</a>(BasicJsonType& j, <span class="keyword">const</span> std::pair<T1, T2>& p)</div>
|
||
<div class="line"><a name="l03751"></a><span class="lineno"> 3751</span> {</div>
|
||
<div class="line"><a name="l03752"></a><span class="lineno"> 3752</span>  j = { p.first, p.second };</div>
|
||
<div class="line"><a name="l03753"></a><span class="lineno"> 3753</span> }</div>
|
||
<div class="line"><a name="l03754"></a><span class="lineno"> 3754</span>  </div>
|
||
<div class="line"><a name="l03755"></a><span class="lineno"> 3755</span> <span class="comment">// for https://github.com/nlohmann/json/pull/1134</span></div>
|
||
<div class="line"><a name="l03756"></a><span class="lineno"> 3756</span> <span class="keyword">template</span> < <span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> T,</div>
|
||
<div class="line"><a name="l03757"></a><span class="lineno"> 3757</span>  enable_if_t<std::is_same<T, iteration_proxy_value<typename BasicJsonType::iterator>>::value, <span class="keywordtype">int</span>> = 0></div>
|
||
<div class="line"><a name="l03758"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#aaa77b0c9745130b77733a92a1a2e82ec"> 3758</a></span> <span class="keywordtype">void</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1a804b98cbe89b7e44b698f2ca860490">to_json</a>(BasicJsonType& j, <span class="keyword">const</span> T& b)</div>
|
||
<div class="line"><a name="l03759"></a><span class="lineno"> 3759</span> {</div>
|
||
<div class="line"><a name="l03760"></a><span class="lineno"> 3760</span>  j = { {b.key(), b.value()} };</div>
|
||
<div class="line"><a name="l03761"></a><span class="lineno"> 3761</span> }</div>
|
||
<div class="line"><a name="l03762"></a><span class="lineno"> 3762</span>  </div>
|
||
<div class="line"><a name="l03763"></a><span class="lineno"> 3763</span> <span class="keyword">template</span><<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> Tuple, std::size_t... Idx></div>
|
||
<div class="line"><a name="l03764"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a510dfa15b01e9a8afe31600a27b28199"> 3764</a></span> <span class="keywordtype">void</span> <a class="code" href="namespacenlohmann_1_1detail.html#a510dfa15b01e9a8afe31600a27b28199">to_json_tuple_impl</a>(BasicJsonType& j, <span class="keyword">const</span> Tuple& t, <a class="code" href="structnlohmann_1_1detail_1_1index__sequence.html">index_sequence<Idx...></a> <span class="comment">/*unused*/</span>)</div>
|
||
<div class="line"><a name="l03765"></a><span class="lineno"> 3765</span> {</div>
|
||
<div class="line"><a name="l03766"></a><span class="lineno"> 3766</span>  j = { std::get<Idx>(t)... };</div>
|
||
<div class="line"><a name="l03767"></a><span class="lineno"> 3767</span> }</div>
|
||
<div class="line"><a name="l03768"></a><span class="lineno"> 3768</span>  </div>
|
||
<div class="line"><a name="l03769"></a><span class="lineno"> 3769</span> template<typename BasicJsonType, typename T, enable_if_t<is_constructible_tuple<BasicJsonType, T>::value, <span class="keywordtype">int</span> > = 0></div>
|
||
<div class="line"><a name="l03770"></a><span class="lineno"> 3770</span> <span class="keywordtype">void</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1a804b98cbe89b7e44b698f2ca860490">to_json</a>(BasicJsonType& j, <span class="keyword">const</span> T& t)</div>
|
||
<div class="line"><a name="l03771"></a><span class="lineno"> 3771</span> {</div>
|
||
<div class="line"><a name="l03772"></a><span class="lineno"> 3772</span>  <a class="code" href="namespacenlohmann_1_1detail.html#a510dfa15b01e9a8afe31600a27b28199">to_json_tuple_impl</a>(j, t, make_index_sequence<std::tuple_size<T>::value> {});</div>
|
||
<div class="line"><a name="l03773"></a><span class="lineno"> 3773</span> }</div>
|
||
<div class="line"><a name="l03774"></a><span class="lineno"> 3774</span>  </div>
|
||
<div class="line"><a name="l03775"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1to__json__fn.html"> 3775</a></span> <span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1to__json__fn.html">to_json_fn</a></div>
|
||
<div class="line"><a name="l03776"></a><span class="lineno"> 3776</span> {</div>
|
||
<div class="line"><a name="l03777"></a><span class="lineno"> 3777</span>  <span class="keyword">template</span><<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> T></div>
|
||
<div class="line"><a name="l03778"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1to__json__fn.html#aecfb5114c8a737fc89d98589482795b8"> 3778</a></span>  <span class="keyword">auto</span> <a class="code" href="structnlohmann_1_1detail_1_1to__json__fn.html#aecfb5114c8a737fc89d98589482795b8">operator()</a>(BasicJsonType& j, T&& val) <span class="keyword">const</span> noexcept(noexcept(<a class="code" href="namespacenlohmann_1_1detail.html#a1a804b98cbe89b7e44b698f2ca860490">to_json</a>(j, std::forward<T>(val))))</div>
|
||
<div class="line"><a name="l03779"></a><span class="lineno"> 3779</span>  -> decltype(<a class="code" href="namespacenlohmann_1_1detail.html#a1a804b98cbe89b7e44b698f2ca860490">to_json</a>(j, std::forward<T>(val)), <span class="keywordtype">void</span>())</div>
|
||
<div class="line"><a name="l03780"></a><span class="lineno"> 3780</span>  {</div>
|
||
<div class="line"><a name="l03781"></a><span class="lineno"> 3781</span>  <span class="keywordflow">return</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1a804b98cbe89b7e44b698f2ca860490">to_json</a>(j, std::forward<T>(val));</div>
|
||
<div class="line"><a name="l03782"></a><span class="lineno"> 3782</span>  }</div>
|
||
<div class="line"><a name="l03783"></a><span class="lineno"> 3783</span> };</div>
|
||
<div class="line"><a name="l03784"></a><span class="lineno"> 3784</span> } <span class="comment">// namespace detail</span></div>
|
||
<div class="line"><a name="l03785"></a><span class="lineno"> 3785</span>  </div>
|
||
<div class="line"><a name="l03787"></a><span class="lineno"> 3787</span> <span class="keyword">namespace</span></div>
|
||
<div class="line"><a name="l03788"></a><span class="lineno"> 3788</span> {</div>
|
||
<div class="line"><a name="l03789"></a><span class="lineno"> 3789</span> constexpr <span class="keyword">const</span> <span class="keyword">auto</span>& <a class="code" href="namespacenlohmann_1_1detail.html#aaa77b0c9745130b77733a92a1a2e82ec">to_json</a> = <a class="code" href="structnlohmann_1_1detail_1_1static__const.html#a6bb7ab2ddd6abc41fb4ffb7c6dfa237e">detail::static_const<detail::to_json_fn>::value</a>;</div>
|
||
<div class="line"><a name="l03790"></a><span class="lineno"> 3790</span> } <span class="comment">// namespace</span></div>
|
||
<div class="line"><a name="l03791"></a><span class="lineno"> 3791</span> } <span class="comment">// namespace nlohmann</span></div>
|
||
<div class="line"><a name="l03792"></a><span class="lineno"> 3792</span>  </div>
|
||
<div class="line"><a name="l03793"></a><span class="lineno"> 3793</span>  </div>
|
||
<div class="line"><a name="l03794"></a><span class="lineno"> 3794</span> <span class="keyword">namespace </span><a class="code" href="namespacenlohmann.html">nlohmann</a></div>
|
||
<div class="line"><a name="l03795"></a><span class="lineno"> 3795</span> {</div>
|
||
<div class="line"><a name="l03796"></a><span class="lineno"> 3796</span>  </div>
|
||
<div class="line"><a name="l03797"></a><span class="lineno"> 3797</span> <span class="keyword">template</span><<span class="keyword">typename</span>, <span class="keyword">typename</span>></div>
|
||
<div class="line"><a name="l03798"></a><span class="lineno"> 3798</span> <span class="keyword">struct </span>adl_serializer</div>
|
||
<div class="line"><a name="l03799"></a><span class="lineno"> 3799</span> {</div>
|
||
<div class="line"><a name="l03809"></a><span class="lineno"> 3809</span>  <span class="keyword">template</span><<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> ValueType></div>
|
||
<div class="line"><a name="l03810"></a><span class="lineno"><a class="line" href="structnlohmann_1_1adl__serializer.html#a2c544585b8b1828a0f1eecd831d0496e"> 3810</a></span>  <span class="keyword">static</span> <span class="keyword">auto</span> <a class="code" href="structnlohmann_1_1adl__serializer.html#a2c544585b8b1828a0f1eecd831d0496e">from_json</a>(BasicJsonType&& j, ValueType& val) noexcept(</div>
|
||
<div class="line"><a name="l03811"></a><span class="lineno"> 3811</span>  noexcept(::<a class="code" href="namespacenlohmann_1_1detail.html#aef5c8ea108f4d2b03fb4a635617510de">nlohmann::from_json</a>(std::forward<BasicJsonType>(j), val)))</div>
|
||
<div class="line"><a name="l03812"></a><span class="lineno"> 3812</span>  -> decltype(::<a class="code" href="namespacenlohmann_1_1detail.html#aef5c8ea108f4d2b03fb4a635617510de">nlohmann::from_json</a>(std::forward<BasicJsonType>(j), val), <span class="keywordtype">void</span>())</div>
|
||
<div class="line"><a name="l03813"></a><span class="lineno"> 3813</span>  {</div>
|
||
<div class="line"><a name="l03814"></a><span class="lineno"> 3814</span>  <a class="code" href="namespacenlohmann_1_1detail.html#aef5c8ea108f4d2b03fb4a635617510de">::nlohmann::from_json</a>(std::forward<BasicJsonType>(j), val);</div>
|
||
<div class="line"><a name="l03815"></a><span class="lineno"> 3815</span>  }</div>
|
||
<div class="line"><a name="l03816"></a><span class="lineno"> 3816</span>  </div>
|
||
<div class="line"><a name="l03826"></a><span class="lineno"> 3826</span>  <span class="keyword">template</span> <<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> ValueType></div>
|
||
<div class="line"><a name="l03827"></a><span class="lineno"><a class="line" href="structnlohmann_1_1adl__serializer.html#a01b867bd5dce5249d4f7433b8f27def6"> 3827</a></span>  <span class="keyword">static</span> <span class="keyword">auto</span> <a class="code" href="structnlohmann_1_1adl__serializer.html#a01b867bd5dce5249d4f7433b8f27def6">to_json</a>(BasicJsonType& j, ValueType&& val) noexcept(</div>
|
||
<div class="line"><a name="l03828"></a><span class="lineno"> 3828</span>  noexcept(::<a class="code" href="namespacenlohmann_1_1detail.html#aaa77b0c9745130b77733a92a1a2e82ec">nlohmann::to_json</a>(j, std::forward<ValueType>(val))))</div>
|
||
<div class="line"><a name="l03829"></a><span class="lineno"> 3829</span>  -> decltype(::<a class="code" href="namespacenlohmann_1_1detail.html#aaa77b0c9745130b77733a92a1a2e82ec">nlohmann::to_json</a>(j, std::forward<ValueType>(val)), <span class="keywordtype">void</span>())</div>
|
||
<div class="line"><a name="l03830"></a><span class="lineno"> 3830</span>  {</div>
|
||
<div class="line"><a name="l03831"></a><span class="lineno"> 3831</span>  <a class="code" href="namespacenlohmann_1_1detail.html#aaa77b0c9745130b77733a92a1a2e82ec">::nlohmann::to_json</a>(j, std::forward<ValueType>(val));</div>
|
||
<div class="line"><a name="l03832"></a><span class="lineno"> 3832</span>  }</div>
|
||
<div class="line"><a name="l03833"></a><span class="lineno"> 3833</span> };</div>
|
||
<div class="line"><a name="l03834"></a><span class="lineno"> 3834</span>  </div>
|
||
<div class="line"><a name="l03835"></a><span class="lineno"> 3835</span> } <span class="comment">// namespace nlohmann</span></div>
|
||
<div class="line"><a name="l03836"></a><span class="lineno"> 3836</span>  </div>
|
||
<div class="line"><a name="l03837"></a><span class="lineno"> 3837</span> <span class="comment">// #include <nlohmann/detail/conversions/from_json.hpp></span></div>
|
||
<div class="line"><a name="l03838"></a><span class="lineno"> 3838</span>  </div>
|
||
<div class="line"><a name="l03839"></a><span class="lineno"> 3839</span> <span class="comment">// #include <nlohmann/detail/conversions/to_json.hpp></span></div>
|
||
<div class="line"><a name="l03840"></a><span class="lineno"> 3840</span>  </div>
|
||
<div class="line"><a name="l03841"></a><span class="lineno"> 3841</span> <span class="comment">// #include <nlohmann/detail/exceptions.hpp></span></div>
|
||
<div class="line"><a name="l03842"></a><span class="lineno"> 3842</span>  </div>
|
||
<div class="line"><a name="l03843"></a><span class="lineno"> 3843</span> <span class="comment">// #include <nlohmann/detail/input/binary_reader.hpp></span></div>
|
||
<div class="line"><a name="l03844"></a><span class="lineno"> 3844</span>  </div>
|
||
<div class="line"><a name="l03845"></a><span class="lineno"> 3845</span>  </div>
|
||
<div class="line"><a name="l03846"></a><span class="lineno"> 3846</span> <span class="preprocessor">#include <algorithm></span> <span class="comment">// generate_n</span></div>
|
||
<div class="line"><a name="l03847"></a><span class="lineno"> 3847</span> <span class="preprocessor">#include <array></span> <span class="comment">// array</span></div>
|
||
<div class="line"><a name="l03848"></a><span class="lineno"> 3848</span> <span class="preprocessor">#include <cassert></span> <span class="comment">// assert</span></div>
|
||
<div class="line"><a name="l03849"></a><span class="lineno"> 3849</span> <span class="preprocessor">#include <cmath></span> <span class="comment">// ldexp</span></div>
|
||
<div class="line"><a name="l03850"></a><span class="lineno"> 3850</span> <span class="preprocessor">#include <cstddef></span> <span class="comment">// size_t</span></div>
|
||
<div class="line"><a name="l03851"></a><span class="lineno"> 3851</span> <span class="preprocessor">#include <cstdint></span> <span class="comment">// uint8_t, uint16_t, uint32_t, uint64_t</span></div>
|
||
<div class="line"><a name="l03852"></a><span class="lineno"> 3852</span> <span class="preprocessor">#include <cstdio></span> <span class="comment">// snprintf</span></div>
|
||
<div class="line"><a name="l03853"></a><span class="lineno"> 3853</span> <span class="preprocessor">#include <cstring></span> <span class="comment">// memcpy</span></div>
|
||
<div class="line"><a name="l03854"></a><span class="lineno"> 3854</span> <span class="preprocessor">#include <iterator></span> <span class="comment">// back_inserter</span></div>
|
||
<div class="line"><a name="l03855"></a><span class="lineno"> 3855</span> <span class="preprocessor">#include <limits></span> <span class="comment">// numeric_limits</span></div>
|
||
<div class="line"><a name="l03856"></a><span class="lineno"> 3856</span> <span class="preprocessor">#include <string></span> <span class="comment">// char_traits, string</span></div>
|
||
<div class="line"><a name="l03857"></a><span class="lineno"> 3857</span> <span class="preprocessor">#include <utility></span> <span class="comment">// make_pair, move</span></div>
|
||
<div class="line"><a name="l03858"></a><span class="lineno"> 3858</span>  </div>
|
||
<div class="line"><a name="l03859"></a><span class="lineno"> 3859</span> <span class="comment">// #include <nlohmann/detail/exceptions.hpp></span></div>
|
||
<div class="line"><a name="l03860"></a><span class="lineno"> 3860</span>  </div>
|
||
<div class="line"><a name="l03861"></a><span class="lineno"> 3861</span> <span class="comment">// #include <nlohmann/detail/input/input_adapters.hpp></span></div>
|
||
<div class="line"><a name="l03862"></a><span class="lineno"> 3862</span>  </div>
|
||
<div class="line"><a name="l03863"></a><span class="lineno"> 3863</span>  </div>
|
||
<div class="line"><a name="l03864"></a><span class="lineno"> 3864</span> <span class="preprocessor">#include <array></span> <span class="comment">// array</span></div>
|
||
<div class="line"><a name="l03865"></a><span class="lineno"> 3865</span> <span class="preprocessor">#include <cassert></span> <span class="comment">// assert</span></div>
|
||
<div class="line"><a name="l03866"></a><span class="lineno"> 3866</span> <span class="preprocessor">#include <cstddef></span> <span class="comment">// size_t</span></div>
|
||
<div class="line"><a name="l03867"></a><span class="lineno"> 3867</span> <span class="preprocessor">#include <cstdio></span> <span class="comment">//FILE *</span></div>
|
||
<div class="line"><a name="l03868"></a><span class="lineno"> 3868</span> <span class="preprocessor">#include <cstring></span> <span class="comment">// strlen</span></div>
|
||
<div class="line"><a name="l03869"></a><span class="lineno"> 3869</span> <span class="preprocessor">#include <istream></span> <span class="comment">// istream</span></div>
|
||
<div class="line"><a name="l03870"></a><span class="lineno"> 3870</span> <span class="preprocessor">#include <iterator></span> <span class="comment">// begin, end, iterator_traits, random_access_iterator_tag, distance, next</span></div>
|
||
<div class="line"><a name="l03871"></a><span class="lineno"> 3871</span> <span class="preprocessor">#include <memory></span> <span class="comment">// shared_ptr, make_shared, addressof</span></div>
|
||
<div class="line"><a name="l03872"></a><span class="lineno"> 3872</span> <span class="preprocessor">#include <numeric></span> <span class="comment">// accumulate</span></div>
|
||
<div class="line"><a name="l03873"></a><span class="lineno"> 3873</span> <span class="preprocessor">#include <string></span> <span class="comment">// string, char_traits</span></div>
|
||
<div class="line"><a name="l03874"></a><span class="lineno"> 3874</span> <span class="preprocessor">#include <type_traits></span> <span class="comment">// enable_if, is_base_of, is_pointer, is_integral, remove_pointer</span></div>
|
||
<div class="line"><a name="l03875"></a><span class="lineno"> 3875</span> <span class="preprocessor">#include <utility></span> <span class="comment">// pair, declval</span></div>
|
||
<div class="line"><a name="l03876"></a><span class="lineno"> 3876</span>  </div>
|
||
<div class="line"><a name="l03877"></a><span class="lineno"> 3877</span> <span class="comment">// #include <nlohmann/detail/iterators/iterator_traits.hpp></span></div>
|
||
<div class="line"><a name="l03878"></a><span class="lineno"> 3878</span>  </div>
|
||
<div class="line"><a name="l03879"></a><span class="lineno"> 3879</span> <span class="comment">// #include <nlohmann/detail/macro_scope.hpp></span></div>
|
||
<div class="line"><a name="l03880"></a><span class="lineno"> 3880</span>  </div>
|
||
<div class="line"><a name="l03881"></a><span class="lineno"> 3881</span>  </div>
|
||
<div class="line"><a name="l03882"></a><span class="lineno"> 3882</span> <span class="keyword">namespace </span><a class="code" href="namespacenlohmann.html">nlohmann</a></div>
|
||
<div class="line"><a name="l03883"></a><span class="lineno"> 3883</span> {</div>
|
||
<div class="line"><a name="l03884"></a><span class="lineno"> 3884</span> <span class="keyword">namespace </span>detail</div>
|
||
<div class="line"><a name="l03885"></a><span class="lineno"> 3885</span> {</div>
|
||
<div class="line"><a name="l03887"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40"> 3887</a></span> <span class="keyword">enum class</span> <a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40">input_format_t</a> { <a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a466deec76ecdf5fca6d38571f6324d54">json</a>, <a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40aaf9de350d652f0c9055ddab514bd23ea">cbor</a>, <a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40ac40d516627022a54003ac2b74a82688a">msgpack</a>, <a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a4537f20910e85437f6d07701864084e8">ubjson</a>, <a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a0b6879b186bfb2b1ec65d2460e4eccd4">bson</a> };</div>
|
||
<div class="line"><a name="l03888"></a><span class="lineno"> 3888</span>  </div>
|
||
<div class="line"><a name="l03890"></a><span class="lineno"> 3890</span> <span class="comment">// input adapters //</span></div>
|
||
<div class="line"><a name="l03892"></a><span class="lineno"> 3892</span> <span class="comment"></span> </div>
|
||
<div class="line"><a name="l03904"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1input__adapter__protocol.html"> 3904</a></span> <span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1input__adapter__protocol.html">input_adapter_protocol</a></div>
|
||
<div class="line"><a name="l03905"></a><span class="lineno"> 3905</span> {</div>
|
||
<div class="line"><a name="l03907"></a><span class="lineno"> 3907</span>  <span class="keyword">virtual</span> std::char_traits<char>::int_type <a class="code" href="structnlohmann_1_1detail_1_1input__adapter__protocol.html#aac10a6a4048a8ce8e2ed50277692a3ca">get_character</a>() = 0;</div>
|
||
<div class="line"><a name="l03908"></a><span class="lineno"> 3908</span>  <span class="keyword">virtual</span> <a class="code" href="structnlohmann_1_1detail_1_1input__adapter__protocol.html#a92dac74def4ac5adacd0684088bd4082">~input_adapter_protocol</a>() = <span class="keywordflow">default</span>;</div>
|
||
<div class="line"><a name="l03909"></a><span class="lineno"> 3909</span> };</div>
|
||
<div class="line"><a name="l03910"></a><span class="lineno"> 3910</span>  </div>
|
||
<div class="line"><a name="l03912"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#ae132f8cd5bb24c5e9b40ad0eafedf1c2"> 3912</a></span> <span class="keyword">using</span> <a class="code" href="namespacenlohmann_1_1detail.html#ae132f8cd5bb24c5e9b40ad0eafedf1c2">input_adapter_t</a> = std::shared_ptr<input_adapter_protocol>;</div>
|
||
<div class="line"><a name="l03913"></a><span class="lineno"> 3913</span>  </div>
|
||
<div class="line"><a name="l03918"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1file__input__adapter.html"> 3918</a></span> <span class="keyword">class </span><a class="code" href="classnlohmann_1_1detail_1_1file__input__adapter.html">file_input_adapter</a> : <span class="keyword">public</span> <a class="code" href="structnlohmann_1_1detail_1_1input__adapter__protocol.html">input_adapter_protocol</a></div>
|
||
<div class="line"><a name="l03919"></a><span class="lineno"> 3919</span> {</div>
|
||
<div class="line"><a name="l03920"></a><span class="lineno"> 3920</span>  <span class="keyword">public</span>:</div>
|
||
<div class="line"><a name="l03921"></a><span class="lineno"> 3921</span>  <a class="code" href="json_8hpp.html#a5338981b5ad9027c9e54b1c5597f4344">JSON_HEDLEY_NON_NULL</a>(2)</div>
|
||
<div class="line"><a name="l03922"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1file__input__adapter.html#aeade050f2793280503be93feff2ece5b"> 3922</a></span>  explicit <a class="code" href="classnlohmann_1_1detail_1_1file__input__adapter.html">file_input_adapter</a>(<a class="code" href="namespacestd.html">std</a>::FILE* f) noexcept</div>
|
||
<div class="line"><a name="l03923"></a><span class="lineno"> 3923</span>  : m_file(f)</div>
|
||
<div class="line"><a name="l03924"></a><span class="lineno"> 3924</span>  {}</div>
|
||
<div class="line"><a name="l03925"></a><span class="lineno"> 3925</span>  </div>
|
||
<div class="line"><a name="l03926"></a><span class="lineno"> 3926</span>  <span class="comment">// make class move-only</span></div>
|
||
<div class="line"><a name="l03927"></a><span class="lineno"> 3927</span>  <a class="code" href="classnlohmann_1_1detail_1_1file__input__adapter.html#aeade050f2793280503be93feff2ece5b">file_input_adapter</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1file__input__adapter.html">file_input_adapter</a>&) = <span class="keyword">delete</span>;</div>
|
||
<div class="line"><a name="l03928"></a><span class="lineno"> 3928</span>  <a class="code" href="classnlohmann_1_1detail_1_1file__input__adapter.html#aeade050f2793280503be93feff2ece5b">file_input_adapter</a>(<a class="code" href="classnlohmann_1_1detail_1_1file__input__adapter.html">file_input_adapter</a>&&) = <span class="keywordflow">default</span>;</div>
|
||
<div class="line"><a name="l03929"></a><span class="lineno"> 3929</span>  <a class="code" href="classnlohmann_1_1detail_1_1file__input__adapter.html">file_input_adapter</a>& <a class="code" href="classnlohmann_1_1detail_1_1file__input__adapter.html#ad59bbc7e3f23dd74475c5cb818784e42">operator=</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1file__input__adapter.html">file_input_adapter</a>&) = <span class="keyword">delete</span>;</div>
|
||
<div class="line"><a name="l03930"></a><span class="lineno"> 3930</span>  <a class="code" href="classnlohmann_1_1detail_1_1file__input__adapter.html">file_input_adapter</a>& <a class="code" href="classnlohmann_1_1detail_1_1file__input__adapter.html#ad59bbc7e3f23dd74475c5cb818784e42">operator=</a>(<a class="code" href="classnlohmann_1_1detail_1_1file__input__adapter.html">file_input_adapter</a>&&) = <span class="keywordflow">default</span>;</div>
|
||
<div class="line"><a name="l03931"></a><span class="lineno"> 3931</span>  <a class="code" href="classnlohmann_1_1detail_1_1file__input__adapter.html#af96552e4560be08b201e62a36e6b6189">~file_input_adapter</a>() <span class="keyword">override</span> = <span class="keywordflow">default</span>;</div>
|
||
<div class="line"><a name="l03932"></a><span class="lineno"> 3932</span>  </div>
|
||
<div class="line"><a name="l03933"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1file__input__adapter.html#a0d4ff48617c8f63c30babdfd09482329"> 3933</a></span>  std::char_traits<char>::int_type <a class="code" href="classnlohmann_1_1detail_1_1file__input__adapter.html#a0d4ff48617c8f63c30babdfd09482329">get_character</a>() noexcept<span class="keyword"> override</span></div>
|
||
<div class="line"><a name="l03934"></a><span class="lineno"> 3934</span> <span class="keyword"> </span>{</div>
|
||
<div class="line"><a name="l03935"></a><span class="lineno"> 3935</span>  <span class="keywordflow">return</span> std::fgetc(m_file);</div>
|
||
<div class="line"><a name="l03936"></a><span class="lineno"> 3936</span>  }</div>
|
||
<div class="line"><a name="l03937"></a><span class="lineno"> 3937</span>  </div>
|
||
<div class="line"><a name="l03938"></a><span class="lineno"> 3938</span>  <span class="keyword">private</span>:</div>
|
||
<div class="line"><a name="l03940"></a><span class="lineno"> 3940</span>  std::FILE* m_file;</div>
|
||
<div class="line"><a name="l03941"></a><span class="lineno"> 3941</span> };</div>
|
||
<div class="line"><a name="l03942"></a><span class="lineno"> 3942</span>  </div>
|
||
<div class="line"><a name="l03943"></a><span class="lineno"> 3943</span>  </div>
|
||
<div class="line"><a name="l03953"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1input__stream__adapter.html"> 3953</a></span> <span class="keyword">class </span><a class="code" href="classnlohmann_1_1detail_1_1input__stream__adapter.html">input_stream_adapter</a> : <span class="keyword">public</span> <a class="code" href="structnlohmann_1_1detail_1_1input__adapter__protocol.html">input_adapter_protocol</a></div>
|
||
<div class="line"><a name="l03954"></a><span class="lineno"> 3954</span> {</div>
|
||
<div class="line"><a name="l03955"></a><span class="lineno"> 3955</span>  <span class="keyword">public</span>:</div>
|
||
<div class="line"><a name="l03956"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1input__stream__adapter.html#a2d71eb469267abd864f765481d1e823f"> 3956</a></span>  <a class="code" href="classnlohmann_1_1detail_1_1input__stream__adapter.html#a2d71eb469267abd864f765481d1e823f">~input_stream_adapter</a>()<span class="keyword"> override</span></div>
|
||
<div class="line"><a name="l03957"></a><span class="lineno"> 3957</span> <span class="keyword"> </span>{</div>
|
||
<div class="line"><a name="l03958"></a><span class="lineno"> 3958</span>  <span class="comment">// clear stream flags; we use underlying streambuf I/O, do not</span></div>
|
||
<div class="line"><a name="l03959"></a><span class="lineno"> 3959</span>  <span class="comment">// maintain ifstream flags, except eof</span></div>
|
||
<div class="line"><a name="l03960"></a><span class="lineno"> 3960</span>  is.clear(is.rdstate() & std::ios::eofbit);</div>
|
||
<div class="line"><a name="l03961"></a><span class="lineno"> 3961</span>  }</div>
|
||
<div class="line"><a name="l03962"></a><span class="lineno"> 3962</span>  </div>
|
||
<div class="line"><a name="l03963"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1input__stream__adapter.html#af487152e4606d013eb4ec6a90eaf82ea"> 3963</a></span>  <span class="keyword">explicit</span> <a class="code" href="classnlohmann_1_1detail_1_1input__stream__adapter.html#af487152e4606d013eb4ec6a90eaf82ea">input_stream_adapter</a>(std::istream& i)</div>
|
||
<div class="line"><a name="l03964"></a><span class="lineno"> 3964</span>  : is(i), sb(*i.rdbuf())</div>
|
||
<div class="line"><a name="l03965"></a><span class="lineno"> 3965</span>  {}</div>
|
||
<div class="line"><a name="l03966"></a><span class="lineno"> 3966</span>  </div>
|
||
<div class="line"><a name="l03967"></a><span class="lineno"> 3967</span>  <span class="comment">// delete because of pointer members</span></div>
|
||
<div class="line"><a name="l03968"></a><span class="lineno"> 3968</span>  <a class="code" href="classnlohmann_1_1detail_1_1input__stream__adapter.html#af487152e4606d013eb4ec6a90eaf82ea">input_stream_adapter</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1input__stream__adapter.html">input_stream_adapter</a>&) = <span class="keyword">delete</span>;</div>
|
||
<div class="line"><a name="l03969"></a><span class="lineno"> 3969</span>  <a class="code" href="classnlohmann_1_1detail_1_1input__stream__adapter.html">input_stream_adapter</a>& <a class="code" href="classnlohmann_1_1detail_1_1input__stream__adapter.html#aeac5048221929b8f7558d1698dd0fb3a">operator=</a>(<a class="code" href="classnlohmann_1_1detail_1_1input__stream__adapter.html">input_stream_adapter</a>&) = <span class="keyword">delete</span>;</div>
|
||
<div class="line"><a name="l03970"></a><span class="lineno"> 3970</span>  <a class="code" href="classnlohmann_1_1detail_1_1input__stream__adapter.html#af487152e4606d013eb4ec6a90eaf82ea">input_stream_adapter</a>(<a class="code" href="classnlohmann_1_1detail_1_1input__stream__adapter.html">input_stream_adapter</a>&&) = <span class="keyword">delete</span>;</div>
|
||
<div class="line"><a name="l03971"></a><span class="lineno"> 3971</span>  <a class="code" href="classnlohmann_1_1detail_1_1input__stream__adapter.html">input_stream_adapter</a>& <a class="code" href="classnlohmann_1_1detail_1_1input__stream__adapter.html#aeac5048221929b8f7558d1698dd0fb3a">operator=</a>(<a class="code" href="classnlohmann_1_1detail_1_1input__stream__adapter.html">input_stream_adapter</a>&&) = <span class="keyword">delete</span>;</div>
|
||
<div class="line"><a name="l03972"></a><span class="lineno"> 3972</span>  </div>
|
||
<div class="line"><a name="l03973"></a><span class="lineno"> 3973</span>  <span class="comment">// std::istream/std::streambuf use std::char_traits<char>::to_int_type, to</span></div>
|
||
<div class="line"><a name="l03974"></a><span class="lineno"> 3974</span>  <span class="comment">// ensure that std::char_traits<char>::eof() and the character 0xFF do not</span></div>
|
||
<div class="line"><a name="l03975"></a><span class="lineno"> 3975</span>  <span class="comment">// end up as the same value, eg. 0xFFFFFFFF.</span></div>
|
||
<div class="line"><a name="l03976"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1input__stream__adapter.html#ae0760af923583de6354725e901d1869d"> 3976</a></span>  std::char_traits<char>::int_type <a class="code" href="classnlohmann_1_1detail_1_1input__stream__adapter.html#ae0760af923583de6354725e901d1869d">get_character</a>()<span class="keyword"> override</span></div>
|
||
<div class="line"><a name="l03977"></a><span class="lineno"> 3977</span> <span class="keyword"> </span>{</div>
|
||
<div class="line"><a name="l03978"></a><span class="lineno"> 3978</span>  <span class="keyword">auto</span> res = sb.sbumpc();</div>
|
||
<div class="line"><a name="l03979"></a><span class="lineno"> 3979</span>  <span class="comment">// set eof manually, as we don't use the istream interface.</span></div>
|
||
<div class="line"><a name="l03980"></a><span class="lineno"> 3980</span>  <span class="keywordflow">if</span> (res == EOF)</div>
|
||
<div class="line"><a name="l03981"></a><span class="lineno"> 3981</span>  {</div>
|
||
<div class="line"><a name="l03982"></a><span class="lineno"> 3982</span>  is.clear(is.rdstate() | std::ios::eofbit);</div>
|
||
<div class="line"><a name="l03983"></a><span class="lineno"> 3983</span>  }</div>
|
||
<div class="line"><a name="l03984"></a><span class="lineno"> 3984</span>  <span class="keywordflow">return</span> res;</div>
|
||
<div class="line"><a name="l03985"></a><span class="lineno"> 3985</span>  }</div>
|
||
<div class="line"><a name="l03986"></a><span class="lineno"> 3986</span>  </div>
|
||
<div class="line"><a name="l03987"></a><span class="lineno"> 3987</span>  <span class="keyword">private</span>:</div>
|
||
<div class="line"><a name="l03989"></a><span class="lineno"> 3989</span>  std::istream& is;</div>
|
||
<div class="line"><a name="l03990"></a><span class="lineno"> 3990</span>  std::streambuf& sb;</div>
|
||
<div class="line"><a name="l03991"></a><span class="lineno"> 3991</span> };</div>
|
||
<div class="line"><a name="l03992"></a><span class="lineno"> 3992</span>  </div>
|
||
<div class="line"><a name="l03994"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1input__buffer__adapter.html"> 3994</a></span> <span class="keyword">class </span><a class="code" href="classnlohmann_1_1detail_1_1input__buffer__adapter.html">input_buffer_adapter</a> : <span class="keyword">public</span> <a class="code" href="structnlohmann_1_1detail_1_1input__adapter__protocol.html">input_adapter_protocol</a></div>
|
||
<div class="line"><a name="l03995"></a><span class="lineno"> 3995</span> {</div>
|
||
<div class="line"><a name="l03996"></a><span class="lineno"> 3996</span>  <span class="keyword">public</span>:</div>
|
||
<div class="line"><a name="l03997"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1input__buffer__adapter.html#ad9b912fabdcb53de255e8c444d625ac3"> 3997</a></span>  <a class="code" href="classnlohmann_1_1detail_1_1input__buffer__adapter.html#ad9b912fabdcb53de255e8c444d625ac3">input_buffer_adapter</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* b, <span class="keyword">const</span> std::size_t l) noexcept</div>
|
||
<div class="line"><a name="l03998"></a><span class="lineno"> 3998</span>  : cursor(b), limit(b == <span class="keyword">nullptr</span> ? <span class="keyword">nullptr</span> : (b + l))</div>
|
||
<div class="line"><a name="l03999"></a><span class="lineno"> 3999</span>  {}</div>
|
||
<div class="line"><a name="l04000"></a><span class="lineno"> 4000</span>  </div>
|
||
<div class="line"><a name="l04001"></a><span class="lineno"> 4001</span>  <span class="comment">// delete because of pointer members</span></div>
|
||
<div class="line"><a name="l04002"></a><span class="lineno"> 4002</span>  <a class="code" href="classnlohmann_1_1detail_1_1input__buffer__adapter.html#ad9b912fabdcb53de255e8c444d625ac3">input_buffer_adapter</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1input__buffer__adapter.html">input_buffer_adapter</a>&) = <span class="keyword">delete</span>;</div>
|
||
<div class="line"><a name="l04003"></a><span class="lineno"> 4003</span>  <a class="code" href="classnlohmann_1_1detail_1_1input__buffer__adapter.html">input_buffer_adapter</a>& <a class="code" href="classnlohmann_1_1detail_1_1input__buffer__adapter.html#a0871125057d993684ba8e45fb2b8a76b">operator=</a>(<a class="code" href="classnlohmann_1_1detail_1_1input__buffer__adapter.html">input_buffer_adapter</a>&) = <span class="keyword">delete</span>;</div>
|
||
<div class="line"><a name="l04004"></a><span class="lineno"> 4004</span>  <a class="code" href="classnlohmann_1_1detail_1_1input__buffer__adapter.html#ad9b912fabdcb53de255e8c444d625ac3">input_buffer_adapter</a>(<a class="code" href="classnlohmann_1_1detail_1_1input__buffer__adapter.html">input_buffer_adapter</a>&&) = <span class="keyword">delete</span>;</div>
|
||
<div class="line"><a name="l04005"></a><span class="lineno"> 4005</span>  <a class="code" href="classnlohmann_1_1detail_1_1input__buffer__adapter.html">input_buffer_adapter</a>& <a class="code" href="classnlohmann_1_1detail_1_1input__buffer__adapter.html#a0871125057d993684ba8e45fb2b8a76b">operator=</a>(<a class="code" href="classnlohmann_1_1detail_1_1input__buffer__adapter.html">input_buffer_adapter</a>&&) = <span class="keyword">delete</span>;</div>
|
||
<div class="line"><a name="l04006"></a><span class="lineno"> 4006</span>  <a class="code" href="classnlohmann_1_1detail_1_1input__buffer__adapter.html#ac242b822b2f6772e5fc682ddb80cb066">~input_buffer_adapter</a>() <span class="keyword">override</span> = <span class="keywordflow">default</span>;</div>
|
||
<div class="line"><a name="l04007"></a><span class="lineno"> 4007</span>  </div>
|
||
<div class="line"><a name="l04008"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1input__buffer__adapter.html#ae9e195b04f3551fafb0925aafba00124"> 4008</a></span>  std::char_traits<char>::int_type <a class="code" href="classnlohmann_1_1detail_1_1input__buffer__adapter.html#ae9e195b04f3551fafb0925aafba00124">get_character</a>() noexcept<span class="keyword"> override</span></div>
|
||
<div class="line"><a name="l04009"></a><span class="lineno"> 4009</span> <span class="keyword"> </span>{</div>
|
||
<div class="line"><a name="l04010"></a><span class="lineno"> 4010</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a355f2770653ff7bdd5c74b204b5a3ad0">JSON_HEDLEY_LIKELY</a>(cursor < limit))</div>
|
||
<div class="line"><a name="l04011"></a><span class="lineno"> 4011</span>  {</div>
|
||
<div class="line"><a name="l04012"></a><span class="lineno"> 4012</span>  assert(cursor != <span class="keyword">nullptr</span> and limit != <span class="keyword">nullptr</span>);</div>
|
||
<div class="line"><a name="l04013"></a><span class="lineno"> 4013</span>  <span class="keywordflow">return</span> std::char_traits<char>::to_int_type(*(cursor++));</div>
|
||
<div class="line"><a name="l04014"></a><span class="lineno"> 4014</span>  }</div>
|
||
<div class="line"><a name="l04015"></a><span class="lineno"> 4015</span>  </div>
|
||
<div class="line"><a name="l04016"></a><span class="lineno"> 4016</span>  <span class="keywordflow">return</span> std::char_traits<char>::eof();</div>
|
||
<div class="line"><a name="l04017"></a><span class="lineno"> 4017</span>  }</div>
|
||
<div class="line"><a name="l04018"></a><span class="lineno"> 4018</span>  </div>
|
||
<div class="line"><a name="l04019"></a><span class="lineno"> 4019</span>  <span class="keyword">private</span>:</div>
|
||
<div class="line"><a name="l04021"></a><span class="lineno"> 4021</span>  <span class="keyword">const</span> <span class="keywordtype">char</span>* cursor;</div>
|
||
<div class="line"><a name="l04023"></a><span class="lineno"> 4023</span>  <span class="keyword">const</span> <span class="keywordtype">char</span>* <span class="keyword">const</span> limit;</div>
|
||
<div class="line"><a name="l04024"></a><span class="lineno"> 4024</span> };</div>
|
||
<div class="line"><a name="l04025"></a><span class="lineno"> 4025</span>  </div>
|
||
<div class="line"><a name="l04026"></a><span class="lineno"> 4026</span> <span class="keyword">template</span><<span class="keyword">typename</span> W<span class="keywordtype">id</span>eStringType, <span class="keywordtype">size_t</span> T></div>
|
||
<div class="line"><a name="l04027"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1wide__string__input__helper.html"> 4027</a></span> <span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1wide__string__input__helper.html">wide_string_input_helper</a></div>
|
||
<div class="line"><a name="l04028"></a><span class="lineno"> 4028</span> {</div>
|
||
<div class="line"><a name="l04029"></a><span class="lineno"> 4029</span>  <span class="comment">// UTF-32</span></div>
|
||
<div class="line"><a name="l04030"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1wide__string__input__helper.html#ae82d79118fa319a97e4a40568186a922"> 4030</a></span>  <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="structnlohmann_1_1detail_1_1wide__string__input__helper.html#ae82d79118fa319a97e4a40568186a922">fill_buffer</a>(<span class="keyword">const</span> WideStringType& str,</div>
|
||
<div class="line"><a name="l04031"></a><span class="lineno"> 4031</span>  <span class="keywordtype">size_t</span>& current_wchar,</div>
|
||
<div class="line"><a name="l04032"></a><span class="lineno"> 4032</span>  std::array<std::char_traits<char>::int_type, 4>& utf8_bytes,</div>
|
||
<div class="line"><a name="l04033"></a><span class="lineno"> 4033</span>  <span class="keywordtype">size_t</span>& utf8_bytes_index,</div>
|
||
<div class="line"><a name="l04034"></a><span class="lineno"> 4034</span>  <span class="keywordtype">size_t</span>& utf8_bytes_filled)</div>
|
||
<div class="line"><a name="l04035"></a><span class="lineno"> 4035</span>  {</div>
|
||
<div class="line"><a name="l04036"></a><span class="lineno"> 4036</span>  utf8_bytes_index = 0;</div>
|
||
<div class="line"><a name="l04037"></a><span class="lineno"> 4037</span>  </div>
|
||
<div class="line"><a name="l04038"></a><span class="lineno"> 4038</span>  <span class="keywordflow">if</span> (current_wchar == str.size())</div>
|
||
<div class="line"><a name="l04039"></a><span class="lineno"> 4039</span>  {</div>
|
||
<div class="line"><a name="l04040"></a><span class="lineno"> 4040</span>  utf8_bytes[0] = std::char_traits<char>::eof();</div>
|
||
<div class="line"><a name="l04041"></a><span class="lineno"> 4041</span>  utf8_bytes_filled = 1;</div>
|
||
<div class="line"><a name="l04042"></a><span class="lineno"> 4042</span>  }</div>
|
||
<div class="line"><a name="l04043"></a><span class="lineno"> 4043</span>  <span class="keywordflow">else</span></div>
|
||
<div class="line"><a name="l04044"></a><span class="lineno"> 4044</span>  {</div>
|
||
<div class="line"><a name="l04045"></a><span class="lineno"> 4045</span>  <span class="comment">// get the current character</span></div>
|
||
<div class="line"><a name="l04046"></a><span class="lineno"> 4046</span>  <span class="keyword">const</span> <span class="keyword">auto</span> wc = <span class="keyword">static_cast<</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">></span>(str[current_wchar++]);</div>
|
||
<div class="line"><a name="l04047"></a><span class="lineno"> 4047</span>  </div>
|
||
<div class="line"><a name="l04048"></a><span class="lineno"> 4048</span>  <span class="comment">// UTF-32 to UTF-8 encoding</span></div>
|
||
<div class="line"><a name="l04049"></a><span class="lineno"> 4049</span>  <span class="keywordflow">if</span> (wc < 0x80)</div>
|
||
<div class="line"><a name="l04050"></a><span class="lineno"> 4050</span>  {</div>
|
||
<div class="line"><a name="l04051"></a><span class="lineno"> 4051</span>  utf8_bytes[0] = <span class="keyword">static_cast<</span>std::char_traits<char>::int_type<span class="keyword">></span>(wc);</div>
|
||
<div class="line"><a name="l04052"></a><span class="lineno"> 4052</span>  utf8_bytes_filled = 1;</div>
|
||
<div class="line"><a name="l04053"></a><span class="lineno"> 4053</span>  }</div>
|
||
<div class="line"><a name="l04054"></a><span class="lineno"> 4054</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (wc <= 0x7FF)</div>
|
||
<div class="line"><a name="l04055"></a><span class="lineno"> 4055</span>  {</div>
|
||
<div class="line"><a name="l04056"></a><span class="lineno"> 4056</span>  utf8_bytes[0] = <span class="keyword">static_cast<</span>std::char_traits<char>::int_type<span class="keyword">></span>(0xC0u | ((wc >> 6u) & 0x1Fu));</div>
|
||
<div class="line"><a name="l04057"></a><span class="lineno"> 4057</span>  utf8_bytes[1] = <span class="keyword">static_cast<</span>std::char_traits<char>::int_type<span class="keyword">></span>(0x80u | (wc & 0x3Fu));</div>
|
||
<div class="line"><a name="l04058"></a><span class="lineno"> 4058</span>  utf8_bytes_filled = 2;</div>
|
||
<div class="line"><a name="l04059"></a><span class="lineno"> 4059</span>  }</div>
|
||
<div class="line"><a name="l04060"></a><span class="lineno"> 4060</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (wc <= 0xFFFF)</div>
|
||
<div class="line"><a name="l04061"></a><span class="lineno"> 4061</span>  {</div>
|
||
<div class="line"><a name="l04062"></a><span class="lineno"> 4062</span>  utf8_bytes[0] = <span class="keyword">static_cast<</span>std::char_traits<char>::int_type<span class="keyword">></span>(0xE0u | ((wc >> 12u) & 0x0Fu));</div>
|
||
<div class="line"><a name="l04063"></a><span class="lineno"> 4063</span>  utf8_bytes[1] = <span class="keyword">static_cast<</span>std::char_traits<char>::int_type<span class="keyword">></span>(0x80u | ((wc >> 6u) & 0x3Fu));</div>
|
||
<div class="line"><a name="l04064"></a><span class="lineno"> 4064</span>  utf8_bytes[2] = <span class="keyword">static_cast<</span>std::char_traits<char>::int_type<span class="keyword">></span>(0x80u | (wc & 0x3Fu));</div>
|
||
<div class="line"><a name="l04065"></a><span class="lineno"> 4065</span>  utf8_bytes_filled = 3;</div>
|
||
<div class="line"><a name="l04066"></a><span class="lineno"> 4066</span>  }</div>
|
||
<div class="line"><a name="l04067"></a><span class="lineno"> 4067</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (wc <= 0x10FFFF)</div>
|
||
<div class="line"><a name="l04068"></a><span class="lineno"> 4068</span>  {</div>
|
||
<div class="line"><a name="l04069"></a><span class="lineno"> 4069</span>  utf8_bytes[0] = <span class="keyword">static_cast<</span>std::char_traits<char>::int_type<span class="keyword">></span>(0xF0u | ((wc >> 18u) & 0x07u));</div>
|
||
<div class="line"><a name="l04070"></a><span class="lineno"> 4070</span>  utf8_bytes[1] = <span class="keyword">static_cast<</span>std::char_traits<char>::int_type<span class="keyword">></span>(0x80u | ((wc >> 12u) & 0x3Fu));</div>
|
||
<div class="line"><a name="l04071"></a><span class="lineno"> 4071</span>  utf8_bytes[2] = <span class="keyword">static_cast<</span>std::char_traits<char>::int_type<span class="keyword">></span>(0x80u | ((wc >> 6u) & 0x3Fu));</div>
|
||
<div class="line"><a name="l04072"></a><span class="lineno"> 4072</span>  utf8_bytes[3] = <span class="keyword">static_cast<</span>std::char_traits<char>::int_type<span class="keyword">></span>(0x80u | (wc & 0x3Fu));</div>
|
||
<div class="line"><a name="l04073"></a><span class="lineno"> 4073</span>  utf8_bytes_filled = 4;</div>
|
||
<div class="line"><a name="l04074"></a><span class="lineno"> 4074</span>  }</div>
|
||
<div class="line"><a name="l04075"></a><span class="lineno"> 4075</span>  <span class="keywordflow">else</span></div>
|
||
<div class="line"><a name="l04076"></a><span class="lineno"> 4076</span>  {</div>
|
||
<div class="line"><a name="l04077"></a><span class="lineno"> 4077</span>  <span class="comment">// unknown character</span></div>
|
||
<div class="line"><a name="l04078"></a><span class="lineno"> 4078</span>  utf8_bytes[0] = <span class="keyword">static_cast<</span>std::char_traits<char>::int_type<span class="keyword">></span>(wc);</div>
|
||
<div class="line"><a name="l04079"></a><span class="lineno"> 4079</span>  utf8_bytes_filled = 1;</div>
|
||
<div class="line"><a name="l04080"></a><span class="lineno"> 4080</span>  }</div>
|
||
<div class="line"><a name="l04081"></a><span class="lineno"> 4081</span>  }</div>
|
||
<div class="line"><a name="l04082"></a><span class="lineno"> 4082</span>  }</div>
|
||
<div class="line"><a name="l04083"></a><span class="lineno"> 4083</span> };</div>
|
||
<div class="line"><a name="l04084"></a><span class="lineno"> 4084</span>  </div>
|
||
<div class="line"><a name="l04085"></a><span class="lineno"> 4085</span> <span class="keyword">template</span><<span class="keyword">typename</span> W<span class="keywordtype">id</span>eStringType></div>
|
||
<div class="line"><a name="l04086"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1wide__string__input__helper_3_01WideStringType_00_012_01_4.html"> 4086</a></span> <span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1wide__string__input__helper.html">wide_string_input_helper</a><WideStringType, 2></div>
|
||
<div class="line"><a name="l04087"></a><span class="lineno"> 4087</span> {</div>
|
||
<div class="line"><a name="l04088"></a><span class="lineno"> 4088</span>  <span class="comment">// UTF-16</span></div>
|
||
<div class="line"><a name="l04089"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1wide__string__input__helper_3_01WideStringType_00_012_01_4.html#a7ede7749f186f1a6a46c08abb607fd5c"> 4089</a></span>  <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="structnlohmann_1_1detail_1_1wide__string__input__helper_3_01WideStringType_00_012_01_4.html#a7ede7749f186f1a6a46c08abb607fd5c">fill_buffer</a>(<span class="keyword">const</span> WideStringType& str,</div>
|
||
<div class="line"><a name="l04090"></a><span class="lineno"> 4090</span>  <span class="keywordtype">size_t</span>& current_wchar,</div>
|
||
<div class="line"><a name="l04091"></a><span class="lineno"> 4091</span>  std::array<std::char_traits<char>::int_type, 4>& utf8_bytes,</div>
|
||
<div class="line"><a name="l04092"></a><span class="lineno"> 4092</span>  <span class="keywordtype">size_t</span>& utf8_bytes_index,</div>
|
||
<div class="line"><a name="l04093"></a><span class="lineno"> 4093</span>  <span class="keywordtype">size_t</span>& utf8_bytes_filled)</div>
|
||
<div class="line"><a name="l04094"></a><span class="lineno"> 4094</span>  {</div>
|
||
<div class="line"><a name="l04095"></a><span class="lineno"> 4095</span>  utf8_bytes_index = 0;</div>
|
||
<div class="line"><a name="l04096"></a><span class="lineno"> 4096</span>  </div>
|
||
<div class="line"><a name="l04097"></a><span class="lineno"> 4097</span>  <span class="keywordflow">if</span> (current_wchar == str.size())</div>
|
||
<div class="line"><a name="l04098"></a><span class="lineno"> 4098</span>  {</div>
|
||
<div class="line"><a name="l04099"></a><span class="lineno"> 4099</span>  utf8_bytes[0] = std::char_traits<char>::eof();</div>
|
||
<div class="line"><a name="l04100"></a><span class="lineno"> 4100</span>  utf8_bytes_filled = 1;</div>
|
||
<div class="line"><a name="l04101"></a><span class="lineno"> 4101</span>  }</div>
|
||
<div class="line"><a name="l04102"></a><span class="lineno"> 4102</span>  <span class="keywordflow">else</span></div>
|
||
<div class="line"><a name="l04103"></a><span class="lineno"> 4103</span>  {</div>
|
||
<div class="line"><a name="l04104"></a><span class="lineno"> 4104</span>  <span class="comment">// get the current character</span></div>
|
||
<div class="line"><a name="l04105"></a><span class="lineno"> 4105</span>  <span class="keyword">const</span> <span class="keyword">auto</span> wc = <span class="keyword">static_cast<</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">></span>(str[current_wchar++]);</div>
|
||
<div class="line"><a name="l04106"></a><span class="lineno"> 4106</span>  </div>
|
||
<div class="line"><a name="l04107"></a><span class="lineno"> 4107</span>  <span class="comment">// UTF-16 to UTF-8 encoding</span></div>
|
||
<div class="line"><a name="l04108"></a><span class="lineno"> 4108</span>  <span class="keywordflow">if</span> (wc < 0x80)</div>
|
||
<div class="line"><a name="l04109"></a><span class="lineno"> 4109</span>  {</div>
|
||
<div class="line"><a name="l04110"></a><span class="lineno"> 4110</span>  utf8_bytes[0] = <span class="keyword">static_cast<</span>std::char_traits<char>::int_type<span class="keyword">></span>(wc);</div>
|
||
<div class="line"><a name="l04111"></a><span class="lineno"> 4111</span>  utf8_bytes_filled = 1;</div>
|
||
<div class="line"><a name="l04112"></a><span class="lineno"> 4112</span>  }</div>
|
||
<div class="line"><a name="l04113"></a><span class="lineno"> 4113</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (wc <= 0x7FF)</div>
|
||
<div class="line"><a name="l04114"></a><span class="lineno"> 4114</span>  {</div>
|
||
<div class="line"><a name="l04115"></a><span class="lineno"> 4115</span>  utf8_bytes[0] = <span class="keyword">static_cast<</span>std::char_traits<char>::int_type<span class="keyword">></span>(0xC0u | ((wc >> 6u)));</div>
|
||
<div class="line"><a name="l04116"></a><span class="lineno"> 4116</span>  utf8_bytes[1] = <span class="keyword">static_cast<</span>std::char_traits<char>::int_type<span class="keyword">></span>(0x80u | (wc & 0x3Fu));</div>
|
||
<div class="line"><a name="l04117"></a><span class="lineno"> 4117</span>  utf8_bytes_filled = 2;</div>
|
||
<div class="line"><a name="l04118"></a><span class="lineno"> 4118</span>  }</div>
|
||
<div class="line"><a name="l04119"></a><span class="lineno"> 4119</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (0xD800 > wc or wc >= 0xE000)</div>
|
||
<div class="line"><a name="l04120"></a><span class="lineno"> 4120</span>  {</div>
|
||
<div class="line"><a name="l04121"></a><span class="lineno"> 4121</span>  utf8_bytes[0] = <span class="keyword">static_cast<</span>std::char_traits<char>::int_type<span class="keyword">></span>(0xE0u | ((wc >> 12u)));</div>
|
||
<div class="line"><a name="l04122"></a><span class="lineno"> 4122</span>  utf8_bytes[1] = <span class="keyword">static_cast<</span>std::char_traits<char>::int_type<span class="keyword">></span>(0x80u | ((wc >> 6u) & 0x3Fu));</div>
|
||
<div class="line"><a name="l04123"></a><span class="lineno"> 4123</span>  utf8_bytes[2] = <span class="keyword">static_cast<</span>std::char_traits<char>::int_type<span class="keyword">></span>(0x80u | (wc & 0x3Fu));</div>
|
||
<div class="line"><a name="l04124"></a><span class="lineno"> 4124</span>  utf8_bytes_filled = 3;</div>
|
||
<div class="line"><a name="l04125"></a><span class="lineno"> 4125</span>  }</div>
|
||
<div class="line"><a name="l04126"></a><span class="lineno"> 4126</span>  <span class="keywordflow">else</span></div>
|
||
<div class="line"><a name="l04127"></a><span class="lineno"> 4127</span>  {</div>
|
||
<div class="line"><a name="l04128"></a><span class="lineno"> 4128</span>  <span class="keywordflow">if</span> (current_wchar < str.size())</div>
|
||
<div class="line"><a name="l04129"></a><span class="lineno"> 4129</span>  {</div>
|
||
<div class="line"><a name="l04130"></a><span class="lineno"> 4130</span>  <span class="keyword">const</span> <span class="keyword">auto</span> wc2 = <span class="keyword">static_cast<</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">></span>(str[current_wchar++]);</div>
|
||
<div class="line"><a name="l04131"></a><span class="lineno"> 4131</span>  <span class="keyword">const</span> <span class="keyword">auto</span> charcode = 0x10000u + (((wc & 0x3FFu) << 10u) | (wc2 & 0x3FFu));</div>
|
||
<div class="line"><a name="l04132"></a><span class="lineno"> 4132</span>  utf8_bytes[0] = <span class="keyword">static_cast<</span>std::char_traits<char>::int_type<span class="keyword">></span>(0xF0u | (charcode >> 18u));</div>
|
||
<div class="line"><a name="l04133"></a><span class="lineno"> 4133</span>  utf8_bytes[1] = <span class="keyword">static_cast<</span>std::char_traits<char>::int_type<span class="keyword">></span>(0x80u | ((charcode >> 12u) & 0x3Fu));</div>
|
||
<div class="line"><a name="l04134"></a><span class="lineno"> 4134</span>  utf8_bytes[2] = <span class="keyword">static_cast<</span>std::char_traits<char>::int_type<span class="keyword">></span>(0x80u | ((charcode >> 6u) & 0x3Fu));</div>
|
||
<div class="line"><a name="l04135"></a><span class="lineno"> 4135</span>  utf8_bytes[3] = <span class="keyword">static_cast<</span>std::char_traits<char>::int_type<span class="keyword">></span>(0x80u | (charcode & 0x3Fu));</div>
|
||
<div class="line"><a name="l04136"></a><span class="lineno"> 4136</span>  utf8_bytes_filled = 4;</div>
|
||
<div class="line"><a name="l04137"></a><span class="lineno"> 4137</span>  }</div>
|
||
<div class="line"><a name="l04138"></a><span class="lineno"> 4138</span>  <span class="keywordflow">else</span></div>
|
||
<div class="line"><a name="l04139"></a><span class="lineno"> 4139</span>  {</div>
|
||
<div class="line"><a name="l04140"></a><span class="lineno"> 4140</span>  <span class="comment">// unknown character</span></div>
|
||
<div class="line"><a name="l04141"></a><span class="lineno"> 4141</span>  ++current_wchar;</div>
|
||
<div class="line"><a name="l04142"></a><span class="lineno"> 4142</span>  utf8_bytes[0] = <span class="keyword">static_cast<</span>std::char_traits<char>::int_type<span class="keyword">></span>(wc);</div>
|
||
<div class="line"><a name="l04143"></a><span class="lineno"> 4143</span>  utf8_bytes_filled = 1;</div>
|
||
<div class="line"><a name="l04144"></a><span class="lineno"> 4144</span>  }</div>
|
||
<div class="line"><a name="l04145"></a><span class="lineno"> 4145</span>  }</div>
|
||
<div class="line"><a name="l04146"></a><span class="lineno"> 4146</span>  }</div>
|
||
<div class="line"><a name="l04147"></a><span class="lineno"> 4147</span>  }</div>
|
||
<div class="line"><a name="l04148"></a><span class="lineno"> 4148</span> };</div>
|
||
<div class="line"><a name="l04149"></a><span class="lineno"> 4149</span>  </div>
|
||
<div class="line"><a name="l04150"></a><span class="lineno"> 4150</span> <span class="keyword">template</span><<span class="keyword">typename</span> W<span class="keywordtype">id</span>eStringType></div>
|
||
<div class="line"><a name="l04151"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1wide__string__input__adapter.html"> 4151</a></span> <span class="keyword">class </span><a class="code" href="classnlohmann_1_1detail_1_1wide__string__input__adapter.html">wide_string_input_adapter</a> : <span class="keyword">public</span> <a class="code" href="structnlohmann_1_1detail_1_1input__adapter__protocol.html">input_adapter_protocol</a></div>
|
||
<div class="line"><a name="l04152"></a><span class="lineno"> 4152</span> {</div>
|
||
<div class="line"><a name="l04153"></a><span class="lineno"> 4153</span>  <span class="keyword">public</span>:</div>
|
||
<div class="line"><a name="l04154"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1wide__string__input__adapter.html#a85c8bddae20bc00d64dd7a2c87109357"> 4154</a></span>  <span class="keyword">explicit</span> <a class="code" href="classnlohmann_1_1detail_1_1wide__string__input__adapter.html#a85c8bddae20bc00d64dd7a2c87109357">wide_string_input_adapter</a>(<span class="keyword">const</span> WideStringType& w) noexcept</div>
|
||
<div class="line"><a name="l04155"></a><span class="lineno"> 4155</span>  : str(w)</div>
|
||
<div class="line"><a name="l04156"></a><span class="lineno"> 4156</span>  {}</div>
|
||
<div class="line"><a name="l04157"></a><span class="lineno"> 4157</span>  </div>
|
||
<div class="line"><a name="l04158"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1wide__string__input__adapter.html#abb62b34cf77e557ce5321b7f2490c3b0"> 4158</a></span>  std::char_traits<char>::int_type <a class="code" href="classnlohmann_1_1detail_1_1wide__string__input__adapter.html#abb62b34cf77e557ce5321b7f2490c3b0">get_character</a>() noexcept<span class="keyword"> override</span></div>
|
||
<div class="line"><a name="l04159"></a><span class="lineno"> 4159</span> <span class="keyword"> </span>{</div>
|
||
<div class="line"><a name="l04160"></a><span class="lineno"> 4160</span>  <span class="comment">// check if buffer needs to be filled</span></div>
|
||
<div class="line"><a name="l04161"></a><span class="lineno"> 4161</span>  <span class="keywordflow">if</span> (utf8_bytes_index == utf8_bytes_filled)</div>
|
||
<div class="line"><a name="l04162"></a><span class="lineno"> 4162</span>  {</div>
|
||
<div class="line"><a name="l04163"></a><span class="lineno"> 4163</span>  fill_buffer<sizeof(typename WideStringType::value_type)>();</div>
|
||
<div class="line"><a name="l04164"></a><span class="lineno"> 4164</span>  </div>
|
||
<div class="line"><a name="l04165"></a><span class="lineno"> 4165</span>  assert(utf8_bytes_filled > 0);</div>
|
||
<div class="line"><a name="l04166"></a><span class="lineno"> 4166</span>  assert(utf8_bytes_index == 0);</div>
|
||
<div class="line"><a name="l04167"></a><span class="lineno"> 4167</span>  }</div>
|
||
<div class="line"><a name="l04168"></a><span class="lineno"> 4168</span>  </div>
|
||
<div class="line"><a name="l04169"></a><span class="lineno"> 4169</span>  <span class="comment">// use buffer</span></div>
|
||
<div class="line"><a name="l04170"></a><span class="lineno"> 4170</span>  assert(utf8_bytes_filled > 0);</div>
|
||
<div class="line"><a name="l04171"></a><span class="lineno"> 4171</span>  assert(utf8_bytes_index < utf8_bytes_filled);</div>
|
||
<div class="line"><a name="l04172"></a><span class="lineno"> 4172</span>  <span class="keywordflow">return</span> utf8_bytes[utf8_bytes_index++];</div>
|
||
<div class="line"><a name="l04173"></a><span class="lineno"> 4173</span>  }</div>
|
||
<div class="line"><a name="l04174"></a><span class="lineno"> 4174</span>  </div>
|
||
<div class="line"><a name="l04175"></a><span class="lineno"> 4175</span>  <span class="keyword">private</span>:</div>
|
||
<div class="line"><a name="l04176"></a><span class="lineno"> 4176</span>  <span class="keyword">template</span><<span class="keywordtype">size_t</span> T></div>
|
||
<div class="line"><a name="l04177"></a><span class="lineno"> 4177</span>  <span class="keywordtype">void</span> fill_buffer()</div>
|
||
<div class="line"><a name="l04178"></a><span class="lineno"> 4178</span>  {</div>
|
||
<div class="line"><a name="l04179"></a><span class="lineno"> 4179</span>  <a class="code" href="structnlohmann_1_1detail_1_1wide__string__input__helper.html#ae82d79118fa319a97e4a40568186a922">wide_string_input_helper<WideStringType, T>::fill_buffer</a>(str, current_wchar, utf8_bytes, utf8_bytes_index, utf8_bytes_filled);</div>
|
||
<div class="line"><a name="l04180"></a><span class="lineno"> 4180</span>  }</div>
|
||
<div class="line"><a name="l04181"></a><span class="lineno"> 4181</span>  </div>
|
||
<div class="line"><a name="l04183"></a><span class="lineno"> 4183</span>  <span class="keyword">const</span> WideStringType& str;</div>
|
||
<div class="line"><a name="l04184"></a><span class="lineno"> 4184</span>  </div>
|
||
<div class="line"><a name="l04186"></a><span class="lineno"> 4186</span>  std::size_t current_wchar = 0;</div>
|
||
<div class="line"><a name="l04187"></a><span class="lineno"> 4187</span>  </div>
|
||
<div class="line"><a name="l04189"></a><span class="lineno"> 4189</span>  std::array<std::char_traits<char>::int_type, 4> utf8_bytes = {{0, 0, 0, 0}};</div>
|
||
<div class="line"><a name="l04190"></a><span class="lineno"> 4190</span>  </div>
|
||
<div class="line"><a name="l04192"></a><span class="lineno"> 4192</span>  std::size_t utf8_bytes_index = 0;</div>
|
||
<div class="line"><a name="l04194"></a><span class="lineno"> 4194</span>  std::size_t utf8_bytes_filled = 0;</div>
|
||
<div class="line"><a name="l04195"></a><span class="lineno"> 4195</span> };</div>
|
||
<div class="line"><a name="l04196"></a><span class="lineno"> 4196</span>  </div>
|
||
<div class="line"><a name="l04197"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1input__adapter.html"> 4197</a></span> <span class="keyword">class </span><a class="code" href="classnlohmann_1_1detail_1_1input__adapter.html">input_adapter</a></div>
|
||
<div class="line"><a name="l04198"></a><span class="lineno"> 4198</span> {</div>
|
||
<div class="line"><a name="l04199"></a><span class="lineno"> 4199</span>  <span class="keyword">public</span>:</div>
|
||
<div class="line"><a name="l04200"></a><span class="lineno"> 4200</span>  <span class="comment">// native support</span></div>
|
||
<div class="line"><a name="l04201"></a><span class="lineno"> 4201</span>  <a class="code" href="json_8hpp.html#a5338981b5ad9027c9e54b1c5597f4344">JSON_HEDLEY_NON_NULL</a>(2)</div>
|
||
<div class="line"><a name="l04202"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1input__adapter.html#a19fb8c28f37b23099a4353acf0a9a2f1"> 4202</a></span>  <a class="code" href="classnlohmann_1_1detail_1_1input__adapter.html">input_adapter</a>(<a class="code" href="namespacestd.html">std</a>::FILE* file)</div>
|
||
<div class="line"><a name="l04203"></a><span class="lineno"> 4203</span>  : ia(<a class="code" href="namespacestd.html">std</a>::make_shared<<a class="code" href="classnlohmann_1_1detail_1_1file__input__adapter.html">file_input_adapter</a>>(file)) {}</div>
|
||
<div class="line"><a name="l04205"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1input__adapter.html#ae89f11268d4724b3080473f7218abe86"> 4205</a></span>  <a class="code" href="classnlohmann_1_1detail_1_1input__adapter.html#ae89f11268d4724b3080473f7218abe86">input_adapter</a>(std::istream& i)</div>
|
||
<div class="line"><a name="l04206"></a><span class="lineno"> 4206</span>  : ia(<a class="code" href="namespacestd.html">std</a>::make_shared<<a class="code" href="classnlohmann_1_1detail_1_1input__stream__adapter.html">input_stream_adapter</a>>(i)) {}</div>
|
||
<div class="line"><a name="l04207"></a><span class="lineno"> 4207</span>  </div>
|
||
<div class="line"><a name="l04209"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1input__adapter.html#af002dd2e53ac0855a03cb68d0ce626b2"> 4209</a></span>  <a class="code" href="classnlohmann_1_1detail_1_1input__adapter.html#af002dd2e53ac0855a03cb68d0ce626b2">input_adapter</a>(std::istream&& i)</div>
|
||
<div class="line"><a name="l04210"></a><span class="lineno"> 4210</span>  : ia(<a class="code" href="namespacestd.html">std</a>::make_shared<<a class="code" href="classnlohmann_1_1detail_1_1input__stream__adapter.html">input_stream_adapter</a>>(i)) {}</div>
|
||
<div class="line"><a name="l04211"></a><span class="lineno"> 4211</span>  </div>
|
||
<div class="line"><a name="l04212"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1input__adapter.html#a32f5ddd06562edce43ee86f5b5c2031b"> 4212</a></span>  <a class="code" href="classnlohmann_1_1detail_1_1input__adapter.html#a32f5ddd06562edce43ee86f5b5c2031b">input_adapter</a>(<span class="keyword">const</span> std::wstring& ws)</div>
|
||
<div class="line"><a name="l04213"></a><span class="lineno"> 4213</span>  : ia(<a class="code" href="namespacestd.html">std</a>::make_shared<<a class="code" href="classnlohmann_1_1detail_1_1wide__string__input__adapter.html">wide_string_input_adapter</a><<a class="code" href="namespacestd.html">std</a>::wstring>>(ws)) {}</div>
|
||
<div class="line"><a name="l04214"></a><span class="lineno"> 4214</span>  </div>
|
||
<div class="line"><a name="l04215"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1input__adapter.html#a58163eaa485b17dd878d3c782efc1e43"> 4215</a></span>  <a class="code" href="classnlohmann_1_1detail_1_1input__adapter.html#a58163eaa485b17dd878d3c782efc1e43">input_adapter</a>(<span class="keyword">const</span> std::u16string& ws)</div>
|
||
<div class="line"><a name="l04216"></a><span class="lineno"> 4216</span>  : ia(<a class="code" href="namespacestd.html">std</a>::make_shared<<a class="code" href="classnlohmann_1_1detail_1_1wide__string__input__adapter.html">wide_string_input_adapter</a><<a class="code" href="namespacestd.html">std</a>::u16string>>(ws)) {}</div>
|
||
<div class="line"><a name="l04217"></a><span class="lineno"> 4217</span>  </div>
|
||
<div class="line"><a name="l04218"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1input__adapter.html#abe0015ae09e855f502620315b9dcc3db"> 4218</a></span>  <a class="code" href="classnlohmann_1_1detail_1_1input__adapter.html#abe0015ae09e855f502620315b9dcc3db">input_adapter</a>(<span class="keyword">const</span> std::u32string& ws)</div>
|
||
<div class="line"><a name="l04219"></a><span class="lineno"> 4219</span>  : ia(<a class="code" href="namespacestd.html">std</a>::make_shared<<a class="code" href="classnlohmann_1_1detail_1_1wide__string__input__adapter.html">wide_string_input_adapter</a><<a class="code" href="namespacestd.html">std</a>::u32string>>(ws)) {}</div>
|
||
<div class="line"><a name="l04220"></a><span class="lineno"> 4220</span>  </div>
|
||
<div class="line"><a name="l04222"></a><span class="lineno"> 4222</span>  <span class="keyword">template</span><<span class="keyword">typename</span> CharT,</div>
|
||
<div class="line"><a name="l04223"></a><span class="lineno"> 4223</span>  <span class="keyword">typename</span> std::enable_if<</div>
|
||
<div class="line"><a name="l04224"></a><span class="lineno"> 4224</span>  std::is_pointer<CharT>::value and</div>
|
||
<div class="line"><a name="l04225"></a><span class="lineno"> 4225</span>  std::is_integral<typename std::remove_pointer<CharT>::type>::value and</div>
|
||
<div class="line"><a name="l04226"></a><span class="lineno"> 4226</span>  <span class="keyword">sizeof</span>(<span class="keyword">typename</span> std::remove_pointer<CharT>::type) == 1,</div>
|
||
<div class="line"><a name="l04227"></a><span class="lineno"> 4227</span>  <span class="keywordtype">int</span>>::type = 0></div>
|
||
<div class="line"><a name="l04228"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1input__adapter.html#a37816622d79ab4a1a76f4d7e872b65e1"> 4228</a></span>  <a class="code" href="classnlohmann_1_1detail_1_1input__adapter.html#a37816622d79ab4a1a76f4d7e872b65e1">input_adapter</a>(CharT b, std::size_t l)</div>
|
||
<div class="line"><a name="l04229"></a><span class="lineno"> 4229</span>  : ia(std::make_shared<input_buffer_adapter>(<span class="keyword">reinterpret_cast<</span><span class="keyword">const </span><span class="keywordtype">char</span>*<span class="keyword">></span>(b), l)) {}</div>
|
||
<div class="line"><a name="l04230"></a><span class="lineno"> 4230</span>  </div>
|
||
<div class="line"><a name="l04231"></a><span class="lineno"> 4231</span>  <span class="comment">// derived support</span></div>
|
||
<div class="line"><a name="l04232"></a><span class="lineno"> 4232</span>  </div>
|
||
<div class="line"><a name="l04234"></a><span class="lineno"> 4234</span>  <span class="keyword">template</span><<span class="keyword">typename</span> CharT,</div>
|
||
<div class="line"><a name="l04235"></a><span class="lineno"> 4235</span>  <span class="keyword">typename</span> std::enable_if<</div>
|
||
<div class="line"><a name="l04236"></a><span class="lineno"> 4236</span>  std::is_pointer<CharT>::value and</div>
|
||
<div class="line"><a name="l04237"></a><span class="lineno"> 4237</span>  std::is_integral<typename std::remove_pointer<CharT>::type>::value and</div>
|
||
<div class="line"><a name="l04238"></a><span class="lineno"> 4238</span>  <span class="keyword">sizeof</span>(<span class="keyword">typename</span> std::remove_pointer<CharT>::type) == 1,</div>
|
||
<div class="line"><a name="l04239"></a><span class="lineno"> 4239</span>  <span class="keywordtype">int</span>>::type = 0></div>
|
||
<div class="line"><a name="l04240"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1input__adapter.html#a86f035d9c4319360014b922b5e433ced"> 4240</a></span>  <a class="code" href="classnlohmann_1_1detail_1_1input__adapter.html#a86f035d9c4319360014b922b5e433ced">input_adapter</a>(CharT b)</div>
|
||
<div class="line"><a name="l04241"></a><span class="lineno"> 4241</span>  : <a class="code" href="classnlohmann_1_1detail_1_1input__adapter.html#a19fb8c28f37b23099a4353acf0a9a2f1">input_adapter</a>(<span class="keyword">reinterpret_cast<</span><span class="keyword">const </span><span class="keywordtype">char</span>*<span class="keyword">></span>(b),</div>
|
||
<div class="line"><a name="l04242"></a><span class="lineno"> 4242</span>  std::strlen(<span class="keyword">reinterpret_cast<</span><span class="keyword">const </span><span class="keywordtype">char</span>*<span class="keyword">></span>(b))) {}</div>
|
||
<div class="line"><a name="l04243"></a><span class="lineno"> 4243</span>  </div>
|
||
<div class="line"><a name="l04245"></a><span class="lineno"> 4245</span>  <span class="keyword">template</span><<span class="keyword">class </span>IteratorType,</div>
|
||
<div class="line"><a name="l04246"></a><span class="lineno"> 4246</span>  <span class="keyword">typename</span> std::enable_if<</div>
|
||
<div class="line"><a name="l04247"></a><span class="lineno"> 4247</span>  std::is_same<typename iterator_traits<IteratorType>::iterator_category, std::random_access_iterator_tag>::value,</div>
|
||
<div class="line"><a name="l04248"></a><span class="lineno"> 4248</span>  <span class="keywordtype">int</span>>::type = 0></div>
|
||
<div class="line"><a name="l04249"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1input__adapter.html#ad6824b0f792691f75186c527fa31a6b4"> 4249</a></span>  <a class="code" href="classnlohmann_1_1detail_1_1input__adapter.html#ad6824b0f792691f75186c527fa31a6b4">input_adapter</a>(IteratorType first, IteratorType last)</div>
|
||
<div class="line"><a name="l04250"></a><span class="lineno"> 4250</span>  {</div>
|
||
<div class="line"><a name="l04251"></a><span class="lineno"> 4251</span> <span class="preprocessor">#ifndef NDEBUG</span></div>
|
||
<div class="line"><a name="l04252"></a><span class="lineno"> 4252</span>  <span class="comment">// assertion to check that the iterator range is indeed contiguous,</span></div>
|
||
<div class="line"><a name="l04253"></a><span class="lineno"> 4253</span>  <span class="comment">// see http://stackoverflow.com/a/35008842/266378 for more discussion</span></div>
|
||
<div class="line"><a name="l04254"></a><span class="lineno"> 4254</span>  <span class="keyword">const</span> <span class="keyword">auto</span> is_contiguous = std::accumulate(</div>
|
||
<div class="line"><a name="l04255"></a><span class="lineno"> 4255</span>  first, last, std::pair<bool, int>(<span class="keyword">true</span>, 0),</div>
|
||
<div class="line"><a name="l04256"></a><span class="lineno"> 4256</span>  [&first](std::pair<bool, int> res, decltype(*first) val)</div>
|
||
<div class="line"><a name="l04257"></a><span class="lineno"> 4257</span>  {</div>
|
||
<div class="line"><a name="l04258"></a><span class="lineno"> 4258</span>  res.first &= (val == *(std::next(std::addressof(*first), res.second++)));</div>
|
||
<div class="line"><a name="l04259"></a><span class="lineno"> 4259</span>  <span class="keywordflow">return</span> res;</div>
|
||
<div class="line"><a name="l04260"></a><span class="lineno"> 4260</span>  }).first;</div>
|
||
<div class="line"><a name="l04261"></a><span class="lineno"> 4261</span>  assert(is_contiguous);</div>
|
||
<div class="line"><a name="l04262"></a><span class="lineno"> 4262</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l04263"></a><span class="lineno"> 4263</span>  </div>
|
||
<div class="line"><a name="l04264"></a><span class="lineno"> 4264</span>  <span class="comment">// assertion to check that each element is 1 byte long</span></div>
|
||
<div class="line"><a name="l04265"></a><span class="lineno"> 4265</span>  static_assert(</div>
|
||
<div class="line"><a name="l04266"></a><span class="lineno"> 4266</span>  <span class="keyword">sizeof</span>(<span class="keyword">typename</span> <a class="code" href="structnlohmann_1_1detail_1_1iterator__traits.html">iterator_traits<IteratorType>::value_type</a>) == 1,</div>
|
||
<div class="line"><a name="l04267"></a><span class="lineno"> 4267</span>  <span class="stringliteral">"each element in the iterator range must have the size of 1 byte"</span>);</div>
|
||
<div class="line"><a name="l04268"></a><span class="lineno"> 4268</span>  </div>
|
||
<div class="line"><a name="l04269"></a><span class="lineno"> 4269</span>  <span class="keyword">const</span> <span class="keyword">auto</span> len = <span class="keyword">static_cast<</span><span class="keywordtype">size_t</span><span class="keyword">></span>(std::distance(first, last));</div>
|
||
<div class="line"><a name="l04270"></a><span class="lineno"> 4270</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a355f2770653ff7bdd5c74b204b5a3ad0">JSON_HEDLEY_LIKELY</a>(len > 0))</div>
|
||
<div class="line"><a name="l04271"></a><span class="lineno"> 4271</span>  {</div>
|
||
<div class="line"><a name="l04272"></a><span class="lineno"> 4272</span>  <span class="comment">// there is at least one element: use the address of first</span></div>
|
||
<div class="line"><a name="l04273"></a><span class="lineno"> 4273</span>  ia = std::make_shared<input_buffer_adapter>(<span class="keyword">reinterpret_cast<</span><span class="keyword">const </span><span class="keywordtype">char</span>*<span class="keyword">></span>(&(*first)), len);</div>
|
||
<div class="line"><a name="l04274"></a><span class="lineno"> 4274</span>  }</div>
|
||
<div class="line"><a name="l04275"></a><span class="lineno"> 4275</span>  <span class="keywordflow">else</span></div>
|
||
<div class="line"><a name="l04276"></a><span class="lineno"> 4276</span>  {</div>
|
||
<div class="line"><a name="l04277"></a><span class="lineno"> 4277</span>  <span class="comment">// the address of first cannot be used: use nullptr</span></div>
|
||
<div class="line"><a name="l04278"></a><span class="lineno"> 4278</span>  ia = std::make_shared<input_buffer_adapter>(<span class="keyword">nullptr</span>, len);</div>
|
||
<div class="line"><a name="l04279"></a><span class="lineno"> 4279</span>  }</div>
|
||
<div class="line"><a name="l04280"></a><span class="lineno"> 4280</span>  }</div>
|
||
<div class="line"><a name="l04281"></a><span class="lineno"> 4281</span>  </div>
|
||
<div class="line"><a name="l04283"></a><span class="lineno"> 4283</span>  <span class="keyword">template</span><<span class="keyword">class</span> T, std::<span class="keywordtype">size_t</span> N></div>
|
||
<div class="line"><a name="l04284"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1input__adapter.html#aa2392138bf8307df1994dc7eb22d51ce"> 4284</a></span>  <a class="code" href="classnlohmann_1_1detail_1_1input__adapter.html#aa2392138bf8307df1994dc7eb22d51ce">input_adapter</a>(T (&array)[N])</div>
|
||
<div class="line"><a name="l04285"></a><span class="lineno"> 4285</span>  : <a class="code" href="classnlohmann_1_1detail_1_1input__adapter.html">input_adapter</a>(<a class="code" href="namespacestd.html">std</a>::begin(<a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">array</a>), <a class="code" href="namespacestd.html">std</a>::end(<a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">array</a>)) {}</div>
|
||
<div class="line"><a name="l04286"></a><span class="lineno"> 4286</span>  </div>
|
||
<div class="line"><a name="l04288"></a><span class="lineno"> 4288</span>  <span class="keyword">template</span><<span class="keyword">class </span>ContiguousContainer, <span class="keyword">typename</span></div>
|
||
<div class="line"><a name="l04289"></a><span class="lineno"> 4289</span>  std::enable_if<not std::is_pointer<ContiguousContainer>::value and</div>
|
||
<div class="line"><a name="l04290"></a><span class="lineno"> 4290</span>  std::is_base_of<std::random_access_iterator_tag, typename iterator_traits<decltype(std::begin(std::declval<ContiguousContainer const>()))>::iterator_category>::value,</div>
|
||
<div class="line"><a name="l04291"></a><span class="lineno"> 4291</span>  <span class="keywordtype">int</span>>::type = 0></div>
|
||
<div class="line"><a name="l04292"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1input__adapter.html#a887307cfa15a418470b3c34088fc8352"> 4292</a></span>  <a class="code" href="classnlohmann_1_1detail_1_1input__adapter.html#a887307cfa15a418470b3c34088fc8352">input_adapter</a>(<span class="keyword">const</span> ContiguousContainer& c)</div>
|
||
<div class="line"><a name="l04293"></a><span class="lineno"> 4293</span>  : <a class="code" href="classnlohmann_1_1detail_1_1input__adapter.html">input_adapter</a>(<a class="code" href="namespacestd.html">std</a>::begin(c), <a class="code" href="namespacestd.html">std</a>::end(c)) {}</div>
|
||
<div class="line"><a name="l04294"></a><span class="lineno"> 4294</span>  </div>
|
||
<div class="line"><a name="l04295"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1input__adapter.html#a4ef04b9490247fc38f3d1c2a9e18789b"> 4295</a></span>  <span class="keyword">operator</span> <a class="code" href="namespacenlohmann_1_1detail.html#ae132f8cd5bb24c5e9b40ad0eafedf1c2">input_adapter_t</a>()</div>
|
||
<div class="line"><a name="l04296"></a><span class="lineno"> 4296</span>  {</div>
|
||
<div class="line"><a name="l04297"></a><span class="lineno"> 4297</span>  <span class="keywordflow">return</span> ia;</div>
|
||
<div class="line"><a name="l04298"></a><span class="lineno"> 4298</span>  }</div>
|
||
<div class="line"><a name="l04299"></a><span class="lineno"> 4299</span>  </div>
|
||
<div class="line"><a name="l04300"></a><span class="lineno"> 4300</span>  <span class="keyword">private</span>:</div>
|
||
<div class="line"><a name="l04302"></a><span class="lineno"> 4302</span>  <a class="code" href="namespacenlohmann_1_1detail.html#ae132f8cd5bb24c5e9b40ad0eafedf1c2">input_adapter_t</a> ia = <span class="keyword">nullptr</span>;</div>
|
||
<div class="line"><a name="l04303"></a><span class="lineno"> 4303</span> };</div>
|
||
<div class="line"><a name="l04304"></a><span class="lineno"> 4304</span> } <span class="comment">// namespace detail</span></div>
|
||
<div class="line"><a name="l04305"></a><span class="lineno"> 4305</span> } <span class="comment">// namespace nlohmann</span></div>
|
||
<div class="line"><a name="l04306"></a><span class="lineno"> 4306</span>  </div>
|
||
<div class="line"><a name="l04307"></a><span class="lineno"> 4307</span> <span class="comment">// #include <nlohmann/detail/input/json_sax.hpp></span></div>
|
||
<div class="line"><a name="l04308"></a><span class="lineno"> 4308</span>  </div>
|
||
<div class="line"><a name="l04309"></a><span class="lineno"> 4309</span>  </div>
|
||
<div class="line"><a name="l04310"></a><span class="lineno"> 4310</span> <span class="preprocessor">#include <cassert></span> <span class="comment">// assert</span></div>
|
||
<div class="line"><a name="l04311"></a><span class="lineno"> 4311</span> <span class="preprocessor">#include <cstddef></span></div>
|
||
<div class="line"><a name="l04312"></a><span class="lineno"> 4312</span> <span class="preprocessor">#include <string></span> <span class="comment">// string</span></div>
|
||
<div class="line"><a name="l04313"></a><span class="lineno"> 4313</span> <span class="preprocessor">#include <utility></span> <span class="comment">// move</span></div>
|
||
<div class="line"><a name="l04314"></a><span class="lineno"> 4314</span> <span class="preprocessor">#include <vector></span> <span class="comment">// vector</span></div>
|
||
<div class="line"><a name="l04315"></a><span class="lineno"> 4315</span>  </div>
|
||
<div class="line"><a name="l04316"></a><span class="lineno"> 4316</span> <span class="comment">// #include <nlohmann/detail/exceptions.hpp></span></div>
|
||
<div class="line"><a name="l04317"></a><span class="lineno"> 4317</span>  </div>
|
||
<div class="line"><a name="l04318"></a><span class="lineno"> 4318</span> <span class="comment">// #include <nlohmann/detail/macro_scope.hpp></span></div>
|
||
<div class="line"><a name="l04319"></a><span class="lineno"> 4319</span>  </div>
|
||
<div class="line"><a name="l04320"></a><span class="lineno"> 4320</span>  </div>
|
||
<div class="line"><a name="l04321"></a><span class="lineno"> 4321</span> <span class="keyword">namespace </span><a class="code" href="namespacenlohmann.html">nlohmann</a></div>
|
||
<div class="line"><a name="l04322"></a><span class="lineno"> 4322</span> {</div>
|
||
<div class="line"><a name="l04323"></a><span class="lineno"> 4323</span>  </div>
|
||
<div class="line"><a name="l04332"></a><span class="lineno"> 4332</span> <span class="keyword">template</span><<span class="keyword">typename</span> BasicJsonType></div>
|
||
<div class="line"><a name="l04333"></a><span class="lineno"><a class="line" href="structnlohmann_1_1json__sax.html"> 4333</a></span> <span class="keyword">struct </span><a class="code" href="structnlohmann_1_1json__sax.html">json_sax</a></div>
|
||
<div class="line"><a name="l04334"></a><span class="lineno"> 4334</span> {</div>
|
||
<div class="line"><a name="l04336"></a><span class="lineno"><a class="line" href="structnlohmann_1_1json__sax.html#a0cef30121f02b7fee85e9708148ea0aa"> 4336</a></span>  <span class="keyword">using</span> <a class="code" href="structnlohmann_1_1json__sax.html#a0cef30121f02b7fee85e9708148ea0aa">number_integer_t</a> = <span class="keyword">typename</span> BasicJsonType::number_integer_t;</div>
|
||
<div class="line"><a name="l04338"></a><span class="lineno"><a class="line" href="structnlohmann_1_1json__sax.html#a32028cc056ae0f43aaae331cdbbbf856"> 4338</a></span>  <span class="keyword">using</span> <a class="code" href="structnlohmann_1_1json__sax.html#a32028cc056ae0f43aaae331cdbbbf856">number_unsigned_t</a> = <span class="keyword">typename</span> BasicJsonType::number_unsigned_t;</div>
|
||
<div class="line"><a name="l04340"></a><span class="lineno"><a class="line" href="structnlohmann_1_1json__sax.html#a390c209bffd8c4800c8f3076dc465a20"> 4340</a></span>  <span class="keyword">using</span> <a class="code" href="structnlohmann_1_1json__sax.html#a390c209bffd8c4800c8f3076dc465a20">number_float_t</a> = <span class="keyword">typename</span> BasicJsonType::number_float_t;</div>
|
||
<div class="line"><a name="l04342"></a><span class="lineno"><a class="line" href="structnlohmann_1_1json__sax.html#ae01977a9f3c5b3667b7a2929ed91061e"> 4342</a></span>  <span class="keyword">using</span> <a class="code" href="structnlohmann_1_1json__sax.html#ae01977a9f3c5b3667b7a2929ed91061e">string_t</a> = <span class="keyword">typename</span> BasicJsonType::string_t;</div>
|
||
<div class="line"><a name="l04343"></a><span class="lineno"> 4343</span>  </div>
|
||
<div class="line"><a name="l04348"></a><span class="lineno"> 4348</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <span class="keyword">null</span>() = 0;</div>
|
||
<div class="line"><a name="l04349"></a><span class="lineno"> 4349</span>  </div>
|
||
<div class="line"><a name="l04355"></a><span class="lineno"> 4355</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="structnlohmann_1_1json__sax.html#a82ed080814fa656191a537284bb0c575">boolean</a>(<span class="keywordtype">bool</span> val) = 0;</div>
|
||
<div class="line"><a name="l04356"></a><span class="lineno"> 4356</span>  </div>
|
||
<div class="line"><a name="l04362"></a><span class="lineno"> 4362</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="structnlohmann_1_1json__sax.html#affa7a78b8e9cc9cc3ac99927143142a5">number_integer</a>(<a class="code" href="structnlohmann_1_1json__sax.html#a0cef30121f02b7fee85e9708148ea0aa">number_integer_t</a> val) = 0;</div>
|
||
<div class="line"><a name="l04363"></a><span class="lineno"> 4363</span>  </div>
|
||
<div class="line"><a name="l04369"></a><span class="lineno"> 4369</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="structnlohmann_1_1json__sax.html#ad9b253083e0509923ba195136f49face">number_unsigned</a>(<a class="code" href="structnlohmann_1_1json__sax.html#a32028cc056ae0f43aaae331cdbbbf856">number_unsigned_t</a> val) = 0;</div>
|
||
<div class="line"><a name="l04370"></a><span class="lineno"> 4370</span>  </div>
|
||
<div class="line"><a name="l04377"></a><span class="lineno"> 4377</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="structnlohmann_1_1json__sax.html#ae7c31614e8a82164d2d7f8dbf4671b25">number_float</a>(<a class="code" href="structnlohmann_1_1json__sax.html#a390c209bffd8c4800c8f3076dc465a20">number_float_t</a> val, <span class="keyword">const</span> <a class="code" href="structnlohmann_1_1json__sax.html#ae01977a9f3c5b3667b7a2929ed91061e">string_t</a>& s) = 0;</div>
|
||
<div class="line"><a name="l04378"></a><span class="lineno"> 4378</span>  </div>
|
||
<div class="line"><a name="l04385"></a><span class="lineno"> 4385</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="structnlohmann_1_1json__sax.html#a07eab82f6c82d606787eee9ad73d2bda">string</a>(<a class="code" href="structnlohmann_1_1json__sax.html#ae01977a9f3c5b3667b7a2929ed91061e">string_t</a>& val) = 0;</div>
|
||
<div class="line"><a name="l04386"></a><span class="lineno"> 4386</span>  </div>
|
||
<div class="line"><a name="l04393"></a><span class="lineno"> 4393</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="structnlohmann_1_1json__sax.html#a0671528b0debb5a348169d61f0382a0f">start_object</a>(std::size_t elements) = 0;</div>
|
||
<div class="line"><a name="l04394"></a><span class="lineno"> 4394</span>  </div>
|
||
<div class="line"><a name="l04401"></a><span class="lineno"> 4401</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="structnlohmann_1_1json__sax.html#a2e0c7ecd80b18d18a8cc76f71cfc2028">key</a>(<a class="code" href="structnlohmann_1_1json__sax.html#ae01977a9f3c5b3667b7a2929ed91061e">string_t</a>& val) = 0;</div>
|
||
<div class="line"><a name="l04402"></a><span class="lineno"> 4402</span>  </div>
|
||
<div class="line"><a name="l04407"></a><span class="lineno"> 4407</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="structnlohmann_1_1json__sax.html#ad0c722d53ff97be700ccf6a9468bd456">end_object</a>() = 0;</div>
|
||
<div class="line"><a name="l04408"></a><span class="lineno"> 4408</span>  </div>
|
||
<div class="line"><a name="l04415"></a><span class="lineno"> 4415</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="structnlohmann_1_1json__sax.html#a5c53878cf08d463eb4e7ca0270532572">start_array</a>(std::size_t elements) = 0;</div>
|
||
<div class="line"><a name="l04416"></a><span class="lineno"> 4416</span>  </div>
|
||
<div class="line"><a name="l04421"></a><span class="lineno"> 4421</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="structnlohmann_1_1json__sax.html#a235ee975617f28e6a996d1e36a282312">end_array</a>() = 0;</div>
|
||
<div class="line"><a name="l04422"></a><span class="lineno"> 4422</span>  </div>
|
||
<div class="line"><a name="l04430"></a><span class="lineno"> 4430</span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="structnlohmann_1_1json__sax.html#a60287e3bd85f489e04c83f7e3b76e613">parse_error</a>(std::size_t position,</div>
|
||
<div class="line"><a name="l04431"></a><span class="lineno"> 4431</span>  <span class="keyword">const</span> std::string& last_token,</div>
|
||
<div class="line"><a name="l04432"></a><span class="lineno"> 4432</span>  <span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1exception.html">detail::exception</a>& ex) = 0;</div>
|
||
<div class="line"><a name="l04433"></a><span class="lineno"> 4433</span>  </div>
|
||
<div class="line"><a name="l04434"></a><span class="lineno"> 4434</span>  <span class="keyword">virtual</span> <a class="code" href="structnlohmann_1_1json__sax.html#af31bacfa81aa7818d8639d1da65c8eb5">~json_sax</a>() = <span class="keywordflow">default</span>;</div>
|
||
<div class="line"><a name="l04435"></a><span class="lineno"> 4435</span> };</div>
|
||
<div class="line"><a name="l04436"></a><span class="lineno"> 4436</span>  </div>
|
||
<div class="line"><a name="l04437"></a><span class="lineno"> 4437</span>  </div>
|
||
<div class="line"><a name="l04438"></a><span class="lineno"> 4438</span> <span class="keyword">namespace </span>detail</div>
|
||
<div class="line"><a name="l04439"></a><span class="lineno"> 4439</span> {</div>
|
||
<div class="line"><a name="l04453"></a><span class="lineno"> 4453</span> <span class="keyword">template</span><<span class="keyword">typename</span> BasicJsonType></div>
|
||
<div class="line"><a name="l04454"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html"> 4454</a></span> <span class="keyword">class </span><a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html">json_sax_dom_parser</a></div>
|
||
<div class="line"><a name="l04455"></a><span class="lineno"> 4455</span> {</div>
|
||
<div class="line"><a name="l04456"></a><span class="lineno"> 4456</span>  <span class="keyword">public</span>:</div>
|
||
<div class="line"><a name="l04457"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#a3d5cd67d179aa7422ce90e54984a441e"> 4457</a></span>  <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#a3d5cd67d179aa7422ce90e54984a441e">number_integer_t</a> = <span class="keyword">typename</span> BasicJsonType::number_integer_t;</div>
|
||
<div class="line"><a name="l04458"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#a90f19b272530a479db81db11be2ea15c"> 4458</a></span>  <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#a90f19b272530a479db81db11be2ea15c">number_unsigned_t</a> = <span class="keyword">typename</span> BasicJsonType::number_unsigned_t;</div>
|
||
<div class="line"><a name="l04459"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#ad8da3aad0147b18b3cb76868480300fe"> 4459</a></span>  <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#ad8da3aad0147b18b3cb76868480300fe">number_float_t</a> = <span class="keyword">typename</span> BasicJsonType::number_float_t;</div>
|
||
<div class="line"><a name="l04460"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#afd4d961ab2a6b01cbe6e840f7fb90cdc"> 4460</a></span>  <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#afd4d961ab2a6b01cbe6e840f7fb90cdc">string_t</a> = <span class="keyword">typename</span> BasicJsonType::string_t;</div>
|
||
<div class="line"><a name="l04461"></a><span class="lineno"> 4461</span>  </div>
|
||
<div class="line"><a name="l04467"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#afc50fee0a92ce84afb84041ebbdfba80"> 4467</a></span>  <span class="keyword">explicit</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#afc50fee0a92ce84afb84041ebbdfba80">json_sax_dom_parser</a>(BasicJsonType& r, <span class="keyword">const</span> <span class="keywordtype">bool</span> allow_exceptions_ = <span class="keyword">true</span>)</div>
|
||
<div class="line"><a name="l04468"></a><span class="lineno"> 4468</span>  : root(r), allow_exceptions(allow_exceptions_)</div>
|
||
<div class="line"><a name="l04469"></a><span class="lineno"> 4469</span>  {}</div>
|
||
<div class="line"><a name="l04470"></a><span class="lineno"> 4470</span>  </div>
|
||
<div class="line"><a name="l04471"></a><span class="lineno"> 4471</span>  <span class="comment">// make class move-only</span></div>
|
||
<div class="line"><a name="l04472"></a><span class="lineno"> 4472</span>  <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#afc50fee0a92ce84afb84041ebbdfba80">json_sax_dom_parser</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html">json_sax_dom_parser</a>&) = <span class="keyword">delete</span>;</div>
|
||
<div class="line"><a name="l04473"></a><span class="lineno"> 4473</span>  <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#afc50fee0a92ce84afb84041ebbdfba80">json_sax_dom_parser</a>(<a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html">json_sax_dom_parser</a>&&) = <span class="keywordflow">default</span>;</div>
|
||
<div class="line"><a name="l04474"></a><span class="lineno"> 4474</span>  <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html">json_sax_dom_parser</a>& <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#a98448bf2cbc15d15e2eddc5a09a40a42">operator=</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html">json_sax_dom_parser</a>&) = <span class="keyword">delete</span>;</div>
|
||
<div class="line"><a name="l04475"></a><span class="lineno"> 4475</span>  <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html">json_sax_dom_parser</a>& <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#a98448bf2cbc15d15e2eddc5a09a40a42">operator=</a>(<a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html">json_sax_dom_parser</a>&&) = <span class="keywordflow">default</span>;</div>
|
||
<div class="line"><a name="l04476"></a><span class="lineno"> 4476</span>  <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#a4b93deb5c1d716dcfb33b3ed8a00ac4d">~json_sax_dom_parser</a>() = <span class="keywordflow">default</span>;</div>
|
||
<div class="line"><a name="l04477"></a><span class="lineno"> 4477</span>  </div>
|
||
<div class="line"><a name="l04478"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#abb06babaa861f123d8d0cb443b887d8a"> 4478</a></span>  <span class="keywordtype">bool</span> <span class="keyword">null</span>()</div>
|
||
<div class="line"><a name="l04479"></a><span class="lineno"> 4479</span>  {</div>
|
||
<div class="line"><a name="l04480"></a><span class="lineno"> 4480</span>  handle_value(<span class="keyword">nullptr</span>);</div>
|
||
<div class="line"><a name="l04481"></a><span class="lineno"> 4481</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
||
<div class="line"><a name="l04482"></a><span class="lineno"> 4482</span>  }</div>
|
||
<div class="line"><a name="l04483"></a><span class="lineno"> 4483</span>  </div>
|
||
<div class="line"><a name="l04484"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#a476c4634b93546a1a555725e551c2b33"> 4484</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#a476c4634b93546a1a555725e551c2b33">boolean</a>(<span class="keywordtype">bool</span> val)</div>
|
||
<div class="line"><a name="l04485"></a><span class="lineno"> 4485</span>  {</div>
|
||
<div class="line"><a name="l04486"></a><span class="lineno"> 4486</span>  handle_value(val);</div>
|
||
<div class="line"><a name="l04487"></a><span class="lineno"> 4487</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
||
<div class="line"><a name="l04488"></a><span class="lineno"> 4488</span>  }</div>
|
||
<div class="line"><a name="l04489"></a><span class="lineno"> 4489</span>  </div>
|
||
<div class="line"><a name="l04490"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#aff77f861ba336df48c9786a993941397"> 4490</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#aff77f861ba336df48c9786a993941397">number_integer</a>(<a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#a3d5cd67d179aa7422ce90e54984a441e">number_integer_t</a> val)</div>
|
||
<div class="line"><a name="l04491"></a><span class="lineno"> 4491</span>  {</div>
|
||
<div class="line"><a name="l04492"></a><span class="lineno"> 4492</span>  handle_value(val);</div>
|
||
<div class="line"><a name="l04493"></a><span class="lineno"> 4493</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
||
<div class="line"><a name="l04494"></a><span class="lineno"> 4494</span>  }</div>
|
||
<div class="line"><a name="l04495"></a><span class="lineno"> 4495</span>  </div>
|
||
<div class="line"><a name="l04496"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#a2b4ff5146ed46993527e4a67d99c1355"> 4496</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#a2b4ff5146ed46993527e4a67d99c1355">number_unsigned</a>(<a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#a90f19b272530a479db81db11be2ea15c">number_unsigned_t</a> val)</div>
|
||
<div class="line"><a name="l04497"></a><span class="lineno"> 4497</span>  {</div>
|
||
<div class="line"><a name="l04498"></a><span class="lineno"> 4498</span>  handle_value(val);</div>
|
||
<div class="line"><a name="l04499"></a><span class="lineno"> 4499</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
||
<div class="line"><a name="l04500"></a><span class="lineno"> 4500</span>  }</div>
|
||
<div class="line"><a name="l04501"></a><span class="lineno"> 4501</span>  </div>
|
||
<div class="line"><a name="l04502"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#aef4652c0e81d6c052acb5d36afe09499"> 4502</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#aef4652c0e81d6c052acb5d36afe09499">number_float</a>(<a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#ad8da3aad0147b18b3cb76868480300fe">number_float_t</a> val, <span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#afd4d961ab2a6b01cbe6e840f7fb90cdc">string_t</a>& <span class="comment">/*unused*/</span>)</div>
|
||
<div class="line"><a name="l04503"></a><span class="lineno"> 4503</span>  {</div>
|
||
<div class="line"><a name="l04504"></a><span class="lineno"> 4504</span>  handle_value(val);</div>
|
||
<div class="line"><a name="l04505"></a><span class="lineno"> 4505</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
||
<div class="line"><a name="l04506"></a><span class="lineno"> 4506</span>  }</div>
|
||
<div class="line"><a name="l04507"></a><span class="lineno"> 4507</span>  </div>
|
||
<div class="line"><a name="l04508"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#a851d965082d20a726138f5d0330dc7d8"> 4508</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#a851d965082d20a726138f5d0330dc7d8">string</a>(<a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#afd4d961ab2a6b01cbe6e840f7fb90cdc">string_t</a>& val)</div>
|
||
<div class="line"><a name="l04509"></a><span class="lineno"> 4509</span>  {</div>
|
||
<div class="line"><a name="l04510"></a><span class="lineno"> 4510</span>  handle_value(val);</div>
|
||
<div class="line"><a name="l04511"></a><span class="lineno"> 4511</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
||
<div class="line"><a name="l04512"></a><span class="lineno"> 4512</span>  }</div>
|
||
<div class="line"><a name="l04513"></a><span class="lineno"> 4513</span>  </div>
|
||
<div class="line"><a name="l04514"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#a9929b4cc92d471c49bd0a92802629f90"> 4514</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#a9929b4cc92d471c49bd0a92802629f90">start_object</a>(std::size_t len)</div>
|
||
<div class="line"><a name="l04515"></a><span class="lineno"> 4515</span>  {</div>
|
||
<div class="line"><a name="l04516"></a><span class="lineno"> 4516</span>  ref_stack.push_back(handle_value(BasicJsonType::value_t::object));</div>
|
||
<div class="line"><a name="l04517"></a><span class="lineno"> 4517</span>  </div>
|
||
<div class="line"><a name="l04518"></a><span class="lineno"> 4518</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(len != std::size_t(-1) and len > ref_stack.back()->max_size()))</div>
|
||
<div class="line"><a name="l04519"></a><span class="lineno"> 4519</span>  {</div>
|
||
<div class="line"><a name="l04520"></a><span class="lineno"> 4520</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1out__of__range.html#a3f6d82a6f967c4728a1ec735a7867073">out_of_range::create</a>(408,</div>
|
||
<div class="line"><a name="l04521"></a><span class="lineno"> 4521</span>  <span class="stringliteral">"excessive object size: "</span> + <a class="code" href="namespacenlohmann.html#a6ce645a0b8717757e096a5b5773b7a16">std::to_string</a>(len)));</div>
|
||
<div class="line"><a name="l04522"></a><span class="lineno"> 4522</span>  }</div>
|
||
<div class="line"><a name="l04523"></a><span class="lineno"> 4523</span>  </div>
|
||
<div class="line"><a name="l04524"></a><span class="lineno"> 4524</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
||
<div class="line"><a name="l04525"></a><span class="lineno"> 4525</span>  }</div>
|
||
<div class="line"><a name="l04526"></a><span class="lineno"> 4526</span>  </div>
|
||
<div class="line"><a name="l04527"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#ad427febda4997cbd8345a2596af66649"> 4527</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#ad427febda4997cbd8345a2596af66649">key</a>(<a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#afd4d961ab2a6b01cbe6e840f7fb90cdc">string_t</a>& val)</div>
|
||
<div class="line"><a name="l04528"></a><span class="lineno"> 4528</span>  {</div>
|
||
<div class="line"><a name="l04529"></a><span class="lineno"> 4529</span>  <span class="comment">// add null at given key and store the reference for later</span></div>
|
||
<div class="line"><a name="l04530"></a><span class="lineno"> 4530</span>  object_element = &(ref_stack.back()->m_value.object->operator[](val));</div>
|
||
<div class="line"><a name="l04531"></a><span class="lineno"> 4531</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
||
<div class="line"><a name="l04532"></a><span class="lineno"> 4532</span>  }</div>
|
||
<div class="line"><a name="l04533"></a><span class="lineno"> 4533</span>  </div>
|
||
<div class="line"><a name="l04534"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#a88de4907ad5668d0358af2135236101f"> 4534</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#a88de4907ad5668d0358af2135236101f">end_object</a>()</div>
|
||
<div class="line"><a name="l04535"></a><span class="lineno"> 4535</span>  {</div>
|
||
<div class="line"><a name="l04536"></a><span class="lineno"> 4536</span>  ref_stack.pop_back();</div>
|
||
<div class="line"><a name="l04537"></a><span class="lineno"> 4537</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
||
<div class="line"><a name="l04538"></a><span class="lineno"> 4538</span>  }</div>
|
||
<div class="line"><a name="l04539"></a><span class="lineno"> 4539</span>  </div>
|
||
<div class="line"><a name="l04540"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#a056b895d011efaf48ea096c024aca0d4"> 4540</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#a056b895d011efaf48ea096c024aca0d4">start_array</a>(std::size_t len)</div>
|
||
<div class="line"><a name="l04541"></a><span class="lineno"> 4541</span>  {</div>
|
||
<div class="line"><a name="l04542"></a><span class="lineno"> 4542</span>  ref_stack.push_back(handle_value(BasicJsonType::value_t::array));</div>
|
||
<div class="line"><a name="l04543"></a><span class="lineno"> 4543</span>  </div>
|
||
<div class="line"><a name="l04544"></a><span class="lineno"> 4544</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(len != std::size_t(-1) and len > ref_stack.back()->max_size()))</div>
|
||
<div class="line"><a name="l04545"></a><span class="lineno"> 4545</span>  {</div>
|
||
<div class="line"><a name="l04546"></a><span class="lineno"> 4546</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1out__of__range.html#a3f6d82a6f967c4728a1ec735a7867073">out_of_range::create</a>(408,</div>
|
||
<div class="line"><a name="l04547"></a><span class="lineno"> 4547</span>  <span class="stringliteral">"excessive array size: "</span> + <a class="code" href="namespacenlohmann.html#a6ce645a0b8717757e096a5b5773b7a16">std::to_string</a>(len)));</div>
|
||
<div class="line"><a name="l04548"></a><span class="lineno"> 4548</span>  }</div>
|
||
<div class="line"><a name="l04549"></a><span class="lineno"> 4549</span>  </div>
|
||
<div class="line"><a name="l04550"></a><span class="lineno"> 4550</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
||
<div class="line"><a name="l04551"></a><span class="lineno"> 4551</span>  }</div>
|
||
<div class="line"><a name="l04552"></a><span class="lineno"> 4552</span>  </div>
|
||
<div class="line"><a name="l04553"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#af7cb5e5fe06ea908b0ce4ed762919759"> 4553</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#af7cb5e5fe06ea908b0ce4ed762919759">end_array</a>()</div>
|
||
<div class="line"><a name="l04554"></a><span class="lineno"> 4554</span>  {</div>
|
||
<div class="line"><a name="l04555"></a><span class="lineno"> 4555</span>  ref_stack.pop_back();</div>
|
||
<div class="line"><a name="l04556"></a><span class="lineno"> 4556</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
||
<div class="line"><a name="l04557"></a><span class="lineno"> 4557</span>  }</div>
|
||
<div class="line"><a name="l04558"></a><span class="lineno"> 4558</span>  </div>
|
||
<div class="line"><a name="l04559"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#a7d3bf1f361ebb817c694ba45b3814fa6"> 4559</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#a7d3bf1f361ebb817c694ba45b3814fa6">parse_error</a>(std::size_t <span class="comment">/*unused*/</span>, <span class="keyword">const</span> std::string& <span class="comment">/*unused*/</span>,</div>
|
||
<div class="line"><a name="l04560"></a><span class="lineno"> 4560</span>  <span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1exception.html">detail::exception</a>& ex)</div>
|
||
<div class="line"><a name="l04561"></a><span class="lineno"> 4561</span>  {</div>
|
||
<div class="line"><a name="l04562"></a><span class="lineno"> 4562</span>  errored = <span class="keyword">true</span>;</div>
|
||
<div class="line"><a name="l04563"></a><span class="lineno"> 4563</span>  <span class="keywordflow">if</span> (allow_exceptions)</div>
|
||
<div class="line"><a name="l04564"></a><span class="lineno"> 4564</span>  {</div>
|
||
<div class="line"><a name="l04565"></a><span class="lineno"> 4565</span>  <span class="comment">// determine the proper exception type from the id</span></div>
|
||
<div class="line"><a name="l04566"></a><span class="lineno"> 4566</span>  <span class="keywordflow">switch</span> ((ex.<a class="code" href="classnlohmann_1_1detail_1_1exception.html#a0d4589a3fb54e81646d986c05efa3b9a">id</a> / 100) % 100)</div>
|
||
<div class="line"><a name="l04567"></a><span class="lineno"> 4567</span>  {</div>
|
||
<div class="line"><a name="l04568"></a><span class="lineno"> 4568</span>  <span class="keywordflow">case</span> 1:</div>
|
||
<div class="line"><a name="l04569"></a><span class="lineno"> 4569</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(*<span class="keyword">static_cast<</span><span class="keyword">const </span><a class="code" href="classnlohmann_1_1detail_1_1parse__error.html">detail::parse_error</a>*<span class="keyword">></span>(&ex));</div>
|
||
<div class="line"><a name="l04570"></a><span class="lineno"> 4570</span>  <span class="keywordflow">case</span> 4:</div>
|
||
<div class="line"><a name="l04571"></a><span class="lineno"> 4571</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(*<span class="keyword">static_cast<</span><span class="keyword">const </span><a class="code" href="classnlohmann_1_1detail_1_1out__of__range.html">detail::out_of_range</a>*<span class="keyword">></span>(&ex));</div>
|
||
<div class="line"><a name="l04572"></a><span class="lineno"> 4572</span>  <span class="comment">// LCOV_EXCL_START</span></div>
|
||
<div class="line"><a name="l04573"></a><span class="lineno"> 4573</span>  <span class="keywordflow">case</span> 2:</div>
|
||
<div class="line"><a name="l04574"></a><span class="lineno"> 4574</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(*<span class="keyword">static_cast<</span><span class="keyword">const </span><a class="code" href="classnlohmann_1_1detail_1_1invalid__iterator.html">detail::invalid_iterator</a>*<span class="keyword">></span>(&ex));</div>
|
||
<div class="line"><a name="l04575"></a><span class="lineno"> 4575</span>  <span class="keywordflow">case</span> 3:</div>
|
||
<div class="line"><a name="l04576"></a><span class="lineno"> 4576</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(*<span class="keyword">static_cast<</span><span class="keyword">const </span><a class="code" href="classnlohmann_1_1detail_1_1type__error.html">detail::type_error</a>*<span class="keyword">></span>(&ex));</div>
|
||
<div class="line"><a name="l04577"></a><span class="lineno"> 4577</span>  <span class="keywordflow">case</span> 5:</div>
|
||
<div class="line"><a name="l04578"></a><span class="lineno"> 4578</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(*<span class="keyword">static_cast<</span><span class="keyword">const </span><a class="code" href="classnlohmann_1_1detail_1_1other__error.html">detail::other_error</a>*<span class="keyword">></span>(&ex));</div>
|
||
<div class="line"><a name="l04579"></a><span class="lineno"> 4579</span>  <span class="keywordflow">default</span>:</div>
|
||
<div class="line"><a name="l04580"></a><span class="lineno"> 4580</span>  assert(<span class="keyword">false</span>);</div>
|
||
<div class="line"><a name="l04581"></a><span class="lineno"> 4581</span>  <span class="comment">// LCOV_EXCL_STOP</span></div>
|
||
<div class="line"><a name="l04582"></a><span class="lineno"> 4582</span>  }</div>
|
||
<div class="line"><a name="l04583"></a><span class="lineno"> 4583</span>  }</div>
|
||
<div class="line"><a name="l04584"></a><span class="lineno"> 4584</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||
<div class="line"><a name="l04585"></a><span class="lineno"> 4585</span>  }</div>
|
||
<div class="line"><a name="l04586"></a><span class="lineno"> 4586</span>  </div>
|
||
<div class="line"><a name="l04587"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#ad1b9f3681fadbbb2e0127f5c8a99c662"> 4587</a></span>  constexpr <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#ad1b9f3681fadbbb2e0127f5c8a99c662">is_errored</a>()<span class="keyword"> const</span></div>
|
||
<div class="line"><a name="l04588"></a><span class="lineno"> 4588</span> <span class="keyword"> </span>{</div>
|
||
<div class="line"><a name="l04589"></a><span class="lineno"> 4589</span>  <span class="keywordflow">return</span> errored;</div>
|
||
<div class="line"><a name="l04590"></a><span class="lineno"> 4590</span>  }</div>
|
||
<div class="line"><a name="l04591"></a><span class="lineno"> 4591</span>  </div>
|
||
<div class="line"><a name="l04592"></a><span class="lineno"> 4592</span>  <span class="keyword">private</span>:</div>
|
||
<div class="line"><a name="l04599"></a><span class="lineno"> 4599</span>  <span class="keyword">template</span><<span class="keyword">typename</span> Value></div>
|
||
<div class="line"><a name="l04600"></a><span class="lineno"> 4600</span>  <a class="code" href="json_8hpp.html#a5f2aaec3b681d0a72f7d6e90b70cdcd1">JSON_HEDLEY_RETURNS_NON_NULL</a></div>
|
||
<div class="line"><a name="l04601"></a><span class="lineno"> 4601</span>  BasicJsonType* handle_value(Value&& v)</div>
|
||
<div class="line"><a name="l04602"></a><span class="lineno"> 4602</span>  {</div>
|
||
<div class="line"><a name="l04603"></a><span class="lineno"> 4603</span>  <span class="keywordflow">if</span> (ref_stack.empty())</div>
|
||
<div class="line"><a name="l04604"></a><span class="lineno"> 4604</span>  {</div>
|
||
<div class="line"><a name="l04605"></a><span class="lineno"> 4605</span>  root = BasicJsonType(std::forward<Value>(v));</div>
|
||
<div class="line"><a name="l04606"></a><span class="lineno"> 4606</span>  <span class="keywordflow">return</span> &root;</div>
|
||
<div class="line"><a name="l04607"></a><span class="lineno"> 4607</span>  }</div>
|
||
<div class="line"><a name="l04608"></a><span class="lineno"> 4608</span>  </div>
|
||
<div class="line"><a name="l04609"></a><span class="lineno"> 4609</span>  assert(ref_stack.back()->is_array() or ref_stack.back()->is_object());</div>
|
||
<div class="line"><a name="l04610"></a><span class="lineno"> 4610</span>  </div>
|
||
<div class="line"><a name="l04611"></a><span class="lineno"> 4611</span>  <span class="keywordflow">if</span> (ref_stack.back()->is_array())</div>
|
||
<div class="line"><a name="l04612"></a><span class="lineno"> 4612</span>  {</div>
|
||
<div class="line"><a name="l04613"></a><span class="lineno"> 4613</span>  ref_stack.back()->m_value.array->emplace_back(std::forward<Value>(v));</div>
|
||
<div class="line"><a name="l04614"></a><span class="lineno"> 4614</span>  <span class="keywordflow">return</span> &(ref_stack.back()->m_value.array->back());</div>
|
||
<div class="line"><a name="l04615"></a><span class="lineno"> 4615</span>  }</div>
|
||
<div class="line"><a name="l04616"></a><span class="lineno"> 4616</span>  </div>
|
||
<div class="line"><a name="l04617"></a><span class="lineno"> 4617</span>  assert(ref_stack.back()->is_object());</div>
|
||
<div class="line"><a name="l04618"></a><span class="lineno"> 4618</span>  assert(object_element);</div>
|
||
<div class="line"><a name="l04619"></a><span class="lineno"> 4619</span>  *object_element = BasicJsonType(std::forward<Value>(v));</div>
|
||
<div class="line"><a name="l04620"></a><span class="lineno"> 4620</span>  <span class="keywordflow">return</span> object_element;</div>
|
||
<div class="line"><a name="l04621"></a><span class="lineno"> 4621</span>  }</div>
|
||
<div class="line"><a name="l04622"></a><span class="lineno"> 4622</span>  </div>
|
||
<div class="line"><a name="l04624"></a><span class="lineno"> 4624</span>  BasicJsonType& root;</div>
|
||
<div class="line"><a name="l04626"></a><span class="lineno"> 4626</span>  std::vector<BasicJsonType*> ref_stack {};</div>
|
||
<div class="line"><a name="l04628"></a><span class="lineno"> 4628</span>  BasicJsonType* object_element = <span class="keyword">nullptr</span>;</div>
|
||
<div class="line"><a name="l04630"></a><span class="lineno"> 4630</span>  <span class="keywordtype">bool</span> errored = <span class="keyword">false</span>;</div>
|
||
<div class="line"><a name="l04632"></a><span class="lineno"> 4632</span>  <span class="keyword">const</span> <span class="keywordtype">bool</span> allow_exceptions = <span class="keyword">true</span>;</div>
|
||
<div class="line"><a name="l04633"></a><span class="lineno"> 4633</span> };</div>
|
||
<div class="line"><a name="l04634"></a><span class="lineno"> 4634</span>  </div>
|
||
<div class="line"><a name="l04635"></a><span class="lineno"> 4635</span> <span class="keyword">template</span><<span class="keyword">typename</span> BasicJsonType></div>
|
||
<div class="line"><a name="l04636"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html"> 4636</a></span> <span class="keyword">class </span><a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html">json_sax_dom_callback_parser</a></div>
|
||
<div class="line"><a name="l04637"></a><span class="lineno"> 4637</span> {</div>
|
||
<div class="line"><a name="l04638"></a><span class="lineno"> 4638</span>  <span class="keyword">public</span>:</div>
|
||
<div class="line"><a name="l04639"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a3ba8fc7a8d83c5b0eeb3b543ad844b8d"> 4639</a></span>  <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a3ba8fc7a8d83c5b0eeb3b543ad844b8d">number_integer_t</a> = <span class="keyword">typename</span> BasicJsonType::number_integer_t;</div>
|
||
<div class="line"><a name="l04640"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a2406c5125f7128fb9c01921df2903001"> 4640</a></span>  <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a2406c5125f7128fb9c01921df2903001">number_unsigned_t</a> = <span class="keyword">typename</span> BasicJsonType::number_unsigned_t;</div>
|
||
<div class="line"><a name="l04641"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a914ea0555cea5290449fb791ae41c655"> 4641</a></span>  <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a914ea0555cea5290449fb791ae41c655">number_float_t</a> = <span class="keyword">typename</span> BasicJsonType::number_float_t;</div>
|
||
<div class="line"><a name="l04642"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a00e7d95d82d5d8a43421526a42a8eabc"> 4642</a></span>  <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a00e7d95d82d5d8a43421526a42a8eabc">string_t</a> = <span class="keyword">typename</span> BasicJsonType::string_t;</div>
|
||
<div class="line"><a name="l04643"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a4f636086fa8e7cf26c35c8afd50903ce"> 4643</a></span>  <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a4f636086fa8e7cf26c35c8afd50903ce">parser_callback_t</a> = <span class="keyword">typename</span> BasicJsonType::parser_callback_t;</div>
|
||
<div class="line"><a name="l04644"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#aac6d706967b2ecc2510e172577d8550b"> 4644</a></span>  <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#aac6d706967b2ecc2510e172577d8550b">parse_event_t</a> = <span class="keyword">typename</span> BasicJsonType::parse_event_t;</div>
|
||
<div class="line"><a name="l04645"></a><span class="lineno"> 4645</span>  </div>
|
||
<div class="line"><a name="l04646"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#afec9434e54590f10df51b062973d4daf"> 4646</a></span>  <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#afec9434e54590f10df51b062973d4daf">json_sax_dom_callback_parser</a>(BasicJsonType& r,</div>
|
||
<div class="line"><a name="l04647"></a><span class="lineno"> 4647</span>  <span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a4f636086fa8e7cf26c35c8afd50903ce">parser_callback_t</a> cb,</div>
|
||
<div class="line"><a name="l04648"></a><span class="lineno"> 4648</span>  <span class="keyword">const</span> <span class="keywordtype">bool</span> allow_exceptions_ = <span class="keyword">true</span>)</div>
|
||
<div class="line"><a name="l04649"></a><span class="lineno"> 4649</span>  : root(r), callback(cb), allow_exceptions(allow_exceptions_)</div>
|
||
<div class="line"><a name="l04650"></a><span class="lineno"> 4650</span>  {</div>
|
||
<div class="line"><a name="l04651"></a><span class="lineno"> 4651</span>  keep_stack.push_back(<span class="keyword">true</span>);</div>
|
||
<div class="line"><a name="l04652"></a><span class="lineno"> 4652</span>  }</div>
|
||
<div class="line"><a name="l04653"></a><span class="lineno"> 4653</span>  </div>
|
||
<div class="line"><a name="l04654"></a><span class="lineno"> 4654</span>  <span class="comment">// make class move-only</span></div>
|
||
<div class="line"><a name="l04655"></a><span class="lineno"> 4655</span>  <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#afec9434e54590f10df51b062973d4daf">json_sax_dom_callback_parser</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html">json_sax_dom_callback_parser</a>&) = <span class="keyword">delete</span>;</div>
|
||
<div class="line"><a name="l04656"></a><span class="lineno"> 4656</span>  <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#afec9434e54590f10df51b062973d4daf">json_sax_dom_callback_parser</a>(<a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html">json_sax_dom_callback_parser</a>&&) = <span class="keywordflow">default</span>;</div>
|
||
<div class="line"><a name="l04657"></a><span class="lineno"> 4657</span>  <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html">json_sax_dom_callback_parser</a>& <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a5c9603e79a71713f5e8cf12cba837dbb">operator=</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html">json_sax_dom_callback_parser</a>&) = <span class="keyword">delete</span>;</div>
|
||
<div class="line"><a name="l04658"></a><span class="lineno"> 4658</span>  <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html">json_sax_dom_callback_parser</a>& <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a5c9603e79a71713f5e8cf12cba837dbb">operator=</a>(<a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html">json_sax_dom_callback_parser</a>&&) = <span class="keywordflow">default</span>;</div>
|
||
<div class="line"><a name="l04659"></a><span class="lineno"> 4659</span>  <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a54ffcdfb0a8c5c9a876cd003b404ef4b">~json_sax_dom_callback_parser</a>() = <span class="keywordflow">default</span>;</div>
|
||
<div class="line"><a name="l04660"></a><span class="lineno"> 4660</span>  </div>
|
||
<div class="line"><a name="l04661"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a446262b6a75371fe8e0a6218ba2911e6"> 4661</a></span>  <span class="keywordtype">bool</span> <span class="keyword">null</span>()</div>
|
||
<div class="line"><a name="l04662"></a><span class="lineno"> 4662</span>  {</div>
|
||
<div class="line"><a name="l04663"></a><span class="lineno"> 4663</span>  handle_value(<span class="keyword">nullptr</span>);</div>
|
||
<div class="line"><a name="l04664"></a><span class="lineno"> 4664</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
||
<div class="line"><a name="l04665"></a><span class="lineno"> 4665</span>  }</div>
|
||
<div class="line"><a name="l04666"></a><span class="lineno"> 4666</span>  </div>
|
||
<div class="line"><a name="l04667"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#ab7d8db672189164a8c0731e65ada1b45"> 4667</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#ab7d8db672189164a8c0731e65ada1b45">boolean</a>(<span class="keywordtype">bool</span> val)</div>
|
||
<div class="line"><a name="l04668"></a><span class="lineno"> 4668</span>  {</div>
|
||
<div class="line"><a name="l04669"></a><span class="lineno"> 4669</span>  handle_value(val);</div>
|
||
<div class="line"><a name="l04670"></a><span class="lineno"> 4670</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
||
<div class="line"><a name="l04671"></a><span class="lineno"> 4671</span>  }</div>
|
||
<div class="line"><a name="l04672"></a><span class="lineno"> 4672</span>  </div>
|
||
<div class="line"><a name="l04673"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a68d9eddfd572e8687c1c8107e0505aa6"> 4673</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a68d9eddfd572e8687c1c8107e0505aa6">number_integer</a>(<a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a3ba8fc7a8d83c5b0eeb3b543ad844b8d">number_integer_t</a> val)</div>
|
||
<div class="line"><a name="l04674"></a><span class="lineno"> 4674</span>  {</div>
|
||
<div class="line"><a name="l04675"></a><span class="lineno"> 4675</span>  handle_value(val);</div>
|
||
<div class="line"><a name="l04676"></a><span class="lineno"> 4676</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
||
<div class="line"><a name="l04677"></a><span class="lineno"> 4677</span>  }</div>
|
||
<div class="line"><a name="l04678"></a><span class="lineno"> 4678</span>  </div>
|
||
<div class="line"><a name="l04679"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#acabb231463bf669441c22e4ea385a9fb"> 4679</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#acabb231463bf669441c22e4ea385a9fb">number_unsigned</a>(<a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a2406c5125f7128fb9c01921df2903001">number_unsigned_t</a> val)</div>
|
||
<div class="line"><a name="l04680"></a><span class="lineno"> 4680</span>  {</div>
|
||
<div class="line"><a name="l04681"></a><span class="lineno"> 4681</span>  handle_value(val);</div>
|
||
<div class="line"><a name="l04682"></a><span class="lineno"> 4682</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
||
<div class="line"><a name="l04683"></a><span class="lineno"> 4683</span>  }</div>
|
||
<div class="line"><a name="l04684"></a><span class="lineno"> 4684</span>  </div>
|
||
<div class="line"><a name="l04685"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#ae21f7872c334c77d03ae033cb0749b1c"> 4685</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#ae21f7872c334c77d03ae033cb0749b1c">number_float</a>(<a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a914ea0555cea5290449fb791ae41c655">number_float_t</a> val, <span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a00e7d95d82d5d8a43421526a42a8eabc">string_t</a>& <span class="comment">/*unused*/</span>)</div>
|
||
<div class="line"><a name="l04686"></a><span class="lineno"> 4686</span>  {</div>
|
||
<div class="line"><a name="l04687"></a><span class="lineno"> 4687</span>  handle_value(val);</div>
|
||
<div class="line"><a name="l04688"></a><span class="lineno"> 4688</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
||
<div class="line"><a name="l04689"></a><span class="lineno"> 4689</span>  }</div>
|
||
<div class="line"><a name="l04690"></a><span class="lineno"> 4690</span>  </div>
|
||
<div class="line"><a name="l04691"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#ad94e912a67c7b96158937236805b8b47"> 4691</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#ad94e912a67c7b96158937236805b8b47">string</a>(<a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a00e7d95d82d5d8a43421526a42a8eabc">string_t</a>& val)</div>
|
||
<div class="line"><a name="l04692"></a><span class="lineno"> 4692</span>  {</div>
|
||
<div class="line"><a name="l04693"></a><span class="lineno"> 4693</span>  handle_value(val);</div>
|
||
<div class="line"><a name="l04694"></a><span class="lineno"> 4694</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
||
<div class="line"><a name="l04695"></a><span class="lineno"> 4695</span>  }</div>
|
||
<div class="line"><a name="l04696"></a><span class="lineno"> 4696</span>  </div>
|
||
<div class="line"><a name="l04697"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a040e60243cc7c18a6078c6b83cdb4a81"> 4697</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a040e60243cc7c18a6078c6b83cdb4a81">start_object</a>(std::size_t len)</div>
|
||
<div class="line"><a name="l04698"></a><span class="lineno"> 4698</span>  {</div>
|
||
<div class="line"><a name="l04699"></a><span class="lineno"> 4699</span>  <span class="comment">// check callback for object start</span></div>
|
||
<div class="line"><a name="l04700"></a><span class="lineno"> 4700</span>  <span class="keyword">const</span> <span class="keywordtype">bool</span> keep = callback(<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(ref_stack.size()), parse_event_t::object_start, discarded);</div>
|
||
<div class="line"><a name="l04701"></a><span class="lineno"> 4701</span>  keep_stack.push_back(keep);</div>
|
||
<div class="line"><a name="l04702"></a><span class="lineno"> 4702</span>  </div>
|
||
<div class="line"><a name="l04703"></a><span class="lineno"> 4703</span>  <span class="keyword">auto</span> val = handle_value(BasicJsonType::value_t::object, <span class="keyword">true</span>);</div>
|
||
<div class="line"><a name="l04704"></a><span class="lineno"> 4704</span>  ref_stack.push_back(val.second);</div>
|
||
<div class="line"><a name="l04705"></a><span class="lineno"> 4705</span>  </div>
|
||
<div class="line"><a name="l04706"></a><span class="lineno"> 4706</span>  <span class="comment">// check object limit</span></div>
|
||
<div class="line"><a name="l04707"></a><span class="lineno"> 4707</span>  <span class="keywordflow">if</span> (ref_stack.back() and <a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(len != std::size_t(-1) and len > ref_stack.back()->max_size()))</div>
|
||
<div class="line"><a name="l04708"></a><span class="lineno"> 4708</span>  {</div>
|
||
<div class="line"><a name="l04709"></a><span class="lineno"> 4709</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1out__of__range.html#a3f6d82a6f967c4728a1ec735a7867073">out_of_range::create</a>(408, <span class="stringliteral">"excessive object size: "</span> + <a class="code" href="namespacenlohmann.html#a6ce645a0b8717757e096a5b5773b7a16">std::to_string</a>(len)));</div>
|
||
<div class="line"><a name="l04710"></a><span class="lineno"> 4710</span>  }</div>
|
||
<div class="line"><a name="l04711"></a><span class="lineno"> 4711</span>  </div>
|
||
<div class="line"><a name="l04712"></a><span class="lineno"> 4712</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
||
<div class="line"><a name="l04713"></a><span class="lineno"> 4713</span>  }</div>
|
||
<div class="line"><a name="l04714"></a><span class="lineno"> 4714</span>  </div>
|
||
<div class="line"><a name="l04715"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a0cc4a5192fe9b803276edb831b6099fa"> 4715</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a0cc4a5192fe9b803276edb831b6099fa">key</a>(<a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a00e7d95d82d5d8a43421526a42a8eabc">string_t</a>& val)</div>
|
||
<div class="line"><a name="l04716"></a><span class="lineno"> 4716</span>  {</div>
|
||
<div class="line"><a name="l04717"></a><span class="lineno"> 4717</span>  BasicJsonType k = BasicJsonType(val);</div>
|
||
<div class="line"><a name="l04718"></a><span class="lineno"> 4718</span>  </div>
|
||
<div class="line"><a name="l04719"></a><span class="lineno"> 4719</span>  <span class="comment">// check callback for key</span></div>
|
||
<div class="line"><a name="l04720"></a><span class="lineno"> 4720</span>  <span class="keyword">const</span> <span class="keywordtype">bool</span> keep = callback(<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(ref_stack.size()), parse_event_t::key, k);</div>
|
||
<div class="line"><a name="l04721"></a><span class="lineno"> 4721</span>  key_keep_stack.push_back(keep);</div>
|
||
<div class="line"><a name="l04722"></a><span class="lineno"> 4722</span>  </div>
|
||
<div class="line"><a name="l04723"></a><span class="lineno"> 4723</span>  <span class="comment">// add discarded value at given key and store the reference for later</span></div>
|
||
<div class="line"><a name="l04724"></a><span class="lineno"> 4724</span>  <span class="keywordflow">if</span> (keep and ref_stack.back())</div>
|
||
<div class="line"><a name="l04725"></a><span class="lineno"> 4725</span>  {</div>
|
||
<div class="line"><a name="l04726"></a><span class="lineno"> 4726</span>  object_element = &(ref_stack.back()->m_value.object->operator[](val) = discarded);</div>
|
||
<div class="line"><a name="l04727"></a><span class="lineno"> 4727</span>  }</div>
|
||
<div class="line"><a name="l04728"></a><span class="lineno"> 4728</span>  </div>
|
||
<div class="line"><a name="l04729"></a><span class="lineno"> 4729</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
||
<div class="line"><a name="l04730"></a><span class="lineno"> 4730</span>  }</div>
|
||
<div class="line"><a name="l04731"></a><span class="lineno"> 4731</span>  </div>
|
||
<div class="line"><a name="l04732"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#ae75d313d6d1b9c29508e740a10fefa18"> 4732</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#ae75d313d6d1b9c29508e740a10fefa18">end_object</a>()</div>
|
||
<div class="line"><a name="l04733"></a><span class="lineno"> 4733</span>  {</div>
|
||
<div class="line"><a name="l04734"></a><span class="lineno"> 4734</span>  <span class="keywordflow">if</span> (ref_stack.back() and not callback(<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(ref_stack.size()) - 1, parse_event_t::object_end, *ref_stack.back()))</div>
|
||
<div class="line"><a name="l04735"></a><span class="lineno"> 4735</span>  {</div>
|
||
<div class="line"><a name="l04736"></a><span class="lineno"> 4736</span>  <span class="comment">// discard object</span></div>
|
||
<div class="line"><a name="l04737"></a><span class="lineno"> 4737</span>  *ref_stack.back() = discarded;</div>
|
||
<div class="line"><a name="l04738"></a><span class="lineno"> 4738</span>  }</div>
|
||
<div class="line"><a name="l04739"></a><span class="lineno"> 4739</span>  </div>
|
||
<div class="line"><a name="l04740"></a><span class="lineno"> 4740</span>  assert(not ref_stack.empty());</div>
|
||
<div class="line"><a name="l04741"></a><span class="lineno"> 4741</span>  assert(not keep_stack.empty());</div>
|
||
<div class="line"><a name="l04742"></a><span class="lineno"> 4742</span>  ref_stack.pop_back();</div>
|
||
<div class="line"><a name="l04743"></a><span class="lineno"> 4743</span>  keep_stack.pop_back();</div>
|
||
<div class="line"><a name="l04744"></a><span class="lineno"> 4744</span>  </div>
|
||
<div class="line"><a name="l04745"></a><span class="lineno"> 4745</span>  <span class="keywordflow">if</span> (not ref_stack.empty() and ref_stack.back() and ref_stack.back()->is_object())</div>
|
||
<div class="line"><a name="l04746"></a><span class="lineno"> 4746</span>  {</div>
|
||
<div class="line"><a name="l04747"></a><span class="lineno"> 4747</span>  <span class="comment">// remove discarded value</span></div>
|
||
<div class="line"><a name="l04748"></a><span class="lineno"> 4748</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span> it = ref_stack.back()->begin(); it != ref_stack.back()->end(); ++it)</div>
|
||
<div class="line"><a name="l04749"></a><span class="lineno"> 4749</span>  {</div>
|
||
<div class="line"><a name="l04750"></a><span class="lineno"> 4750</span>  <span class="keywordflow">if</span> (it->is_discarded())</div>
|
||
<div class="line"><a name="l04751"></a><span class="lineno"> 4751</span>  {</div>
|
||
<div class="line"><a name="l04752"></a><span class="lineno"> 4752</span>  ref_stack.back()->erase(it);</div>
|
||
<div class="line"><a name="l04753"></a><span class="lineno"> 4753</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l04754"></a><span class="lineno"> 4754</span>  }</div>
|
||
<div class="line"><a name="l04755"></a><span class="lineno"> 4755</span>  }</div>
|
||
<div class="line"><a name="l04756"></a><span class="lineno"> 4756</span>  }</div>
|
||
<div class="line"><a name="l04757"></a><span class="lineno"> 4757</span>  </div>
|
||
<div class="line"><a name="l04758"></a><span class="lineno"> 4758</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
||
<div class="line"><a name="l04759"></a><span class="lineno"> 4759</span>  }</div>
|
||
<div class="line"><a name="l04760"></a><span class="lineno"> 4760</span>  </div>
|
||
<div class="line"><a name="l04761"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a5255b98ba8282e3625968f91cff9d3d0"> 4761</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a5255b98ba8282e3625968f91cff9d3d0">start_array</a>(std::size_t len)</div>
|
||
<div class="line"><a name="l04762"></a><span class="lineno"> 4762</span>  {</div>
|
||
<div class="line"><a name="l04763"></a><span class="lineno"> 4763</span>  <span class="keyword">const</span> <span class="keywordtype">bool</span> keep = callback(<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(ref_stack.size()), parse_event_t::array_start, discarded);</div>
|
||
<div class="line"><a name="l04764"></a><span class="lineno"> 4764</span>  keep_stack.push_back(keep);</div>
|
||
<div class="line"><a name="l04765"></a><span class="lineno"> 4765</span>  </div>
|
||
<div class="line"><a name="l04766"></a><span class="lineno"> 4766</span>  <span class="keyword">auto</span> val = handle_value(BasicJsonType::value_t::array, <span class="keyword">true</span>);</div>
|
||
<div class="line"><a name="l04767"></a><span class="lineno"> 4767</span>  ref_stack.push_back(val.second);</div>
|
||
<div class="line"><a name="l04768"></a><span class="lineno"> 4768</span>  </div>
|
||
<div class="line"><a name="l04769"></a><span class="lineno"> 4769</span>  <span class="comment">// check array limit</span></div>
|
||
<div class="line"><a name="l04770"></a><span class="lineno"> 4770</span>  <span class="keywordflow">if</span> (ref_stack.back() and <a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(len != std::size_t(-1) and len > ref_stack.back()->max_size()))</div>
|
||
<div class="line"><a name="l04771"></a><span class="lineno"> 4771</span>  {</div>
|
||
<div class="line"><a name="l04772"></a><span class="lineno"> 4772</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1out__of__range.html#a3f6d82a6f967c4728a1ec735a7867073">out_of_range::create</a>(408, <span class="stringliteral">"excessive array size: "</span> + <a class="code" href="namespacenlohmann.html#a6ce645a0b8717757e096a5b5773b7a16">std::to_string</a>(len)));</div>
|
||
<div class="line"><a name="l04773"></a><span class="lineno"> 4773</span>  }</div>
|
||
<div class="line"><a name="l04774"></a><span class="lineno"> 4774</span>  </div>
|
||
<div class="line"><a name="l04775"></a><span class="lineno"> 4775</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
||
<div class="line"><a name="l04776"></a><span class="lineno"> 4776</span>  }</div>
|
||
<div class="line"><a name="l04777"></a><span class="lineno"> 4777</span>  </div>
|
||
<div class="line"><a name="l04778"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#aa64e7a650952174037d32028de582c12"> 4778</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#aa64e7a650952174037d32028de582c12">end_array</a>()</div>
|
||
<div class="line"><a name="l04779"></a><span class="lineno"> 4779</span>  {</div>
|
||
<div class="line"><a name="l04780"></a><span class="lineno"> 4780</span>  <span class="keywordtype">bool</span> keep = <span class="keyword">true</span>;</div>
|
||
<div class="line"><a name="l04781"></a><span class="lineno"> 4781</span>  </div>
|
||
<div class="line"><a name="l04782"></a><span class="lineno"> 4782</span>  <span class="keywordflow">if</span> (ref_stack.back())</div>
|
||
<div class="line"><a name="l04783"></a><span class="lineno"> 4783</span>  {</div>
|
||
<div class="line"><a name="l04784"></a><span class="lineno"> 4784</span>  keep = callback(<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(ref_stack.size()) - 1, parse_event_t::array_end, *ref_stack.back());</div>
|
||
<div class="line"><a name="l04785"></a><span class="lineno"> 4785</span>  <span class="keywordflow">if</span> (not keep)</div>
|
||
<div class="line"><a name="l04786"></a><span class="lineno"> 4786</span>  {</div>
|
||
<div class="line"><a name="l04787"></a><span class="lineno"> 4787</span>  <span class="comment">// discard array</span></div>
|
||
<div class="line"><a name="l04788"></a><span class="lineno"> 4788</span>  *ref_stack.back() = discarded;</div>
|
||
<div class="line"><a name="l04789"></a><span class="lineno"> 4789</span>  }</div>
|
||
<div class="line"><a name="l04790"></a><span class="lineno"> 4790</span>  }</div>
|
||
<div class="line"><a name="l04791"></a><span class="lineno"> 4791</span>  </div>
|
||
<div class="line"><a name="l04792"></a><span class="lineno"> 4792</span>  assert(not ref_stack.empty());</div>
|
||
<div class="line"><a name="l04793"></a><span class="lineno"> 4793</span>  assert(not keep_stack.empty());</div>
|
||
<div class="line"><a name="l04794"></a><span class="lineno"> 4794</span>  ref_stack.pop_back();</div>
|
||
<div class="line"><a name="l04795"></a><span class="lineno"> 4795</span>  keep_stack.pop_back();</div>
|
||
<div class="line"><a name="l04796"></a><span class="lineno"> 4796</span>  </div>
|
||
<div class="line"><a name="l04797"></a><span class="lineno"> 4797</span>  <span class="comment">// remove discarded value</span></div>
|
||
<div class="line"><a name="l04798"></a><span class="lineno"> 4798</span>  <span class="keywordflow">if</span> (not keep and not ref_stack.empty() and ref_stack.back()->is_array())</div>
|
||
<div class="line"><a name="l04799"></a><span class="lineno"> 4799</span>  {</div>
|
||
<div class="line"><a name="l04800"></a><span class="lineno"> 4800</span>  ref_stack.back()->m_value.array->pop_back();</div>
|
||
<div class="line"><a name="l04801"></a><span class="lineno"> 4801</span>  }</div>
|
||
<div class="line"><a name="l04802"></a><span class="lineno"> 4802</span>  </div>
|
||
<div class="line"><a name="l04803"></a><span class="lineno"> 4803</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
||
<div class="line"><a name="l04804"></a><span class="lineno"> 4804</span>  }</div>
|
||
<div class="line"><a name="l04805"></a><span class="lineno"> 4805</span>  </div>
|
||
<div class="line"><a name="l04806"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#aac6e64f0b59c9150cde974e182d5ecab"> 4806</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#aac6e64f0b59c9150cde974e182d5ecab">parse_error</a>(std::size_t <span class="comment">/*unused*/</span>, <span class="keyword">const</span> std::string& <span class="comment">/*unused*/</span>,</div>
|
||
<div class="line"><a name="l04807"></a><span class="lineno"> 4807</span>  <span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1exception.html">detail::exception</a>& ex)</div>
|
||
<div class="line"><a name="l04808"></a><span class="lineno"> 4808</span>  {</div>
|
||
<div class="line"><a name="l04809"></a><span class="lineno"> 4809</span>  errored = <span class="keyword">true</span>;</div>
|
||
<div class="line"><a name="l04810"></a><span class="lineno"> 4810</span>  <span class="keywordflow">if</span> (allow_exceptions)</div>
|
||
<div class="line"><a name="l04811"></a><span class="lineno"> 4811</span>  {</div>
|
||
<div class="line"><a name="l04812"></a><span class="lineno"> 4812</span>  <span class="comment">// determine the proper exception type from the id</span></div>
|
||
<div class="line"><a name="l04813"></a><span class="lineno"> 4813</span>  <span class="keywordflow">switch</span> ((ex.<a class="code" href="classnlohmann_1_1detail_1_1exception.html#a0d4589a3fb54e81646d986c05efa3b9a">id</a> / 100) % 100)</div>
|
||
<div class="line"><a name="l04814"></a><span class="lineno"> 4814</span>  {</div>
|
||
<div class="line"><a name="l04815"></a><span class="lineno"> 4815</span>  <span class="keywordflow">case</span> 1:</div>
|
||
<div class="line"><a name="l04816"></a><span class="lineno"> 4816</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(*<span class="keyword">static_cast<</span><span class="keyword">const </span><a class="code" href="classnlohmann_1_1detail_1_1parse__error.html">detail::parse_error</a>*<span class="keyword">></span>(&ex));</div>
|
||
<div class="line"><a name="l04817"></a><span class="lineno"> 4817</span>  <span class="keywordflow">case</span> 4:</div>
|
||
<div class="line"><a name="l04818"></a><span class="lineno"> 4818</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(*<span class="keyword">static_cast<</span><span class="keyword">const </span><a class="code" href="classnlohmann_1_1detail_1_1out__of__range.html">detail::out_of_range</a>*<span class="keyword">></span>(&ex));</div>
|
||
<div class="line"><a name="l04819"></a><span class="lineno"> 4819</span>  <span class="comment">// LCOV_EXCL_START</span></div>
|
||
<div class="line"><a name="l04820"></a><span class="lineno"> 4820</span>  <span class="keywordflow">case</span> 2:</div>
|
||
<div class="line"><a name="l04821"></a><span class="lineno"> 4821</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(*<span class="keyword">static_cast<</span><span class="keyword">const </span><a class="code" href="classnlohmann_1_1detail_1_1invalid__iterator.html">detail::invalid_iterator</a>*<span class="keyword">></span>(&ex));</div>
|
||
<div class="line"><a name="l04822"></a><span class="lineno"> 4822</span>  <span class="keywordflow">case</span> 3:</div>
|
||
<div class="line"><a name="l04823"></a><span class="lineno"> 4823</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(*<span class="keyword">static_cast<</span><span class="keyword">const </span><a class="code" href="classnlohmann_1_1detail_1_1type__error.html">detail::type_error</a>*<span class="keyword">></span>(&ex));</div>
|
||
<div class="line"><a name="l04824"></a><span class="lineno"> 4824</span>  <span class="keywordflow">case</span> 5:</div>
|
||
<div class="line"><a name="l04825"></a><span class="lineno"> 4825</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(*<span class="keyword">static_cast<</span><span class="keyword">const </span><a class="code" href="classnlohmann_1_1detail_1_1other__error.html">detail::other_error</a>*<span class="keyword">></span>(&ex));</div>
|
||
<div class="line"><a name="l04826"></a><span class="lineno"> 4826</span>  <span class="keywordflow">default</span>:</div>
|
||
<div class="line"><a name="l04827"></a><span class="lineno"> 4827</span>  assert(<span class="keyword">false</span>);</div>
|
||
<div class="line"><a name="l04828"></a><span class="lineno"> 4828</span>  <span class="comment">// LCOV_EXCL_STOP</span></div>
|
||
<div class="line"><a name="l04829"></a><span class="lineno"> 4829</span>  }</div>
|
||
<div class="line"><a name="l04830"></a><span class="lineno"> 4830</span>  }</div>
|
||
<div class="line"><a name="l04831"></a><span class="lineno"> 4831</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||
<div class="line"><a name="l04832"></a><span class="lineno"> 4832</span>  }</div>
|
||
<div class="line"><a name="l04833"></a><span class="lineno"> 4833</span>  </div>
|
||
<div class="line"><a name="l04834"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a167fd9bf385d3d08bcbbba8a927c0eff"> 4834</a></span>  constexpr <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a167fd9bf385d3d08bcbbba8a927c0eff">is_errored</a>()<span class="keyword"> const</span></div>
|
||
<div class="line"><a name="l04835"></a><span class="lineno"> 4835</span> <span class="keyword"> </span>{</div>
|
||
<div class="line"><a name="l04836"></a><span class="lineno"> 4836</span>  <span class="keywordflow">return</span> errored;</div>
|
||
<div class="line"><a name="l04837"></a><span class="lineno"> 4837</span>  }</div>
|
||
<div class="line"><a name="l04838"></a><span class="lineno"> 4838</span>  </div>
|
||
<div class="line"><a name="l04839"></a><span class="lineno"> 4839</span>  <span class="keyword">private</span>:</div>
|
||
<div class="line"><a name="l04855"></a><span class="lineno"> 4855</span>  <span class="keyword">template</span><<span class="keyword">typename</span> Value></div>
|
||
<div class="line"><a name="l04856"></a><span class="lineno"> 4856</span>  std::pair<bool, BasicJsonType*> handle_value(Value&& v, <span class="keyword">const</span> <span class="keywordtype">bool</span> skip_callback = <span class="keyword">false</span>)</div>
|
||
<div class="line"><a name="l04857"></a><span class="lineno"> 4857</span>  {</div>
|
||
<div class="line"><a name="l04858"></a><span class="lineno"> 4858</span>  assert(not keep_stack.empty());</div>
|
||
<div class="line"><a name="l04859"></a><span class="lineno"> 4859</span>  </div>
|
||
<div class="line"><a name="l04860"></a><span class="lineno"> 4860</span>  <span class="comment">// do not handle this value if we know it would be added to a discarded</span></div>
|
||
<div class="line"><a name="l04861"></a><span class="lineno"> 4861</span>  <span class="comment">// container</span></div>
|
||
<div class="line"><a name="l04862"></a><span class="lineno"> 4862</span>  <span class="keywordflow">if</span> (not keep_stack.back())</div>
|
||
<div class="line"><a name="l04863"></a><span class="lineno"> 4863</span>  {</div>
|
||
<div class="line"><a name="l04864"></a><span class="lineno"> 4864</span>  <span class="keywordflow">return</span> {<span class="keyword">false</span>, <span class="keyword">nullptr</span>};</div>
|
||
<div class="line"><a name="l04865"></a><span class="lineno"> 4865</span>  }</div>
|
||
<div class="line"><a name="l04866"></a><span class="lineno"> 4866</span>  </div>
|
||
<div class="line"><a name="l04867"></a><span class="lineno"> 4867</span>  <span class="comment">// create value</span></div>
|
||
<div class="line"><a name="l04868"></a><span class="lineno"> 4868</span>  <span class="keyword">auto</span> value = BasicJsonType(std::forward<Value>(v));</div>
|
||
<div class="line"><a name="l04869"></a><span class="lineno"> 4869</span>  </div>
|
||
<div class="line"><a name="l04870"></a><span class="lineno"> 4870</span>  <span class="comment">// check callback</span></div>
|
||
<div class="line"><a name="l04871"></a><span class="lineno"> 4871</span>  <span class="keyword">const</span> <span class="keywordtype">bool</span> keep = skip_callback or callback(<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(ref_stack.size()), parse_event_t::value, value);</div>
|
||
<div class="line"><a name="l04872"></a><span class="lineno"> 4872</span>  </div>
|
||
<div class="line"><a name="l04873"></a><span class="lineno"> 4873</span>  <span class="comment">// do not handle this value if we just learnt it shall be discarded</span></div>
|
||
<div class="line"><a name="l04874"></a><span class="lineno"> 4874</span>  <span class="keywordflow">if</span> (not keep)</div>
|
||
<div class="line"><a name="l04875"></a><span class="lineno"> 4875</span>  {</div>
|
||
<div class="line"><a name="l04876"></a><span class="lineno"> 4876</span>  <span class="keywordflow">return</span> {<span class="keyword">false</span>, <span class="keyword">nullptr</span>};</div>
|
||
<div class="line"><a name="l04877"></a><span class="lineno"> 4877</span>  }</div>
|
||
<div class="line"><a name="l04878"></a><span class="lineno"> 4878</span>  </div>
|
||
<div class="line"><a name="l04879"></a><span class="lineno"> 4879</span>  <span class="keywordflow">if</span> (ref_stack.empty())</div>
|
||
<div class="line"><a name="l04880"></a><span class="lineno"> 4880</span>  {</div>
|
||
<div class="line"><a name="l04881"></a><span class="lineno"> 4881</span>  root = std::move(value);</div>
|
||
<div class="line"><a name="l04882"></a><span class="lineno"> 4882</span>  <span class="keywordflow">return</span> {<span class="keyword">true</span>, &root};</div>
|
||
<div class="line"><a name="l04883"></a><span class="lineno"> 4883</span>  }</div>
|
||
<div class="line"><a name="l04884"></a><span class="lineno"> 4884</span>  </div>
|
||
<div class="line"><a name="l04885"></a><span class="lineno"> 4885</span>  <span class="comment">// skip this value if we already decided to skip the parent</span></div>
|
||
<div class="line"><a name="l04886"></a><span class="lineno"> 4886</span>  <span class="comment">// (https://github.com/nlohmann/json/issues/971#issuecomment-413678360)</span></div>
|
||
<div class="line"><a name="l04887"></a><span class="lineno"> 4887</span>  <span class="keywordflow">if</span> (not ref_stack.back())</div>
|
||
<div class="line"><a name="l04888"></a><span class="lineno"> 4888</span>  {</div>
|
||
<div class="line"><a name="l04889"></a><span class="lineno"> 4889</span>  <span class="keywordflow">return</span> {<span class="keyword">false</span>, <span class="keyword">nullptr</span>};</div>
|
||
<div class="line"><a name="l04890"></a><span class="lineno"> 4890</span>  }</div>
|
||
<div class="line"><a name="l04891"></a><span class="lineno"> 4891</span>  </div>
|
||
<div class="line"><a name="l04892"></a><span class="lineno"> 4892</span>  <span class="comment">// we now only expect arrays and objects</span></div>
|
||
<div class="line"><a name="l04893"></a><span class="lineno"> 4893</span>  assert(ref_stack.back()->is_array() or ref_stack.back()->is_object());</div>
|
||
<div class="line"><a name="l04894"></a><span class="lineno"> 4894</span>  </div>
|
||
<div class="line"><a name="l04895"></a><span class="lineno"> 4895</span>  <span class="comment">// array</span></div>
|
||
<div class="line"><a name="l04896"></a><span class="lineno"> 4896</span>  <span class="keywordflow">if</span> (ref_stack.back()->is_array())</div>
|
||
<div class="line"><a name="l04897"></a><span class="lineno"> 4897</span>  {</div>
|
||
<div class="line"><a name="l04898"></a><span class="lineno"> 4898</span>  ref_stack.back()->m_value.array->push_back(std::move(value));</div>
|
||
<div class="line"><a name="l04899"></a><span class="lineno"> 4899</span>  <span class="keywordflow">return</span> {<span class="keyword">true</span>, &(ref_stack.back()->m_value.array->back())};</div>
|
||
<div class="line"><a name="l04900"></a><span class="lineno"> 4900</span>  }</div>
|
||
<div class="line"><a name="l04901"></a><span class="lineno"> 4901</span>  </div>
|
||
<div class="line"><a name="l04902"></a><span class="lineno"> 4902</span>  <span class="comment">// object</span></div>
|
||
<div class="line"><a name="l04903"></a><span class="lineno"> 4903</span>  assert(ref_stack.back()->is_object());</div>
|
||
<div class="line"><a name="l04904"></a><span class="lineno"> 4904</span>  <span class="comment">// check if we should store an element for the current key</span></div>
|
||
<div class="line"><a name="l04905"></a><span class="lineno"> 4905</span>  assert(not key_keep_stack.empty());</div>
|
||
<div class="line"><a name="l04906"></a><span class="lineno"> 4906</span>  <span class="keyword">const</span> <span class="keywordtype">bool</span> store_element = key_keep_stack.back();</div>
|
||
<div class="line"><a name="l04907"></a><span class="lineno"> 4907</span>  key_keep_stack.pop_back();</div>
|
||
<div class="line"><a name="l04908"></a><span class="lineno"> 4908</span>  </div>
|
||
<div class="line"><a name="l04909"></a><span class="lineno"> 4909</span>  <span class="keywordflow">if</span> (not store_element)</div>
|
||
<div class="line"><a name="l04910"></a><span class="lineno"> 4910</span>  {</div>
|
||
<div class="line"><a name="l04911"></a><span class="lineno"> 4911</span>  <span class="keywordflow">return</span> {<span class="keyword">false</span>, <span class="keyword">nullptr</span>};</div>
|
||
<div class="line"><a name="l04912"></a><span class="lineno"> 4912</span>  }</div>
|
||
<div class="line"><a name="l04913"></a><span class="lineno"> 4913</span>  </div>
|
||
<div class="line"><a name="l04914"></a><span class="lineno"> 4914</span>  assert(object_element);</div>
|
||
<div class="line"><a name="l04915"></a><span class="lineno"> 4915</span>  *object_element = std::move(value);</div>
|
||
<div class="line"><a name="l04916"></a><span class="lineno"> 4916</span>  <span class="keywordflow">return</span> {<span class="keyword">true</span>, object_element};</div>
|
||
<div class="line"><a name="l04917"></a><span class="lineno"> 4917</span>  }</div>
|
||
<div class="line"><a name="l04918"></a><span class="lineno"> 4918</span>  </div>
|
||
<div class="line"><a name="l04920"></a><span class="lineno"> 4920</span>  BasicJsonType& root;</div>
|
||
<div class="line"><a name="l04922"></a><span class="lineno"> 4922</span>  std::vector<BasicJsonType*> ref_stack {};</div>
|
||
<div class="line"><a name="l04924"></a><span class="lineno"> 4924</span>  std::vector<bool> keep_stack {};</div>
|
||
<div class="line"><a name="l04926"></a><span class="lineno"> 4926</span>  std::vector<bool> key_keep_stack {};</div>
|
||
<div class="line"><a name="l04928"></a><span class="lineno"> 4928</span>  BasicJsonType* object_element = <span class="keyword">nullptr</span>;</div>
|
||
<div class="line"><a name="l04930"></a><span class="lineno"> 4930</span>  <span class="keywordtype">bool</span> errored = <span class="keyword">false</span>;</div>
|
||
<div class="line"><a name="l04932"></a><span class="lineno"> 4932</span>  <span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a4f636086fa8e7cf26c35c8afd50903ce">parser_callback_t</a> callback = <span class="keyword">nullptr</span>;</div>
|
||
<div class="line"><a name="l04934"></a><span class="lineno"> 4934</span>  <span class="keyword">const</span> <span class="keywordtype">bool</span> allow_exceptions = <span class="keyword">true</span>;</div>
|
||
<div class="line"><a name="l04936"></a><span class="lineno"> 4936</span>  BasicJsonType discarded = BasicJsonType::value_t::discarded;</div>
|
||
<div class="line"><a name="l04937"></a><span class="lineno"> 4937</span> };</div>
|
||
<div class="line"><a name="l04938"></a><span class="lineno"> 4938</span>  </div>
|
||
<div class="line"><a name="l04939"></a><span class="lineno"> 4939</span> <span class="keyword">template</span><<span class="keyword">typename</span> BasicJsonType></div>
|
||
<div class="line"><a name="l04940"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__acceptor.html"> 4940</a></span> <span class="keyword">class </span><a class="code" href="classnlohmann_1_1detail_1_1json__sax__acceptor.html">json_sax_acceptor</a></div>
|
||
<div class="line"><a name="l04941"></a><span class="lineno"> 4941</span> {</div>
|
||
<div class="line"><a name="l04942"></a><span class="lineno"> 4942</span>  <span class="keyword">public</span>:</div>
|
||
<div class="line"><a name="l04943"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#a41876b17c0e8bdb55580eaf5e4e2ded8"> 4943</a></span>  <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#a41876b17c0e8bdb55580eaf5e4e2ded8">number_integer_t</a> = <span class="keyword">typename</span> BasicJsonType::number_integer_t;</div>
|
||
<div class="line"><a name="l04944"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#ae07454608ea6f3cfb765f95e3c850043"> 4944</a></span>  <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#ae07454608ea6f3cfb765f95e3c850043">number_unsigned_t</a> = <span class="keyword">typename</span> BasicJsonType::number_unsigned_t;</div>
|
||
<div class="line"><a name="l04945"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#a5502f483fc60a1bcd73e0e46b6ab36e4"> 4945</a></span>  <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#a5502f483fc60a1bcd73e0e46b6ab36e4">number_float_t</a> = <span class="keyword">typename</span> BasicJsonType::number_float_t;</div>
|
||
<div class="line"><a name="l04946"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#a3a8078bbf865ec355106f6048241609a"> 4946</a></span>  <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#a3a8078bbf865ec355106f6048241609a">string_t</a> = <span class="keyword">typename</span> BasicJsonType::string_t;</div>
|
||
<div class="line"><a name="l04947"></a><span class="lineno"> 4947</span>  </div>
|
||
<div class="line"><a name="l04948"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#ad7ad55168af6e03ed8b844c94a17b9ce"> 4948</a></span>  <span class="keywordtype">bool</span> <span class="keyword">null</span>()</div>
|
||
<div class="line"><a name="l04949"></a><span class="lineno"> 4949</span>  {</div>
|
||
<div class="line"><a name="l04950"></a><span class="lineno"> 4950</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
||
<div class="line"><a name="l04951"></a><span class="lineno"> 4951</span>  }</div>
|
||
<div class="line"><a name="l04952"></a><span class="lineno"> 4952</span>  </div>
|
||
<div class="line"><a name="l04953"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#a3f5fe42a9b195de8d251d6d98d5ee92c"> 4953</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#a3f5fe42a9b195de8d251d6d98d5ee92c">boolean</a>(<span class="keywordtype">bool</span> <span class="comment">/*unused*/</span>)</div>
|
||
<div class="line"><a name="l04954"></a><span class="lineno"> 4954</span>  {</div>
|
||
<div class="line"><a name="l04955"></a><span class="lineno"> 4955</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
||
<div class="line"><a name="l04956"></a><span class="lineno"> 4956</span>  }</div>
|
||
<div class="line"><a name="l04957"></a><span class="lineno"> 4957</span>  </div>
|
||
<div class="line"><a name="l04958"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#a976bf4ce6e9a2ffe48f683ddff80af00"> 4958</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#a976bf4ce6e9a2ffe48f683ddff80af00">number_integer</a>(<a class="code" href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#a41876b17c0e8bdb55580eaf5e4e2ded8">number_integer_t</a> <span class="comment">/*unused*/</span>)</div>
|
||
<div class="line"><a name="l04959"></a><span class="lineno"> 4959</span>  {</div>
|
||
<div class="line"><a name="l04960"></a><span class="lineno"> 4960</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
||
<div class="line"><a name="l04961"></a><span class="lineno"> 4961</span>  }</div>
|
||
<div class="line"><a name="l04962"></a><span class="lineno"> 4962</span>  </div>
|
||
<div class="line"><a name="l04963"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#ad15b288f3351287edbe289502f595491"> 4963</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#ad15b288f3351287edbe289502f595491">number_unsigned</a>(<a class="code" href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#ae07454608ea6f3cfb765f95e3c850043">number_unsigned_t</a> <span class="comment">/*unused*/</span>)</div>
|
||
<div class="line"><a name="l04964"></a><span class="lineno"> 4964</span>  {</div>
|
||
<div class="line"><a name="l04965"></a><span class="lineno"> 4965</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
||
<div class="line"><a name="l04966"></a><span class="lineno"> 4966</span>  }</div>
|
||
<div class="line"><a name="l04967"></a><span class="lineno"> 4967</span>  </div>
|
||
<div class="line"><a name="l04968"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#aebf8800023eb20d472f111f86b189e60"> 4968</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#aebf8800023eb20d472f111f86b189e60">number_float</a>(<a class="code" href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#a5502f483fc60a1bcd73e0e46b6ab36e4">number_float_t</a> <span class="comment">/*unused*/</span>, <span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#a3a8078bbf865ec355106f6048241609a">string_t</a>& <span class="comment">/*unused*/</span>)</div>
|
||
<div class="line"><a name="l04969"></a><span class="lineno"> 4969</span>  {</div>
|
||
<div class="line"><a name="l04970"></a><span class="lineno"> 4970</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
||
<div class="line"><a name="l04971"></a><span class="lineno"> 4971</span>  }</div>
|
||
<div class="line"><a name="l04972"></a><span class="lineno"> 4972</span>  </div>
|
||
<div class="line"><a name="l04973"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#aaa69255e757a6ecc4403a2aa4931fc60"> 4973</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#aaa69255e757a6ecc4403a2aa4931fc60">string</a>(<a class="code" href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#a3a8078bbf865ec355106f6048241609a">string_t</a>& <span class="comment">/*unused*/</span>)</div>
|
||
<div class="line"><a name="l04974"></a><span class="lineno"> 4974</span>  {</div>
|
||
<div class="line"><a name="l04975"></a><span class="lineno"> 4975</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
||
<div class="line"><a name="l04976"></a><span class="lineno"> 4976</span>  }</div>
|
||
<div class="line"><a name="l04977"></a><span class="lineno"> 4977</span>  </div>
|
||
<div class="line"><a name="l04978"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#a822bbca11a9fea0aa337018e351755f5"> 4978</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#a822bbca11a9fea0aa337018e351755f5">start_object</a>(std::size_t <span class="comment">/*unused*/</span> = std::size_t(-1))</div>
|
||
<div class="line"><a name="l04979"></a><span class="lineno"> 4979</span>  {</div>
|
||
<div class="line"><a name="l04980"></a><span class="lineno"> 4980</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
||
<div class="line"><a name="l04981"></a><span class="lineno"> 4981</span>  }</div>
|
||
<div class="line"><a name="l04982"></a><span class="lineno"> 4982</span>  </div>
|
||
<div class="line"><a name="l04983"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#a59e1ea5e9c8d25346a564bf9287a5c2a"> 4983</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#a59e1ea5e9c8d25346a564bf9287a5c2a">key</a>(<a class="code" href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#a3a8078bbf865ec355106f6048241609a">string_t</a>& <span class="comment">/*unused*/</span>)</div>
|
||
<div class="line"><a name="l04984"></a><span class="lineno"> 4984</span>  {</div>
|
||
<div class="line"><a name="l04985"></a><span class="lineno"> 4985</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
||
<div class="line"><a name="l04986"></a><span class="lineno"> 4986</span>  }</div>
|
||
<div class="line"><a name="l04987"></a><span class="lineno"> 4987</span>  </div>
|
||
<div class="line"><a name="l04988"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#a919645fd1827a561a994d70a435e3f19"> 4988</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#a919645fd1827a561a994d70a435e3f19">end_object</a>()</div>
|
||
<div class="line"><a name="l04989"></a><span class="lineno"> 4989</span>  {</div>
|
||
<div class="line"><a name="l04990"></a><span class="lineno"> 4990</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
||
<div class="line"><a name="l04991"></a><span class="lineno"> 4991</span>  }</div>
|
||
<div class="line"><a name="l04992"></a><span class="lineno"> 4992</span>  </div>
|
||
<div class="line"><a name="l04993"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#a8238e8090cbb4ed8a22cbc97bfb833a5"> 4993</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#a8238e8090cbb4ed8a22cbc97bfb833a5">start_array</a>(std::size_t <span class="comment">/*unused*/</span> = std::size_t(-1))</div>
|
||
<div class="line"><a name="l04994"></a><span class="lineno"> 4994</span>  {</div>
|
||
<div class="line"><a name="l04995"></a><span class="lineno"> 4995</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
||
<div class="line"><a name="l04996"></a><span class="lineno"> 4996</span>  }</div>
|
||
<div class="line"><a name="l04997"></a><span class="lineno"> 4997</span>  </div>
|
||
<div class="line"><a name="l04998"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#a22ef94ca5476a9563dcaca15b7d6e654"> 4998</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#a22ef94ca5476a9563dcaca15b7d6e654">end_array</a>()</div>
|
||
<div class="line"><a name="l04999"></a><span class="lineno"> 4999</span>  {</div>
|
||
<div class="line"><a name="l05000"></a><span class="lineno"> 5000</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
||
<div class="line"><a name="l05001"></a><span class="lineno"> 5001</span>  }</div>
|
||
<div class="line"><a name="l05002"></a><span class="lineno"> 5002</span>  </div>
|
||
<div class="line"><a name="l05003"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#a95bb3e8b6feaa523ecda8106fb5e38e3"> 5003</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#a95bb3e8b6feaa523ecda8106fb5e38e3">parse_error</a>(std::size_t <span class="comment">/*unused*/</span>, <span class="keyword">const</span> std::string& <span class="comment">/*unused*/</span>, <span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1exception.html">detail::exception</a>& <span class="comment">/*unused*/</span>)</div>
|
||
<div class="line"><a name="l05004"></a><span class="lineno"> 5004</span>  {</div>
|
||
<div class="line"><a name="l05005"></a><span class="lineno"> 5005</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||
<div class="line"><a name="l05006"></a><span class="lineno"> 5006</span>  }</div>
|
||
<div class="line"><a name="l05007"></a><span class="lineno"> 5007</span> };</div>
|
||
<div class="line"><a name="l05008"></a><span class="lineno"> 5008</span> } <span class="comment">// namespace detail</span></div>
|
||
<div class="line"><a name="l05009"></a><span class="lineno"> 5009</span>  </div>
|
||
<div class="line"><a name="l05010"></a><span class="lineno"> 5010</span> } <span class="comment">// namespace nlohmann</span></div>
|
||
<div class="line"><a name="l05011"></a><span class="lineno"> 5011</span>  </div>
|
||
<div class="line"><a name="l05012"></a><span class="lineno"> 5012</span> <span class="comment">// #include <nlohmann/detail/macro_scope.hpp></span></div>
|
||
<div class="line"><a name="l05013"></a><span class="lineno"> 5013</span>  </div>
|
||
<div class="line"><a name="l05014"></a><span class="lineno"> 5014</span> <span class="comment">// #include <nlohmann/detail/meta/is_sax.hpp></span></div>
|
||
<div class="line"><a name="l05015"></a><span class="lineno"> 5015</span>  </div>
|
||
<div class="line"><a name="l05016"></a><span class="lineno"> 5016</span>  </div>
|
||
<div class="line"><a name="l05017"></a><span class="lineno"> 5017</span> <span class="preprocessor">#include <cstdint></span> <span class="comment">// size_t</span></div>
|
||
<div class="line"><a name="l05018"></a><span class="lineno"> 5018</span> <span class="preprocessor">#include <utility></span> <span class="comment">// declval</span></div>
|
||
<div class="line"><a name="l05019"></a><span class="lineno"> 5019</span> <span class="preprocessor">#include <string></span> <span class="comment">// string</span></div>
|
||
<div class="line"><a name="l05020"></a><span class="lineno"> 5020</span>  </div>
|
||
<div class="line"><a name="l05021"></a><span class="lineno"> 5021</span> <span class="comment">// #include <nlohmann/detail/meta/detected.hpp></span></div>
|
||
<div class="line"><a name="l05022"></a><span class="lineno"> 5022</span>  </div>
|
||
<div class="line"><a name="l05023"></a><span class="lineno"> 5023</span> <span class="comment">// #include <nlohmann/detail/meta/type_traits.hpp></span></div>
|
||
<div class="line"><a name="l05024"></a><span class="lineno"> 5024</span>  </div>
|
||
<div class="line"><a name="l05025"></a><span class="lineno"> 5025</span>  </div>
|
||
<div class="line"><a name="l05026"></a><span class="lineno"> 5026</span> <span class="keyword">namespace </span><a class="code" href="namespacenlohmann.html">nlohmann</a></div>
|
||
<div class="line"><a name="l05027"></a><span class="lineno"> 5027</span> {</div>
|
||
<div class="line"><a name="l05028"></a><span class="lineno"> 5028</span> <span class="keyword">namespace </span>detail</div>
|
||
<div class="line"><a name="l05029"></a><span class="lineno"> 5029</span> {</div>
|
||
<div class="line"><a name="l05030"></a><span class="lineno"> 5030</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T></div>
|
||
<div class="line"><a name="l05031"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#ac1b4e524746bf8b790b2b776048b93c4"> 5031</a></span> <span class="keyword">using</span> <a class="code" href="namespacenlohmann_1_1detail.html#ac1b4e524746bf8b790b2b776048b93c4">null_function_t</a> = decltype(std::declval<T&>().<span class="keyword">null</span>());</div>
|
||
<div class="line"><a name="l05032"></a><span class="lineno"> 5032</span>  </div>
|
||
<div class="line"><a name="l05033"></a><span class="lineno"> 5033</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T></div>
|
||
<div class="line"><a name="l05034"></a><span class="lineno"> 5034</span> <span class="keyword">using</span> <a class="code" href="namespacenlohmann_1_1detail.html#a45ec87326503b8884b664a9ef23a6c99">boolean_function_t</a> =</div>
|
||
<div class="line"><a name="l05035"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a45ec87326503b8884b664a9ef23a6c99"> 5035</a></span>  decltype(std::declval<T&>().<span class="keywordtype">boolean</span>(std::declval<bool>()));</div>
|
||
<div class="line"><a name="l05036"></a><span class="lineno"> 5036</span>  </div>
|
||
<div class="line"><a name="l05037"></a><span class="lineno"> 5037</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T, <span class="keyword">typename</span> Integer></div>
|
||
<div class="line"><a name="l05038"></a><span class="lineno"> 5038</span> <span class="keyword">using</span> <a class="code" href="namespacenlohmann_1_1detail.html#a4a3e14a011b9ea1ff849fc6d2411e6a0">number_integer_function_t</a> =</div>
|
||
<div class="line"><a name="l05039"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a4a3e14a011b9ea1ff849fc6d2411e6a0"> 5039</a></span>  decltype(std::declval<T&>().<a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a5763da164f8659d94a56e29df64b4bcc">number_integer</a>(std::declval<Integer>()));</div>
|
||
<div class="line"><a name="l05040"></a><span class="lineno"> 5040</span>  </div>
|
||
<div class="line"><a name="l05041"></a><span class="lineno"> 5041</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T, <span class="keyword">typename</span> Un<span class="keywordtype">signed</span>></div>
|
||
<div class="line"><a name="l05042"></a><span class="lineno"> 5042</span> <span class="keyword">using</span> <a class="code" href="namespacenlohmann_1_1detail.html#a74da7b17bda76f65d276feb18209c913">number_unsigned_function_t</a> =</div>
|
||
<div class="line"><a name="l05043"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a74da7b17bda76f65d276feb18209c913"> 5043</a></span>  decltype(std::declval<T&>().<a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985adce7cc8ec29055c4158828921f2f265e">number_unsigned</a>(std::declval<Unsigned>()));</div>
|
||
<div class="line"><a name="l05044"></a><span class="lineno"> 5044</span>  </div>
|
||
<div class="line"><a name="l05045"></a><span class="lineno"> 5045</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T, <span class="keyword">typename</span> Float, <span class="keyword">typename</span> String></div>
|
||
<div class="line"><a name="l05046"></a><span class="lineno"> 5046</span> <span class="keyword">using</span> <a class="code" href="namespacenlohmann_1_1detail.html#ad42df56e913abe26ed556e0e92f386f4">number_float_function_t</a> = decltype(std::declval<T&>().<a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ad9966ecb59667235a57b4b999a649eef">number_float</a>(</div>
|
||
<div class="line"><a name="l05047"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#ad42df56e913abe26ed556e0e92f386f4"> 5047</a></span>  std::declval<Float>(), std::declval<const String&>()));</div>
|
||
<div class="line"><a name="l05048"></a><span class="lineno"> 5048</span>  </div>
|
||
<div class="line"><a name="l05049"></a><span class="lineno"> 5049</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T, <span class="keyword">typename</span> String></div>
|
||
<div class="line"><a name="l05050"></a><span class="lineno"> 5050</span> <span class="keyword">using</span> <a class="code" href="namespacenlohmann_1_1detail.html#a27c3fc3bd42ac406f763184aa8ae4cb0">string_function_t</a> =</div>
|
||
<div class="line"><a name="l05051"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a27c3fc3bd42ac406f763184aa8ae4cb0"> 5051</a></span>  decltype(std::declval<T&>().<span class="keywordtype">string</span>(std::declval<String&>()));</div>
|
||
<div class="line"><a name="l05052"></a><span class="lineno"> 5052</span>  </div>
|
||
<div class="line"><a name="l05053"></a><span class="lineno"> 5053</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T></div>
|
||
<div class="line"><a name="l05054"></a><span class="lineno"> 5054</span> <span class="keyword">using</span> <a class="code" href="namespacenlohmann_1_1detail.html#a5fff1e6dcaabd367d9b1109a5682f9d4">start_object_function_t</a> =</div>
|
||
<div class="line"><a name="l05055"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a5fff1e6dcaabd367d9b1109a5682f9d4"> 5055</a></span>  decltype(std::declval<T&>().start_object(std::declval<std::size_t>()));</div>
|
||
<div class="line"><a name="l05056"></a><span class="lineno"> 5056</span>  </div>
|
||
<div class="line"><a name="l05057"></a><span class="lineno"> 5057</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T, <span class="keyword">typename</span> String></div>
|
||
<div class="line"><a name="l05058"></a><span class="lineno"> 5058</span> <span class="keyword">using</span> <a class="code" href="namespacenlohmann_1_1detail.html#a44869ca9f422b260625d78e4e8121559">key_function_t</a> =</div>
|
||
<div class="line"><a name="l05059"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a44869ca9f422b260625d78e4e8121559"> 5059</a></span>  decltype(std::declval<T&>().key(std::declval<String&>()));</div>
|
||
<div class="line"><a name="l05060"></a><span class="lineno"> 5060</span>  </div>
|
||
<div class="line"><a name="l05061"></a><span class="lineno"> 5061</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T></div>
|
||
<div class="line"><a name="l05062"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#af52d6d2521c386998ae940d118182ebc"> 5062</a></span> <span class="keyword">using</span> <a class="code" href="namespacenlohmann_1_1detail.html#af52d6d2521c386998ae940d118182ebc">end_object_function_t</a> = decltype(std::declval<T&>().end_object());</div>
|
||
<div class="line"><a name="l05063"></a><span class="lineno"> 5063</span>  </div>
|
||
<div class="line"><a name="l05064"></a><span class="lineno"> 5064</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T></div>
|
||
<div class="line"><a name="l05065"></a><span class="lineno"> 5065</span> <span class="keyword">using</span> <a class="code" href="namespacenlohmann_1_1detail.html#a80273cecc45765d7b2826ec931fbffdd">start_array_function_t</a> =</div>
|
||
<div class="line"><a name="l05066"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a80273cecc45765d7b2826ec931fbffdd"> 5066</a></span>  decltype(std::declval<T&>().start_array(std::declval<std::size_t>()));</div>
|
||
<div class="line"><a name="l05067"></a><span class="lineno"> 5067</span>  </div>
|
||
<div class="line"><a name="l05068"></a><span class="lineno"> 5068</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T></div>
|
||
<div class="line"><a name="l05069"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#aec53c029383b34a72182210e58fadb79"> 5069</a></span> <span class="keyword">using</span> <a class="code" href="namespacenlohmann_1_1detail.html#aec53c029383b34a72182210e58fadb79">end_array_function_t</a> = decltype(std::declval<T&>().end_array());</div>
|
||
<div class="line"><a name="l05070"></a><span class="lineno"> 5070</span>  </div>
|
||
<div class="line"><a name="l05071"></a><span class="lineno"> 5071</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T, <span class="keyword">typename</span> Exception></div>
|
||
<div class="line"><a name="l05072"></a><span class="lineno"> 5072</span> <span class="keyword">using</span> <a class="code" href="namespacenlohmann_1_1detail.html#a264d4d58bc1fd82bcc7bf6bf73d6acad">parse_error_function_t</a> = decltype(std::declval<T&>().<a class="code" href="classnlohmann_1_1detail_1_1parse__error.html">parse_error</a>(</div>
|
||
<div class="line"><a name="l05073"></a><span class="lineno"> 5073</span>  std::declval<std::size_t>(), std::declval<const std::string&>(),</div>
|
||
<div class="line"><a name="l05074"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a264d4d58bc1fd82bcc7bf6bf73d6acad"> 5074</a></span>  std::declval<const Exception&>()));</div>
|
||
<div class="line"><a name="l05075"></a><span class="lineno"> 5075</span>  </div>
|
||
<div class="line"><a name="l05076"></a><span class="lineno"> 5076</span> <span class="keyword">template</span> <<span class="keyword">typename</span> SAX, <span class="keyword">typename</span> BasicJsonType></div>
|
||
<div class="line"><a name="l05077"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1is__sax.html"> 5077</a></span> <span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1is__sax.html">is_sax</a></div>
|
||
<div class="line"><a name="l05078"></a><span class="lineno"> 5078</span> {</div>
|
||
<div class="line"><a name="l05079"></a><span class="lineno"> 5079</span>  <span class="keyword">private</span>:</div>
|
||
<div class="line"><a name="l05080"></a><span class="lineno"> 5080</span>  static_assert(<a class="code" href="structnlohmann_1_1detail_1_1is__basic__json.html">is_basic_json<BasicJsonType>::value</a>,</div>
|
||
<div class="line"><a name="l05081"></a><span class="lineno"> 5081</span>  <span class="stringliteral">"BasicJsonType must be of type basic_json<...>"</span>);</div>
|
||
<div class="line"><a name="l05082"></a><span class="lineno"> 5082</span>  </div>
|
||
<div class="line"><a name="l05083"></a><span class="lineno"> 5083</span>  <span class="keyword">using</span> number_integer_t = <span class="keyword">typename</span> BasicJsonType::number_integer_t;</div>
|
||
<div class="line"><a name="l05084"></a><span class="lineno"> 5084</span>  <span class="keyword">using</span> number_unsigned_t = <span class="keyword">typename</span> BasicJsonType::number_unsigned_t;</div>
|
||
<div class="line"><a name="l05085"></a><span class="lineno"> 5085</span>  <span class="keyword">using</span> number_float_t = <span class="keyword">typename</span> BasicJsonType::number_float_t;</div>
|
||
<div class="line"><a name="l05086"></a><span class="lineno"> 5086</span>  <span class="keyword">using</span> string_t = <span class="keyword">typename</span> BasicJsonType::string_t;</div>
|
||
<div class="line"><a name="l05087"></a><span class="lineno"> 5087</span>  <span class="keyword">using</span> exception_t = <span class="keyword">typename</span> BasicJsonType::exception;</div>
|
||
<div class="line"><a name="l05088"></a><span class="lineno"> 5088</span>  </div>
|
||
<div class="line"><a name="l05089"></a><span class="lineno"> 5089</span>  <span class="keyword">public</span>:</div>
|
||
<div class="line"><a name="l05090"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1is__sax.html#a8ab7e51087000e948b4a2492257484dc"> 5090</a></span>  <span class="keyword">static</span> constexpr <span class="keywordtype">bool</span> <a class="code" href="structnlohmann_1_1detail_1_1is__sax.html#a8ab7e51087000e948b4a2492257484dc">value</a> =</div>
|
||
<div class="line"><a name="l05091"></a><span class="lineno"> 5091</span>  <a class="code" href="namespacenlohmann_1_1detail.html#a7542b4dbac07817fd4849ecfa4619def">is_detected_exact<bool, null_function_t, SAX>::value</a> &&</div>
|
||
<div class="line"><a name="l05092"></a><span class="lineno"> 5092</span>  <a class="code" href="namespacenlohmann_1_1detail.html#a7542b4dbac07817fd4849ecfa4619def">is_detected_exact<bool, boolean_function_t, SAX>::value</a> &&</div>
|
||
<div class="line"><a name="l05093"></a><span class="lineno"> 5093</span>  <a class="code" href="namespacenlohmann_1_1detail.html#a7542b4dbac07817fd4849ecfa4619def">is_detected_exact</a><bool, <a class="code" href="namespacenlohmann_1_1detail.html#a4a3e14a011b9ea1ff849fc6d2411e6a0">number_integer_function_t</a>, SAX,</div>
|
||
<div class="line"><a name="l05094"></a><span class="lineno"> 5094</span>  number_integer_t><a class="code" href="structnlohmann_1_1detail_1_1is__sax.html#a8ab7e51087000e948b4a2492257484dc">::value</a> &&</div>
|
||
<div class="line"><a name="l05095"></a><span class="lineno"> 5095</span>  <a class="code" href="namespacenlohmann_1_1detail.html#a7542b4dbac07817fd4849ecfa4619def">is_detected_exact</a><bool, <a class="code" href="namespacenlohmann_1_1detail.html#a74da7b17bda76f65d276feb18209c913">number_unsigned_function_t</a>, SAX,</div>
|
||
<div class="line"><a name="l05096"></a><span class="lineno"> 5096</span>  number_unsigned_t><a class="code" href="structnlohmann_1_1detail_1_1is__sax.html#a8ab7e51087000e948b4a2492257484dc">::value</a> &&</div>
|
||
<div class="line"><a name="l05097"></a><span class="lineno"> 5097</span>  <a class="code" href="namespacenlohmann_1_1detail.html#a7542b4dbac07817fd4849ecfa4619def">is_detected_exact</a><bool, <a class="code" href="namespacenlohmann_1_1detail.html#ad42df56e913abe26ed556e0e92f386f4">number_float_function_t</a>, SAX, number_float_t,</div>
|
||
<div class="line"><a name="l05098"></a><span class="lineno"> 5098</span>  string_t><a class="code" href="structnlohmann_1_1detail_1_1is__sax.html#a8ab7e51087000e948b4a2492257484dc">::value</a> &&</div>
|
||
<div class="line"><a name="l05099"></a><span class="lineno"> 5099</span>  <a class="code" href="namespacenlohmann_1_1detail.html#a7542b4dbac07817fd4849ecfa4619def">is_detected_exact<bool, string_function_t, SAX, string_t>::value</a> &&</div>
|
||
<div class="line"><a name="l05100"></a><span class="lineno"> 5100</span>  <a class="code" href="namespacenlohmann_1_1detail.html#a7542b4dbac07817fd4849ecfa4619def">is_detected_exact<bool, start_object_function_t, SAX>::value</a> &&</div>
|
||
<div class="line"><a name="l05101"></a><span class="lineno"> 5101</span>  <a class="code" href="namespacenlohmann_1_1detail.html#a7542b4dbac07817fd4849ecfa4619def">is_detected_exact<bool, key_function_t, SAX, string_t>::value</a> &&</div>
|
||
<div class="line"><a name="l05102"></a><span class="lineno"> 5102</span>  <a class="code" href="namespacenlohmann_1_1detail.html#a7542b4dbac07817fd4849ecfa4619def">is_detected_exact<bool, end_object_function_t, SAX>::value</a> &&</div>
|
||
<div class="line"><a name="l05103"></a><span class="lineno"> 5103</span>  <a class="code" href="namespacenlohmann_1_1detail.html#a7542b4dbac07817fd4849ecfa4619def">is_detected_exact<bool, start_array_function_t, SAX>::value</a> &&</div>
|
||
<div class="line"><a name="l05104"></a><span class="lineno"> 5104</span>  <a class="code" href="namespacenlohmann_1_1detail.html#a7542b4dbac07817fd4849ecfa4619def">is_detected_exact<bool, end_array_function_t, SAX>::value</a> &&</div>
|
||
<div class="line"><a name="l05105"></a><span class="lineno"> 5105</span>  <a class="code" href="namespacenlohmann_1_1detail.html#a7542b4dbac07817fd4849ecfa4619def">is_detected_exact<bool, parse_error_function_t, SAX, exception_t>::value</a>;</div>
|
||
<div class="line"><a name="l05106"></a><span class="lineno"> 5106</span> };</div>
|
||
<div class="line"><a name="l05107"></a><span class="lineno"> 5107</span>  </div>
|
||
<div class="line"><a name="l05108"></a><span class="lineno"> 5108</span> <span class="keyword">template</span> <<span class="keyword">typename</span> SAX, <span class="keyword">typename</span> BasicJsonType></div>
|
||
<div class="line"><a name="l05109"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1is__sax__static__asserts.html"> 5109</a></span> <span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1is__sax__static__asserts.html">is_sax_static_asserts</a></div>
|
||
<div class="line"><a name="l05110"></a><span class="lineno"> 5110</span> {</div>
|
||
<div class="line"><a name="l05111"></a><span class="lineno"> 5111</span>  <span class="keyword">private</span>:</div>
|
||
<div class="line"><a name="l05112"></a><span class="lineno"> 5112</span>  static_assert(<a class="code" href="structnlohmann_1_1detail_1_1is__basic__json.html">is_basic_json<BasicJsonType>::value</a>,</div>
|
||
<div class="line"><a name="l05113"></a><span class="lineno"> 5113</span>  <span class="stringliteral">"BasicJsonType must be of type basic_json<...>"</span>);</div>
|
||
<div class="line"><a name="l05114"></a><span class="lineno"> 5114</span>  </div>
|
||
<div class="line"><a name="l05115"></a><span class="lineno"> 5115</span>  <span class="keyword">using</span> number_integer_t = <span class="keyword">typename</span> BasicJsonType::number_integer_t;</div>
|
||
<div class="line"><a name="l05116"></a><span class="lineno"> 5116</span>  <span class="keyword">using</span> number_unsigned_t = <span class="keyword">typename</span> BasicJsonType::number_unsigned_t;</div>
|
||
<div class="line"><a name="l05117"></a><span class="lineno"> 5117</span>  <span class="keyword">using</span> number_float_t = <span class="keyword">typename</span> BasicJsonType::number_float_t;</div>
|
||
<div class="line"><a name="l05118"></a><span class="lineno"> 5118</span>  <span class="keyword">using</span> string_t = <span class="keyword">typename</span> BasicJsonType::string_t;</div>
|
||
<div class="line"><a name="l05119"></a><span class="lineno"> 5119</span>  <span class="keyword">using</span> exception_t = <span class="keyword">typename</span> BasicJsonType::exception;</div>
|
||
<div class="line"><a name="l05120"></a><span class="lineno"> 5120</span>  </div>
|
||
<div class="line"><a name="l05121"></a><span class="lineno"> 5121</span>  <span class="keyword">public</span>:</div>
|
||
<div class="line"><a name="l05122"></a><span class="lineno"> 5122</span>  static_assert(<a class="code" href="namespacenlohmann_1_1detail.html#a7542b4dbac07817fd4849ecfa4619def">is_detected_exact<bool, null_function_t, SAX>::value</a>,</div>
|
||
<div class="line"><a name="l05123"></a><span class="lineno"> 5123</span>  <span class="stringliteral">"Missing/invalid function: bool null()"</span>);</div>
|
||
<div class="line"><a name="l05124"></a><span class="lineno"> 5124</span>  static_assert(<a class="code" href="namespacenlohmann_1_1detail.html#a7542b4dbac07817fd4849ecfa4619def">is_detected_exact<bool, boolean_function_t, SAX>::value</a>,</div>
|
||
<div class="line"><a name="l05125"></a><span class="lineno"> 5125</span>  <span class="stringliteral">"Missing/invalid function: bool boolean(bool)"</span>);</div>
|
||
<div class="line"><a name="l05126"></a><span class="lineno"> 5126</span>  static_assert(<a class="code" href="namespacenlohmann_1_1detail.html#a7542b4dbac07817fd4849ecfa4619def">is_detected_exact<bool, boolean_function_t, SAX>::value</a>,</div>
|
||
<div class="line"><a name="l05127"></a><span class="lineno"> 5127</span>  <span class="stringliteral">"Missing/invalid function: bool boolean(bool)"</span>);</div>
|
||
<div class="line"><a name="l05128"></a><span class="lineno"> 5128</span>  static_assert(</div>
|
||
<div class="line"><a name="l05129"></a><span class="lineno"> 5129</span>  <a class="code" href="namespacenlohmann_1_1detail.html#a7542b4dbac07817fd4849ecfa4619def">is_detected_exact</a><<span class="keywordtype">bool</span>, <a class="code" href="namespacenlohmann_1_1detail.html#a4a3e14a011b9ea1ff849fc6d2411e6a0">number_integer_function_t</a>, SAX,</div>
|
||
<div class="line"><a name="l05130"></a><span class="lineno"> 5130</span>  number_integer_t>::value,</div>
|
||
<div class="line"><a name="l05131"></a><span class="lineno"> 5131</span>  <span class="stringliteral">"Missing/invalid function: bool number_integer(number_integer_t)"</span>);</div>
|
||
<div class="line"><a name="l05132"></a><span class="lineno"> 5132</span>  static_assert(</div>
|
||
<div class="line"><a name="l05133"></a><span class="lineno"> 5133</span>  <a class="code" href="namespacenlohmann_1_1detail.html#a7542b4dbac07817fd4849ecfa4619def">is_detected_exact</a><<span class="keywordtype">bool</span>, <a class="code" href="namespacenlohmann_1_1detail.html#a74da7b17bda76f65d276feb18209c913">number_unsigned_function_t</a>, SAX,</div>
|
||
<div class="line"><a name="l05134"></a><span class="lineno"> 5134</span>  number_unsigned_t>::value,</div>
|
||
<div class="line"><a name="l05135"></a><span class="lineno"> 5135</span>  <span class="stringliteral">"Missing/invalid function: bool number_unsigned(number_unsigned_t)"</span>);</div>
|
||
<div class="line"><a name="l05136"></a><span class="lineno"> 5136</span>  static_assert(<a class="code" href="namespacenlohmann_1_1detail.html#a7542b4dbac07817fd4849ecfa4619def">is_detected_exact</a><<span class="keywordtype">bool</span>, <a class="code" href="namespacenlohmann_1_1detail.html#ad42df56e913abe26ed556e0e92f386f4">number_float_function_t</a>, SAX,</div>
|
||
<div class="line"><a name="l05137"></a><span class="lineno"> 5137</span>  number_float_t, string_t>::value,</div>
|
||
<div class="line"><a name="l05138"></a><span class="lineno"> 5138</span>  <span class="stringliteral">"Missing/invalid function: bool number_float(number_float_t, const string_t&)"</span>);</div>
|
||
<div class="line"><a name="l05139"></a><span class="lineno"> 5139</span>  static_assert(</div>
|
||
<div class="line"><a name="l05140"></a><span class="lineno"> 5140</span>  <a class="code" href="namespacenlohmann_1_1detail.html#a7542b4dbac07817fd4849ecfa4619def">is_detected_exact<bool, string_function_t, SAX, string_t>::value</a>,</div>
|
||
<div class="line"><a name="l05141"></a><span class="lineno"> 5141</span>  <span class="stringliteral">"Missing/invalid function: bool string(string_t&)"</span>);</div>
|
||
<div class="line"><a name="l05142"></a><span class="lineno"> 5142</span>  static_assert(<a class="code" href="namespacenlohmann_1_1detail.html#a7542b4dbac07817fd4849ecfa4619def">is_detected_exact<bool, start_object_function_t, SAX>::value</a>,</div>
|
||
<div class="line"><a name="l05143"></a><span class="lineno"> 5143</span>  <span class="stringliteral">"Missing/invalid function: bool start_object(std::size_t)"</span>);</div>
|
||
<div class="line"><a name="l05144"></a><span class="lineno"> 5144</span>  static_assert(<a class="code" href="namespacenlohmann_1_1detail.html#a7542b4dbac07817fd4849ecfa4619def">is_detected_exact<bool, key_function_t, SAX, string_t>::value</a>,</div>
|
||
<div class="line"><a name="l05145"></a><span class="lineno"> 5145</span>  <span class="stringliteral">"Missing/invalid function: bool key(string_t&)"</span>);</div>
|
||
<div class="line"><a name="l05146"></a><span class="lineno"> 5146</span>  static_assert(<a class="code" href="namespacenlohmann_1_1detail.html#a7542b4dbac07817fd4849ecfa4619def">is_detected_exact<bool, end_object_function_t, SAX>::value</a>,</div>
|
||
<div class="line"><a name="l05147"></a><span class="lineno"> 5147</span>  <span class="stringliteral">"Missing/invalid function: bool end_object()"</span>);</div>
|
||
<div class="line"><a name="l05148"></a><span class="lineno"> 5148</span>  static_assert(<a class="code" href="namespacenlohmann_1_1detail.html#a7542b4dbac07817fd4849ecfa4619def">is_detected_exact<bool, start_array_function_t, SAX>::value</a>,</div>
|
||
<div class="line"><a name="l05149"></a><span class="lineno"> 5149</span>  <span class="stringliteral">"Missing/invalid function: bool start_array(std::size_t)"</span>);</div>
|
||
<div class="line"><a name="l05150"></a><span class="lineno"> 5150</span>  static_assert(<a class="code" href="namespacenlohmann_1_1detail.html#a7542b4dbac07817fd4849ecfa4619def">is_detected_exact<bool, end_array_function_t, SAX>::value</a>,</div>
|
||
<div class="line"><a name="l05151"></a><span class="lineno"> 5151</span>  <span class="stringliteral">"Missing/invalid function: bool end_array()"</span>);</div>
|
||
<div class="line"><a name="l05152"></a><span class="lineno"> 5152</span>  static_assert(</div>
|
||
<div class="line"><a name="l05153"></a><span class="lineno"> 5153</span>  <a class="code" href="namespacenlohmann_1_1detail.html#a7542b4dbac07817fd4849ecfa4619def">is_detected_exact<bool, parse_error_function_t, SAX, exception_t>::value</a>,</div>
|
||
<div class="line"><a name="l05154"></a><span class="lineno"> 5154</span>  <span class="stringliteral">"Missing/invalid function: bool parse_error(std::size_t, const "</span></div>
|
||
<div class="line"><a name="l05155"></a><span class="lineno"> 5155</span>  <span class="stringliteral">"std::string&, const exception&)"</span>);</div>
|
||
<div class="line"><a name="l05156"></a><span class="lineno"> 5156</span> };</div>
|
||
<div class="line"><a name="l05157"></a><span class="lineno"> 5157</span> } <span class="comment">// namespace detail</span></div>
|
||
<div class="line"><a name="l05158"></a><span class="lineno"> 5158</span> } <span class="comment">// namespace nlohmann</span></div>
|
||
<div class="line"><a name="l05159"></a><span class="lineno"> 5159</span>  </div>
|
||
<div class="line"><a name="l05160"></a><span class="lineno"> 5160</span> <span class="comment">// #include <nlohmann/detail/value_t.hpp></span></div>
|
||
<div class="line"><a name="l05161"></a><span class="lineno"> 5161</span>  </div>
|
||
<div class="line"><a name="l05162"></a><span class="lineno"> 5162</span>  </div>
|
||
<div class="line"><a name="l05163"></a><span class="lineno"> 5163</span> <span class="keyword">namespace </span><a class="code" href="namespacenlohmann.html">nlohmann</a></div>
|
||
<div class="line"><a name="l05164"></a><span class="lineno"> 5164</span> {</div>
|
||
<div class="line"><a name="l05165"></a><span class="lineno"> 5165</span> <span class="keyword">namespace </span>detail</div>
|
||
<div class="line"><a name="l05166"></a><span class="lineno"> 5166</span> {</div>
|
||
<div class="line"><a name="l05168"></a><span class="lineno"> 5168</span> <span class="comment">// binary reader //</span></div>
|
||
<div class="line"><a name="l05170"></a><span class="lineno"> 5170</span> <span class="comment"></span> </div>
|
||
<div class="line"><a name="l05174"></a><span class="lineno"> 5174</span> <span class="keyword">template</span><<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> SAX = json_sax_dom_parser<BasicJsonType>></div>
|
||
<div class="line"><a name="l05175"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1binary__reader.html"> 5175</a></span> <span class="keyword">class </span><a class="code" href="classnlohmann_1_1detail_1_1binary__reader.html">binary_reader</a></div>
|
||
<div class="line"><a name="l05176"></a><span class="lineno"> 5176</span> {</div>
|
||
<div class="line"><a name="l05177"></a><span class="lineno"> 5177</span>  <span class="keyword">using</span> number_integer_t = <span class="keyword">typename</span> BasicJsonType::number_integer_t;</div>
|
||
<div class="line"><a name="l05178"></a><span class="lineno"> 5178</span>  <span class="keyword">using</span> number_unsigned_t = <span class="keyword">typename</span> BasicJsonType::number_unsigned_t;</div>
|
||
<div class="line"><a name="l05179"></a><span class="lineno"> 5179</span>  <span class="keyword">using</span> number_float_t = <span class="keyword">typename</span> BasicJsonType::number_float_t;</div>
|
||
<div class="line"><a name="l05180"></a><span class="lineno"> 5180</span>  <span class="keyword">using</span> string_t = <span class="keyword">typename</span> BasicJsonType::string_t;</div>
|
||
<div class="line"><a name="l05181"></a><span class="lineno"> 5181</span>  <span class="keyword">using</span> json_sax_t = SAX;</div>
|
||
<div class="line"><a name="l05182"></a><span class="lineno"> 5182</span>  </div>
|
||
<div class="line"><a name="l05183"></a><span class="lineno"> 5183</span>  <span class="keyword">public</span>:</div>
|
||
<div class="line"><a name="l05189"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1binary__reader.html#aed84f0302eb232d3b69f7653bef2337a"> 5189</a></span>  <span class="keyword">explicit</span> <a class="code" href="classnlohmann_1_1detail_1_1binary__reader.html#aed84f0302eb232d3b69f7653bef2337a">binary_reader</a>(<a class="code" href="namespacenlohmann_1_1detail.html#ae132f8cd5bb24c5e9b40ad0eafedf1c2">input_adapter_t</a> adapter) : ia(<a class="code" href="namespacestd.html">std</a>::move(adapter))</div>
|
||
<div class="line"><a name="l05190"></a><span class="lineno"> 5190</span>  {</div>
|
||
<div class="line"><a name="l05191"></a><span class="lineno"> 5191</span>  (<a class="code" href="namespacenlohmann_1_1detail.html#a59fca69799f6b9e366710cb9043aa77d">void</a>)<a class="code" href="structnlohmann_1_1detail_1_1is__sax__static__asserts.html">detail::is_sax_static_asserts<SAX, BasicJsonType></a> {};</div>
|
||
<div class="line"><a name="l05192"></a><span class="lineno"> 5192</span>  assert(ia);</div>
|
||
<div class="line"><a name="l05193"></a><span class="lineno"> 5193</span>  }</div>
|
||
<div class="line"><a name="l05194"></a><span class="lineno"> 5194</span>  </div>
|
||
<div class="line"><a name="l05195"></a><span class="lineno"> 5195</span>  <span class="comment">// make class move-only</span></div>
|
||
<div class="line"><a name="l05196"></a><span class="lineno"> 5196</span>  <a class="code" href="classnlohmann_1_1detail_1_1binary__reader.html#aed84f0302eb232d3b69f7653bef2337a">binary_reader</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1binary__reader.html">binary_reader</a>&) = <span class="keyword">delete</span>;</div>
|
||
<div class="line"><a name="l05197"></a><span class="lineno"> 5197</span>  <a class="code" href="classnlohmann_1_1detail_1_1binary__reader.html#aed84f0302eb232d3b69f7653bef2337a">binary_reader</a>(<a class="code" href="classnlohmann_1_1detail_1_1binary__reader.html">binary_reader</a>&&) = <span class="keywordflow">default</span>;</div>
|
||
<div class="line"><a name="l05198"></a><span class="lineno"> 5198</span>  <a class="code" href="classnlohmann_1_1detail_1_1binary__reader.html">binary_reader</a>& <a class="code" href="classnlohmann_1_1detail_1_1binary__reader.html#a87826b833ee7fec146c97233bb0f6ab8">operator=</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1binary__reader.html">binary_reader</a>&) = <span class="keyword">delete</span>;</div>
|
||
<div class="line"><a name="l05199"></a><span class="lineno"> 5199</span>  <a class="code" href="classnlohmann_1_1detail_1_1binary__reader.html">binary_reader</a>& <a class="code" href="classnlohmann_1_1detail_1_1binary__reader.html#a87826b833ee7fec146c97233bb0f6ab8">operator=</a>(<a class="code" href="classnlohmann_1_1detail_1_1binary__reader.html">binary_reader</a>&&) = <span class="keywordflow">default</span>;</div>
|
||
<div class="line"><a name="l05200"></a><span class="lineno"> 5200</span>  <a class="code" href="classnlohmann_1_1detail_1_1binary__reader.html#a18e0a63e22dbdad5f6964276b81b813a">~binary_reader</a>() = <span class="keywordflow">default</span>;</div>
|
||
<div class="line"><a name="l05201"></a><span class="lineno"> 5201</span>  </div>
|
||
<div class="line"><a name="l05209"></a><span class="lineno"> 5209</span>  <a class="code" href="json_8hpp.html#a5338981b5ad9027c9e54b1c5597f4344">JSON_HEDLEY_NON_NULL</a>(3)</div>
|
||
<div class="line"><a name="l05210"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1binary__reader.html#ab94a54d6e595c2620b07589cf4116256"> 5210</a></span>  bool <a class="code" href="classnlohmann_1_1detail_1_1binary__reader.html#ab94a54d6e595c2620b07589cf4116256">sax_parse</a>(const <a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40">input_format_t</a> format,</div>
|
||
<div class="line"><a name="l05211"></a><span class="lineno"> 5211</span>  json_sax_t* sax_,</div>
|
||
<div class="line"><a name="l05212"></a><span class="lineno"> 5212</span>  const <span class="keywordtype">bool</span> strict = true)</div>
|
||
<div class="line"><a name="l05213"></a><span class="lineno"> 5213</span>  {</div>
|
||
<div class="line"><a name="l05214"></a><span class="lineno"> 5214</span>  sax = sax_;</div>
|
||
<div class="line"><a name="l05215"></a><span class="lineno"> 5215</span>  <span class="keywordtype">bool</span> result = <span class="keyword">false</span>;</div>
|
||
<div class="line"><a name="l05216"></a><span class="lineno"> 5216</span>  </div>
|
||
<div class="line"><a name="l05217"></a><span class="lineno"> 5217</span>  <span class="keywordflow">switch</span> (format)</div>
|
||
<div class="line"><a name="l05218"></a><span class="lineno"> 5218</span>  {</div>
|
||
<div class="line"><a name="l05219"></a><span class="lineno"> 5219</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a0b6879b186bfb2b1ec65d2460e4eccd4">input_format_t::bson</a>:</div>
|
||
<div class="line"><a name="l05220"></a><span class="lineno"> 5220</span>  result = parse_bson_internal();</div>
|
||
<div class="line"><a name="l05221"></a><span class="lineno"> 5221</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l05222"></a><span class="lineno"> 5222</span>  </div>
|
||
<div class="line"><a name="l05223"></a><span class="lineno"> 5223</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40aaf9de350d652f0c9055ddab514bd23ea">input_format_t::cbor</a>:</div>
|
||
<div class="line"><a name="l05224"></a><span class="lineno"> 5224</span>  result = parse_cbor_internal();</div>
|
||
<div class="line"><a name="l05225"></a><span class="lineno"> 5225</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l05226"></a><span class="lineno"> 5226</span>  </div>
|
||
<div class="line"><a name="l05227"></a><span class="lineno"> 5227</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40ac40d516627022a54003ac2b74a82688a">input_format_t::msgpack</a>:</div>
|
||
<div class="line"><a name="l05228"></a><span class="lineno"> 5228</span>  result = parse_msgpack_internal();</div>
|
||
<div class="line"><a name="l05229"></a><span class="lineno"> 5229</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l05230"></a><span class="lineno"> 5230</span>  </div>
|
||
<div class="line"><a name="l05231"></a><span class="lineno"> 5231</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a4537f20910e85437f6d07701864084e8">input_format_t::ubjson</a>:</div>
|
||
<div class="line"><a name="l05232"></a><span class="lineno"> 5232</span>  result = parse_ubjson_internal();</div>
|
||
<div class="line"><a name="l05233"></a><span class="lineno"> 5233</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l05234"></a><span class="lineno"> 5234</span>  </div>
|
||
<div class="line"><a name="l05235"></a><span class="lineno"> 5235</span>  <span class="keywordflow">default</span>: <span class="comment">// LCOV_EXCL_LINE</span></div>
|
||
<div class="line"><a name="l05236"></a><span class="lineno"> 5236</span>  assert(<span class="keyword">false</span>); <span class="comment">// LCOV_EXCL_LINE</span></div>
|
||
<div class="line"><a name="l05237"></a><span class="lineno"> 5237</span>  }</div>
|
||
<div class="line"><a name="l05238"></a><span class="lineno"> 5238</span>  </div>
|
||
<div class="line"><a name="l05239"></a><span class="lineno"> 5239</span>  <span class="comment">// strict mode: next byte must be EOF</span></div>
|
||
<div class="line"><a name="l05240"></a><span class="lineno"> 5240</span>  <span class="keywordflow">if</span> (result and <a class="code" href="namespacenlohmann_1_1detail.html#a5a76b60b26dc8c47256a996d18d967dfa2133fd717402a7966ee88d06f9e0b792">strict</a>)</div>
|
||
<div class="line"><a name="l05241"></a><span class="lineno"> 5241</span>  {</div>
|
||
<div class="line"><a name="l05242"></a><span class="lineno"> 5242</span>  <span class="keywordflow">if</span> (format == <a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a4537f20910e85437f6d07701864084e8">input_format_t::ubjson</a>)</div>
|
||
<div class="line"><a name="l05243"></a><span class="lineno"> 5243</span>  {</div>
|
||
<div class="line"><a name="l05244"></a><span class="lineno"> 5244</span>  get_ignore_noop();</div>
|
||
<div class="line"><a name="l05245"></a><span class="lineno"> 5245</span>  }</div>
|
||
<div class="line"><a name="l05246"></a><span class="lineno"> 5246</span>  <span class="keywordflow">else</span></div>
|
||
<div class="line"><a name="l05247"></a><span class="lineno"> 5247</span>  {</div>
|
||
<div class="line"><a name="l05248"></a><span class="lineno"> 5248</span>  get();</div>
|
||
<div class="line"><a name="l05249"></a><span class="lineno"> 5249</span>  }</div>
|
||
<div class="line"><a name="l05250"></a><span class="lineno"> 5250</span>  </div>
|
||
<div class="line"><a name="l05251"></a><span class="lineno"> 5251</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(current != std::char_traits<char>::eof()))</div>
|
||
<div class="line"><a name="l05252"></a><span class="lineno"> 5252</span>  {</div>
|
||
<div class="line"><a name="l05253"></a><span class="lineno"> 5253</span>  <span class="keywordflow">return</span> sax->parse_error(chars_read, get_token_string(),</div>
|
||
<div class="line"><a name="l05254"></a><span class="lineno"> 5254</span>  <a class="code" href="classnlohmann_1_1detail_1_1parse__error.html#a137ea4d27de45d8a844fd13451d40f3d">parse_error::create</a>(110, chars_read, exception_message(format, <span class="stringliteral">"expected end of input; last byte: 0x"</span> + get_token_string(), <span class="stringliteral">"value"</span>)));</div>
|
||
<div class="line"><a name="l05255"></a><span class="lineno"> 5255</span>  }</div>
|
||
<div class="line"><a name="l05256"></a><span class="lineno"> 5256</span>  }</div>
|
||
<div class="line"><a name="l05257"></a><span class="lineno"> 5257</span>  </div>
|
||
<div class="line"><a name="l05258"></a><span class="lineno"> 5258</span>  <span class="keywordflow">return</span> result;</div>
|
||
<div class="line"><a name="l05259"></a><span class="lineno"> 5259</span>  }</div>
|
||
<div class="line"><a name="l05260"></a><span class="lineno"> 5260</span>  </div>
|
||
<div class="line"><a name="l05268"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1binary__reader.html#a1e31dbfcf9567c8c2d4f0e4eb1b0230a"> 5268</a></span>  <span class="keyword">static</span> constexpr <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1detail_1_1binary__reader.html#a1e31dbfcf9567c8c2d4f0e4eb1b0230a">little_endianess</a>(<span class="keywordtype">int</span> num = 1) noexcept</div>
|
||
<div class="line"><a name="l05269"></a><span class="lineno"> 5269</span>  {</div>
|
||
<div class="line"><a name="l05270"></a><span class="lineno"> 5270</span>  <span class="keywordflow">return</span> *<span class="keyword">reinterpret_cast<</span><span class="keywordtype">char</span>*<span class="keyword">></span>(&num) == 1;</div>
|
||
<div class="line"><a name="l05271"></a><span class="lineno"> 5271</span>  }</div>
|
||
<div class="line"><a name="l05272"></a><span class="lineno"> 5272</span>  </div>
|
||
<div class="line"><a name="l05273"></a><span class="lineno"> 5273</span>  <span class="keyword">private</span>:</div>
|
||
<div class="line"><a name="l05275"></a><span class="lineno"> 5275</span>  <span class="comment">// BSON //</span></div>
|
||
<div class="line"><a name="l05277"></a><span class="lineno"> 5277</span> <span class="comment"></span> </div>
|
||
<div class="line"><a name="l05282"></a><span class="lineno"> 5282</span>  <span class="keywordtype">bool</span> parse_bson_internal()</div>
|
||
<div class="line"><a name="l05283"></a><span class="lineno"> 5283</span>  {</div>
|
||
<div class="line"><a name="l05284"></a><span class="lineno"> 5284</span>  std::int32_t document_size;</div>
|
||
<div class="line"><a name="l05285"></a><span class="lineno"> 5285</span>  get_number<std::int32_t, true>(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a0b6879b186bfb2b1ec65d2460e4eccd4">input_format_t::bson</a>, document_size);</div>
|
||
<div class="line"><a name="l05286"></a><span class="lineno"> 5286</span>  </div>
|
||
<div class="line"><a name="l05287"></a><span class="lineno"> 5287</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not sax->start_object(std::size_t(-1))))</div>
|
||
<div class="line"><a name="l05288"></a><span class="lineno"> 5288</span>  {</div>
|
||
<div class="line"><a name="l05289"></a><span class="lineno"> 5289</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||
<div class="line"><a name="l05290"></a><span class="lineno"> 5290</span>  }</div>
|
||
<div class="line"><a name="l05291"></a><span class="lineno"> 5291</span>  </div>
|
||
<div class="line"><a name="l05292"></a><span class="lineno"> 5292</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not parse_bson_element_list(<span class="comment">/*is_array*/</span><span class="keyword">false</span>)))</div>
|
||
<div class="line"><a name="l05293"></a><span class="lineno"> 5293</span>  {</div>
|
||
<div class="line"><a name="l05294"></a><span class="lineno"> 5294</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||
<div class="line"><a name="l05295"></a><span class="lineno"> 5295</span>  }</div>
|
||
<div class="line"><a name="l05296"></a><span class="lineno"> 5296</span>  </div>
|
||
<div class="line"><a name="l05297"></a><span class="lineno"> 5297</span>  <span class="keywordflow">return</span> sax->end_object();</div>
|
||
<div class="line"><a name="l05298"></a><span class="lineno"> 5298</span>  }</div>
|
||
<div class="line"><a name="l05299"></a><span class="lineno"> 5299</span>  </div>
|
||
<div class="line"><a name="l05307"></a><span class="lineno"> 5307</span>  <span class="keywordtype">bool</span> get_bson_cstr(string_t& result)</div>
|
||
<div class="line"><a name="l05308"></a><span class="lineno"> 5308</span>  {</div>
|
||
<div class="line"><a name="l05309"></a><span class="lineno"> 5309</span>  <span class="keyword">auto</span> out = std::back_inserter(result);</div>
|
||
<div class="line"><a name="l05310"></a><span class="lineno"> 5310</span>  <span class="keywordflow">while</span> (<span class="keyword">true</span>)</div>
|
||
<div class="line"><a name="l05311"></a><span class="lineno"> 5311</span>  {</div>
|
||
<div class="line"><a name="l05312"></a><span class="lineno"> 5312</span>  get();</div>
|
||
<div class="line"><a name="l05313"></a><span class="lineno"> 5313</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not unexpect_eof(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a0b6879b186bfb2b1ec65d2460e4eccd4">input_format_t::bson</a>, <span class="stringliteral">"cstring"</span>)))</div>
|
||
<div class="line"><a name="l05314"></a><span class="lineno"> 5314</span>  {</div>
|
||
<div class="line"><a name="l05315"></a><span class="lineno"> 5315</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||
<div class="line"><a name="l05316"></a><span class="lineno"> 5316</span>  }</div>
|
||
<div class="line"><a name="l05317"></a><span class="lineno"> 5317</span>  <span class="keywordflow">if</span> (current == 0x00)</div>
|
||
<div class="line"><a name="l05318"></a><span class="lineno"> 5318</span>  {</div>
|
||
<div class="line"><a name="l05319"></a><span class="lineno"> 5319</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
||
<div class="line"><a name="l05320"></a><span class="lineno"> 5320</span>  }</div>
|
||
<div class="line"><a name="l05321"></a><span class="lineno"> 5321</span>  *out++ = <span class="keyword">static_cast<</span><span class="keywordtype">char</span><span class="keyword">></span>(current);</div>
|
||
<div class="line"><a name="l05322"></a><span class="lineno"> 5322</span>  }</div>
|
||
<div class="line"><a name="l05323"></a><span class="lineno"> 5323</span>  </div>
|
||
<div class="line"><a name="l05324"></a><span class="lineno"> 5324</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
||
<div class="line"><a name="l05325"></a><span class="lineno"> 5325</span>  }</div>
|
||
<div class="line"><a name="l05326"></a><span class="lineno"> 5326</span>  </div>
|
||
<div class="line"><a name="l05338"></a><span class="lineno"> 5338</span>  <span class="keyword">template</span><<span class="keyword">typename</span> NumberType></div>
|
||
<div class="line"><a name="l05339"></a><span class="lineno"> 5339</span>  <span class="keywordtype">bool</span> get_bson_string(<span class="keyword">const</span> NumberType len, string_t& result)</div>
|
||
<div class="line"><a name="l05340"></a><span class="lineno"> 5340</span>  {</div>
|
||
<div class="line"><a name="l05341"></a><span class="lineno"> 5341</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(len < 1))</div>
|
||
<div class="line"><a name="l05342"></a><span class="lineno"> 5342</span>  {</div>
|
||
<div class="line"><a name="l05343"></a><span class="lineno"> 5343</span>  <span class="keyword">auto</span> last_token = get_token_string();</div>
|
||
<div class="line"><a name="l05344"></a><span class="lineno"> 5344</span>  <span class="keywordflow">return</span> sax->parse_error(chars_read, last_token, <a class="code" href="classnlohmann_1_1detail_1_1parse__error.html#a137ea4d27de45d8a844fd13451d40f3d">parse_error::create</a>(112, chars_read, exception_message(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a0b6879b186bfb2b1ec65d2460e4eccd4">input_format_t::bson</a>, <span class="stringliteral">"string length must be at least 1, is "</span> + <a class="code" href="namespacenlohmann.html#a6ce645a0b8717757e096a5b5773b7a16">std::to_string</a>(len), <span class="stringliteral">"string"</span>)));</div>
|
||
<div class="line"><a name="l05345"></a><span class="lineno"> 5345</span>  }</div>
|
||
<div class="line"><a name="l05346"></a><span class="lineno"> 5346</span>  </div>
|
||
<div class="line"><a name="l05347"></a><span class="lineno"> 5347</span>  <span class="keywordflow">return</span> get_string(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a0b6879b186bfb2b1ec65d2460e4eccd4">input_format_t::bson</a>, len - <span class="keyword">static_cast<</span>NumberType<span class="keyword">></span>(1), result) and get() != std::char_traits<char>::eof();</div>
|
||
<div class="line"><a name="l05348"></a><span class="lineno"> 5348</span>  }</div>
|
||
<div class="line"><a name="l05349"></a><span class="lineno"> 5349</span>  </div>
|
||
<div class="line"><a name="l05360"></a><span class="lineno"> 5360</span>  <span class="keywordtype">bool</span> parse_bson_element_internal(<span class="keyword">const</span> <span class="keywordtype">int</span> element_type,</div>
|
||
<div class="line"><a name="l05361"></a><span class="lineno"> 5361</span>  <span class="keyword">const</span> std::size_t element_type_parse_position)</div>
|
||
<div class="line"><a name="l05362"></a><span class="lineno"> 5362</span>  {</div>
|
||
<div class="line"><a name="l05363"></a><span class="lineno"> 5363</span>  <span class="keywordflow">switch</span> (element_type)</div>
|
||
<div class="line"><a name="l05364"></a><span class="lineno"> 5364</span>  {</div>
|
||
<div class="line"><a name="l05365"></a><span class="lineno"> 5365</span>  <span class="keywordflow">case</span> 0x01: <span class="comment">// double</span></div>
|
||
<div class="line"><a name="l05366"></a><span class="lineno"> 5366</span>  {</div>
|
||
<div class="line"><a name="l05367"></a><span class="lineno"> 5367</span>  <span class="keywordtype">double</span> number;</div>
|
||
<div class="line"><a name="l05368"></a><span class="lineno"> 5368</span>  <span class="keywordflow">return</span> get_number<double, true>(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a0b6879b186bfb2b1ec65d2460e4eccd4">input_format_t::bson</a>, number) and sax->number_float(<span class="keyword">static_cast<</span>number_float_t<span class="keyword">></span>(number), <span class="stringliteral">""</span>);</div>
|
||
<div class="line"><a name="l05369"></a><span class="lineno"> 5369</span>  }</div>
|
||
<div class="line"><a name="l05370"></a><span class="lineno"> 5370</span>  </div>
|
||
<div class="line"><a name="l05371"></a><span class="lineno"> 5371</span>  <span class="keywordflow">case</span> 0x02: <span class="comment">// string</span></div>
|
||
<div class="line"><a name="l05372"></a><span class="lineno"> 5372</span>  {</div>
|
||
<div class="line"><a name="l05373"></a><span class="lineno"> 5373</span>  std::int32_t len;</div>
|
||
<div class="line"><a name="l05374"></a><span class="lineno"> 5374</span>  string_t value;</div>
|
||
<div class="line"><a name="l05375"></a><span class="lineno"> 5375</span>  <span class="keywordflow">return</span> get_number<std::int32_t, true>(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a0b6879b186bfb2b1ec65d2460e4eccd4">input_format_t::bson</a>, len) and get_bson_string(len, value) and sax->string(value);</div>
|
||
<div class="line"><a name="l05376"></a><span class="lineno"> 5376</span>  }</div>
|
||
<div class="line"><a name="l05377"></a><span class="lineno"> 5377</span>  </div>
|
||
<div class="line"><a name="l05378"></a><span class="lineno"> 5378</span>  <span class="keywordflow">case</span> 0x03: <span class="comment">// object</span></div>
|
||
<div class="line"><a name="l05379"></a><span class="lineno"> 5379</span>  {</div>
|
||
<div class="line"><a name="l05380"></a><span class="lineno"> 5380</span>  <span class="keywordflow">return</span> parse_bson_internal();</div>
|
||
<div class="line"><a name="l05381"></a><span class="lineno"> 5381</span>  }</div>
|
||
<div class="line"><a name="l05382"></a><span class="lineno"> 5382</span>  </div>
|
||
<div class="line"><a name="l05383"></a><span class="lineno"> 5383</span>  <span class="keywordflow">case</span> 0x04: <span class="comment">// array</span></div>
|
||
<div class="line"><a name="l05384"></a><span class="lineno"> 5384</span>  {</div>
|
||
<div class="line"><a name="l05385"></a><span class="lineno"> 5385</span>  <span class="keywordflow">return</span> parse_bson_array();</div>
|
||
<div class="line"><a name="l05386"></a><span class="lineno"> 5386</span>  }</div>
|
||
<div class="line"><a name="l05387"></a><span class="lineno"> 5387</span>  </div>
|
||
<div class="line"><a name="l05388"></a><span class="lineno"> 5388</span>  <span class="keywordflow">case</span> 0x08: <span class="comment">// boolean</span></div>
|
||
<div class="line"><a name="l05389"></a><span class="lineno"> 5389</span>  {</div>
|
||
<div class="line"><a name="l05390"></a><span class="lineno"> 5390</span>  <span class="keywordflow">return</span> sax->boolean(get() != 0);</div>
|
||
<div class="line"><a name="l05391"></a><span class="lineno"> 5391</span>  }</div>
|
||
<div class="line"><a name="l05392"></a><span class="lineno"> 5392</span>  </div>
|
||
<div class="line"><a name="l05393"></a><span class="lineno"> 5393</span>  <span class="keywordflow">case</span> 0x0A: <span class="comment">// null</span></div>
|
||
<div class="line"><a name="l05394"></a><span class="lineno"> 5394</span>  {</div>
|
||
<div class="line"><a name="l05395"></a><span class="lineno"> 5395</span>  <span class="keywordflow">return</span> sax->null();</div>
|
||
<div class="line"><a name="l05396"></a><span class="lineno"> 5396</span>  }</div>
|
||
<div class="line"><a name="l05397"></a><span class="lineno"> 5397</span>  </div>
|
||
<div class="line"><a name="l05398"></a><span class="lineno"> 5398</span>  <span class="keywordflow">case</span> 0x10: <span class="comment">// int32</span></div>
|
||
<div class="line"><a name="l05399"></a><span class="lineno"> 5399</span>  {</div>
|
||
<div class="line"><a name="l05400"></a><span class="lineno"> 5400</span>  std::int32_t value;</div>
|
||
<div class="line"><a name="l05401"></a><span class="lineno"> 5401</span>  <span class="keywordflow">return</span> get_number<std::int32_t, true>(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a0b6879b186bfb2b1ec65d2460e4eccd4">input_format_t::bson</a>, value) and sax->number_integer(value);</div>
|
||
<div class="line"><a name="l05402"></a><span class="lineno"> 5402</span>  }</div>
|
||
<div class="line"><a name="l05403"></a><span class="lineno"> 5403</span>  </div>
|
||
<div class="line"><a name="l05404"></a><span class="lineno"> 5404</span>  <span class="keywordflow">case</span> 0x12: <span class="comment">// int64</span></div>
|
||
<div class="line"><a name="l05405"></a><span class="lineno"> 5405</span>  {</div>
|
||
<div class="line"><a name="l05406"></a><span class="lineno"> 5406</span>  std::int64_t value;</div>
|
||
<div class="line"><a name="l05407"></a><span class="lineno"> 5407</span>  <span class="keywordflow">return</span> get_number<std::int64_t, true>(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a0b6879b186bfb2b1ec65d2460e4eccd4">input_format_t::bson</a>, value) and sax->number_integer(value);</div>
|
||
<div class="line"><a name="l05408"></a><span class="lineno"> 5408</span>  }</div>
|
||
<div class="line"><a name="l05409"></a><span class="lineno"> 5409</span>  </div>
|
||
<div class="line"><a name="l05410"></a><span class="lineno"> 5410</span>  <span class="keywordflow">default</span>: <span class="comment">// anything else not supported (yet)</span></div>
|
||
<div class="line"><a name="l05411"></a><span class="lineno"> 5411</span>  {</div>
|
||
<div class="line"><a name="l05412"></a><span class="lineno"> 5412</span>  std::array<char, 3> cr{{}};</div>
|
||
<div class="line"><a name="l05413"></a><span class="lineno"> 5413</span>  (std::snprintf)(cr.data(), cr.size(), <span class="stringliteral">"%.2hhX"</span>, <span class="keyword">static_cast<</span><span class="keywordtype">unsigned</span> <span class="keywordtype">char</span><span class="keyword">></span>(element_type));</div>
|
||
<div class="line"><a name="l05414"></a><span class="lineno"> 5414</span>  <span class="keywordflow">return</span> sax->parse_error(element_type_parse_position, std::string(cr.data()), <a class="code" href="classnlohmann_1_1detail_1_1parse__error.html#a137ea4d27de45d8a844fd13451d40f3d">parse_error::create</a>(114, element_type_parse_position, <span class="stringliteral">"Unsupported BSON record type 0x"</span> + std::string(cr.data())));</div>
|
||
<div class="line"><a name="l05415"></a><span class="lineno"> 5415</span>  }</div>
|
||
<div class="line"><a name="l05416"></a><span class="lineno"> 5416</span>  }</div>
|
||
<div class="line"><a name="l05417"></a><span class="lineno"> 5417</span>  }</div>
|
||
<div class="line"><a name="l05418"></a><span class="lineno"> 5418</span>  </div>
|
||
<div class="line"><a name="l05431"></a><span class="lineno"> 5431</span>  <span class="keywordtype">bool</span> parse_bson_element_list(<span class="keyword">const</span> <span class="keywordtype">bool</span> is_array)</div>
|
||
<div class="line"><a name="l05432"></a><span class="lineno"> 5432</span>  {</div>
|
||
<div class="line"><a name="l05433"></a><span class="lineno"> 5433</span>  string_t key;</div>
|
||
<div class="line"><a name="l05434"></a><span class="lineno"> 5434</span>  <span class="keywordflow">while</span> (<span class="keywordtype">int</span> element_type = get())</div>
|
||
<div class="line"><a name="l05435"></a><span class="lineno"> 5435</span>  {</div>
|
||
<div class="line"><a name="l05436"></a><span class="lineno"> 5436</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not unexpect_eof(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a0b6879b186bfb2b1ec65d2460e4eccd4">input_format_t::bson</a>, <span class="stringliteral">"element list"</span>)))</div>
|
||
<div class="line"><a name="l05437"></a><span class="lineno"> 5437</span>  {</div>
|
||
<div class="line"><a name="l05438"></a><span class="lineno"> 5438</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||
<div class="line"><a name="l05439"></a><span class="lineno"> 5439</span>  }</div>
|
||
<div class="line"><a name="l05440"></a><span class="lineno"> 5440</span>  </div>
|
||
<div class="line"><a name="l05441"></a><span class="lineno"> 5441</span>  <span class="keyword">const</span> std::size_t element_type_parse_position = chars_read;</div>
|
||
<div class="line"><a name="l05442"></a><span class="lineno"> 5442</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not get_bson_cstr(key)))</div>
|
||
<div class="line"><a name="l05443"></a><span class="lineno"> 5443</span>  {</div>
|
||
<div class="line"><a name="l05444"></a><span class="lineno"> 5444</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||
<div class="line"><a name="l05445"></a><span class="lineno"> 5445</span>  }</div>
|
||
<div class="line"><a name="l05446"></a><span class="lineno"> 5446</span>  </div>
|
||
<div class="line"><a name="l05447"></a><span class="lineno"> 5447</span>  <span class="keywordflow">if</span> (not is_array and not sax->key(key))</div>
|
||
<div class="line"><a name="l05448"></a><span class="lineno"> 5448</span>  {</div>
|
||
<div class="line"><a name="l05449"></a><span class="lineno"> 5449</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||
<div class="line"><a name="l05450"></a><span class="lineno"> 5450</span>  }</div>
|
||
<div class="line"><a name="l05451"></a><span class="lineno"> 5451</span>  </div>
|
||
<div class="line"><a name="l05452"></a><span class="lineno"> 5452</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not parse_bson_element_internal(element_type, element_type_parse_position)))</div>
|
||
<div class="line"><a name="l05453"></a><span class="lineno"> 5453</span>  {</div>
|
||
<div class="line"><a name="l05454"></a><span class="lineno"> 5454</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||
<div class="line"><a name="l05455"></a><span class="lineno"> 5455</span>  }</div>
|
||
<div class="line"><a name="l05456"></a><span class="lineno"> 5456</span>  </div>
|
||
<div class="line"><a name="l05457"></a><span class="lineno"> 5457</span>  <span class="comment">// get_bson_cstr only appends</span></div>
|
||
<div class="line"><a name="l05458"></a><span class="lineno"> 5458</span>  key.clear();</div>
|
||
<div class="line"><a name="l05459"></a><span class="lineno"> 5459</span>  }</div>
|
||
<div class="line"><a name="l05460"></a><span class="lineno"> 5460</span>  </div>
|
||
<div class="line"><a name="l05461"></a><span class="lineno"> 5461</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
||
<div class="line"><a name="l05462"></a><span class="lineno"> 5462</span>  }</div>
|
||
<div class="line"><a name="l05463"></a><span class="lineno"> 5463</span>  </div>
|
||
<div class="line"><a name="l05468"></a><span class="lineno"> 5468</span>  <span class="keywordtype">bool</span> parse_bson_array()</div>
|
||
<div class="line"><a name="l05469"></a><span class="lineno"> 5469</span>  {</div>
|
||
<div class="line"><a name="l05470"></a><span class="lineno"> 5470</span>  std::int32_t document_size;</div>
|
||
<div class="line"><a name="l05471"></a><span class="lineno"> 5471</span>  get_number<std::int32_t, true>(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a0b6879b186bfb2b1ec65d2460e4eccd4">input_format_t::bson</a>, document_size);</div>
|
||
<div class="line"><a name="l05472"></a><span class="lineno"> 5472</span>  </div>
|
||
<div class="line"><a name="l05473"></a><span class="lineno"> 5473</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not sax->start_array(std::size_t(-1))))</div>
|
||
<div class="line"><a name="l05474"></a><span class="lineno"> 5474</span>  {</div>
|
||
<div class="line"><a name="l05475"></a><span class="lineno"> 5475</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||
<div class="line"><a name="l05476"></a><span class="lineno"> 5476</span>  }</div>
|
||
<div class="line"><a name="l05477"></a><span class="lineno"> 5477</span>  </div>
|
||
<div class="line"><a name="l05478"></a><span class="lineno"> 5478</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not parse_bson_element_list(<span class="comment">/*is_array*/</span><span class="keyword">true</span>)))</div>
|
||
<div class="line"><a name="l05479"></a><span class="lineno"> 5479</span>  {</div>
|
||
<div class="line"><a name="l05480"></a><span class="lineno"> 5480</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||
<div class="line"><a name="l05481"></a><span class="lineno"> 5481</span>  }</div>
|
||
<div class="line"><a name="l05482"></a><span class="lineno"> 5482</span>  </div>
|
||
<div class="line"><a name="l05483"></a><span class="lineno"> 5483</span>  <span class="keywordflow">return</span> sax->end_array();</div>
|
||
<div class="line"><a name="l05484"></a><span class="lineno"> 5484</span>  }</div>
|
||
<div class="line"><a name="l05485"></a><span class="lineno"> 5485</span>  </div>
|
||
<div class="line"><a name="l05487"></a><span class="lineno"> 5487</span>  <span class="comment">// CBOR //</span></div>
|
||
<div class="line"><a name="l05489"></a><span class="lineno"> 5489</span> <span class="comment"></span> </div>
|
||
<div class="line"><a name="l05497"></a><span class="lineno"> 5497</span>  <span class="keywordtype">bool</span> parse_cbor_internal(<span class="keyword">const</span> <span class="keywordtype">bool</span> get_char = <span class="keyword">true</span>)</div>
|
||
<div class="line"><a name="l05498"></a><span class="lineno"> 5498</span>  {</div>
|
||
<div class="line"><a name="l05499"></a><span class="lineno"> 5499</span>  <span class="keywordflow">switch</span> (get_char ? get() : current)</div>
|
||
<div class="line"><a name="l05500"></a><span class="lineno"> 5500</span>  {</div>
|
||
<div class="line"><a name="l05501"></a><span class="lineno"> 5501</span>  <span class="comment">// EOF</span></div>
|
||
<div class="line"><a name="l05502"></a><span class="lineno"> 5502</span>  <span class="keywordflow">case</span> std::char_traits<char>::eof():</div>
|
||
<div class="line"><a name="l05503"></a><span class="lineno"> 5503</span>  return unexpect_eof(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40">input_format_t</a>::<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40aaf9de350d652f0c9055ddab514bd23ea">cbor</a>, <span class="stringliteral">"value"</span>);</div>
|
||
<div class="line"><a name="l05504"></a><span class="lineno"> 5504</span>  </div>
|
||
<div class="line"><a name="l05505"></a><span class="lineno"> 5505</span>  <span class="comment">// Integer 0x00..0x17 (0..23)</span></div>
|
||
<div class="line"><a name="l05506"></a><span class="lineno"> 5506</span>  <span class="keywordflow">case</span> 0x00:</div>
|
||
<div class="line"><a name="l05507"></a><span class="lineno"> 5507</span>  <span class="keywordflow">case</span> 0x01:</div>
|
||
<div class="line"><a name="l05508"></a><span class="lineno"> 5508</span>  <span class="keywordflow">case</span> 0x02:</div>
|
||
<div class="line"><a name="l05509"></a><span class="lineno"> 5509</span>  <span class="keywordflow">case</span> 0x03:</div>
|
||
<div class="line"><a name="l05510"></a><span class="lineno"> 5510</span>  <span class="keywordflow">case</span> 0x04:</div>
|
||
<div class="line"><a name="l05511"></a><span class="lineno"> 5511</span>  <span class="keywordflow">case</span> 0x05:</div>
|
||
<div class="line"><a name="l05512"></a><span class="lineno"> 5512</span>  <span class="keywordflow">case</span> 0x06:</div>
|
||
<div class="line"><a name="l05513"></a><span class="lineno"> 5513</span>  <span class="keywordflow">case</span> 0x07:</div>
|
||
<div class="line"><a name="l05514"></a><span class="lineno"> 5514</span>  <span class="keywordflow">case</span> 0x08:</div>
|
||
<div class="line"><a name="l05515"></a><span class="lineno"> 5515</span>  <span class="keywordflow">case</span> 0x09:</div>
|
||
<div class="line"><a name="l05516"></a><span class="lineno"> 5516</span>  <span class="keywordflow">case</span> 0x0A:</div>
|
||
<div class="line"><a name="l05517"></a><span class="lineno"> 5517</span>  <span class="keywordflow">case</span> 0x0B:</div>
|
||
<div class="line"><a name="l05518"></a><span class="lineno"> 5518</span>  <span class="keywordflow">case</span> 0x0C:</div>
|
||
<div class="line"><a name="l05519"></a><span class="lineno"> 5519</span>  <span class="keywordflow">case</span> 0x0D:</div>
|
||
<div class="line"><a name="l05520"></a><span class="lineno"> 5520</span>  <span class="keywordflow">case</span> 0x0E:</div>
|
||
<div class="line"><a name="l05521"></a><span class="lineno"> 5521</span>  <span class="keywordflow">case</span> 0x0F:</div>
|
||
<div class="line"><a name="l05522"></a><span class="lineno"> 5522</span>  <span class="keywordflow">case</span> 0x10:</div>
|
||
<div class="line"><a name="l05523"></a><span class="lineno"> 5523</span>  <span class="keywordflow">case</span> 0x11:</div>
|
||
<div class="line"><a name="l05524"></a><span class="lineno"> 5524</span>  <span class="keywordflow">case</span> 0x12:</div>
|
||
<div class="line"><a name="l05525"></a><span class="lineno"> 5525</span>  <span class="keywordflow">case</span> 0x13:</div>
|
||
<div class="line"><a name="l05526"></a><span class="lineno"> 5526</span>  <span class="keywordflow">case</span> 0x14:</div>
|
||
<div class="line"><a name="l05527"></a><span class="lineno"> 5527</span>  <span class="keywordflow">case</span> 0x15:</div>
|
||
<div class="line"><a name="l05528"></a><span class="lineno"> 5528</span>  <span class="keywordflow">case</span> 0x16:</div>
|
||
<div class="line"><a name="l05529"></a><span class="lineno"> 5529</span>  <span class="keywordflow">case</span> 0x17:</div>
|
||
<div class="line"><a name="l05530"></a><span class="lineno"> 5530</span>  <span class="keywordflow">return</span> sax->number_unsigned(<span class="keyword">static_cast<</span>number_unsigned_t<span class="keyword">></span>(current));</div>
|
||
<div class="line"><a name="l05531"></a><span class="lineno"> 5531</span>  </div>
|
||
<div class="line"><a name="l05532"></a><span class="lineno"> 5532</span>  <span class="keywordflow">case</span> 0x18: <span class="comment">// Unsigned integer (one-byte uint8_t follows)</span></div>
|
||
<div class="line"><a name="l05533"></a><span class="lineno"> 5533</span>  {</div>
|
||
<div class="line"><a name="l05534"></a><span class="lineno"> 5534</span>  std::uint8_t number;</div>
|
||
<div class="line"><a name="l05535"></a><span class="lineno"> 5535</span>  <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40aaf9de350d652f0c9055ddab514bd23ea">input_format_t::cbor</a>, number) and sax->number_unsigned(number);</div>
|
||
<div class="line"><a name="l05536"></a><span class="lineno"> 5536</span>  }</div>
|
||
<div class="line"><a name="l05537"></a><span class="lineno"> 5537</span>  </div>
|
||
<div class="line"><a name="l05538"></a><span class="lineno"> 5538</span>  <span class="keywordflow">case</span> 0x19: <span class="comment">// Unsigned integer (two-byte uint16_t follows)</span></div>
|
||
<div class="line"><a name="l05539"></a><span class="lineno"> 5539</span>  {</div>
|
||
<div class="line"><a name="l05540"></a><span class="lineno"> 5540</span>  std::uint16_t number;</div>
|
||
<div class="line"><a name="l05541"></a><span class="lineno"> 5541</span>  <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40aaf9de350d652f0c9055ddab514bd23ea">input_format_t::cbor</a>, number) and sax->number_unsigned(number);</div>
|
||
<div class="line"><a name="l05542"></a><span class="lineno"> 5542</span>  }</div>
|
||
<div class="line"><a name="l05543"></a><span class="lineno"> 5543</span>  </div>
|
||
<div class="line"><a name="l05544"></a><span class="lineno"> 5544</span>  <span class="keywordflow">case</span> 0x1A: <span class="comment">// Unsigned integer (four-byte uint32_t follows)</span></div>
|
||
<div class="line"><a name="l05545"></a><span class="lineno"> 5545</span>  {</div>
|
||
<div class="line"><a name="l05546"></a><span class="lineno"> 5546</span>  std::uint32_t number;</div>
|
||
<div class="line"><a name="l05547"></a><span class="lineno"> 5547</span>  <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40aaf9de350d652f0c9055ddab514bd23ea">input_format_t::cbor</a>, number) and sax->number_unsigned(number);</div>
|
||
<div class="line"><a name="l05548"></a><span class="lineno"> 5548</span>  }</div>
|
||
<div class="line"><a name="l05549"></a><span class="lineno"> 5549</span>  </div>
|
||
<div class="line"><a name="l05550"></a><span class="lineno"> 5550</span>  <span class="keywordflow">case</span> 0x1B: <span class="comment">// Unsigned integer (eight-byte uint64_t follows)</span></div>
|
||
<div class="line"><a name="l05551"></a><span class="lineno"> 5551</span>  {</div>
|
||
<div class="line"><a name="l05552"></a><span class="lineno"> 5552</span>  std::uint64_t number;</div>
|
||
<div class="line"><a name="l05553"></a><span class="lineno"> 5553</span>  <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40aaf9de350d652f0c9055ddab514bd23ea">input_format_t::cbor</a>, number) and sax->number_unsigned(number);</div>
|
||
<div class="line"><a name="l05554"></a><span class="lineno"> 5554</span>  }</div>
|
||
<div class="line"><a name="l05555"></a><span class="lineno"> 5555</span>  </div>
|
||
<div class="line"><a name="l05556"></a><span class="lineno"> 5556</span>  <span class="comment">// Negative integer -1-0x00..-1-0x17 (-1..-24)</span></div>
|
||
<div class="line"><a name="l05557"></a><span class="lineno"> 5557</span>  <span class="keywordflow">case</span> 0x20:</div>
|
||
<div class="line"><a name="l05558"></a><span class="lineno"> 5558</span>  <span class="keywordflow">case</span> 0x21:</div>
|
||
<div class="line"><a name="l05559"></a><span class="lineno"> 5559</span>  <span class="keywordflow">case</span> 0x22:</div>
|
||
<div class="line"><a name="l05560"></a><span class="lineno"> 5560</span>  <span class="keywordflow">case</span> 0x23:</div>
|
||
<div class="line"><a name="l05561"></a><span class="lineno"> 5561</span>  <span class="keywordflow">case</span> 0x24:</div>
|
||
<div class="line"><a name="l05562"></a><span class="lineno"> 5562</span>  <span class="keywordflow">case</span> 0x25:</div>
|
||
<div class="line"><a name="l05563"></a><span class="lineno"> 5563</span>  <span class="keywordflow">case</span> 0x26:</div>
|
||
<div class="line"><a name="l05564"></a><span class="lineno"> 5564</span>  <span class="keywordflow">case</span> 0x27:</div>
|
||
<div class="line"><a name="l05565"></a><span class="lineno"> 5565</span>  <span class="keywordflow">case</span> 0x28:</div>
|
||
<div class="line"><a name="l05566"></a><span class="lineno"> 5566</span>  <span class="keywordflow">case</span> 0x29:</div>
|
||
<div class="line"><a name="l05567"></a><span class="lineno"> 5567</span>  <span class="keywordflow">case</span> 0x2A:</div>
|
||
<div class="line"><a name="l05568"></a><span class="lineno"> 5568</span>  <span class="keywordflow">case</span> 0x2B:</div>
|
||
<div class="line"><a name="l05569"></a><span class="lineno"> 5569</span>  <span class="keywordflow">case</span> 0x2C:</div>
|
||
<div class="line"><a name="l05570"></a><span class="lineno"> 5570</span>  <span class="keywordflow">case</span> 0x2D:</div>
|
||
<div class="line"><a name="l05571"></a><span class="lineno"> 5571</span>  <span class="keywordflow">case</span> 0x2E:</div>
|
||
<div class="line"><a name="l05572"></a><span class="lineno"> 5572</span>  <span class="keywordflow">case</span> 0x2F:</div>
|
||
<div class="line"><a name="l05573"></a><span class="lineno"> 5573</span>  <span class="keywordflow">case</span> 0x30:</div>
|
||
<div class="line"><a name="l05574"></a><span class="lineno"> 5574</span>  <span class="keywordflow">case</span> 0x31:</div>
|
||
<div class="line"><a name="l05575"></a><span class="lineno"> 5575</span>  <span class="keywordflow">case</span> 0x32:</div>
|
||
<div class="line"><a name="l05576"></a><span class="lineno"> 5576</span>  <span class="keywordflow">case</span> 0x33:</div>
|
||
<div class="line"><a name="l05577"></a><span class="lineno"> 5577</span>  <span class="keywordflow">case</span> 0x34:</div>
|
||
<div class="line"><a name="l05578"></a><span class="lineno"> 5578</span>  <span class="keywordflow">case</span> 0x35:</div>
|
||
<div class="line"><a name="l05579"></a><span class="lineno"> 5579</span>  <span class="keywordflow">case</span> 0x36:</div>
|
||
<div class="line"><a name="l05580"></a><span class="lineno"> 5580</span>  <span class="keywordflow">case</span> 0x37:</div>
|
||
<div class="line"><a name="l05581"></a><span class="lineno"> 5581</span>  <span class="keywordflow">return</span> sax->number_integer(<span class="keyword">static_cast<</span>std::int8_t<span class="keyword">></span>(0x20 - 1 - current));</div>
|
||
<div class="line"><a name="l05582"></a><span class="lineno"> 5582</span>  </div>
|
||
<div class="line"><a name="l05583"></a><span class="lineno"> 5583</span>  <span class="keywordflow">case</span> 0x38: <span class="comment">// Negative integer (one-byte uint8_t follows)</span></div>
|
||
<div class="line"><a name="l05584"></a><span class="lineno"> 5584</span>  {</div>
|
||
<div class="line"><a name="l05585"></a><span class="lineno"> 5585</span>  std::uint8_t number;</div>
|
||
<div class="line"><a name="l05586"></a><span class="lineno"> 5586</span>  <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40aaf9de350d652f0c9055ddab514bd23ea">input_format_t::cbor</a>, number) and sax->number_integer(<span class="keyword">static_cast<</span>number_integer_t<span class="keyword">></span>(-1) - number);</div>
|
||
<div class="line"><a name="l05587"></a><span class="lineno"> 5587</span>  }</div>
|
||
<div class="line"><a name="l05588"></a><span class="lineno"> 5588</span>  </div>
|
||
<div class="line"><a name="l05589"></a><span class="lineno"> 5589</span>  <span class="keywordflow">case</span> 0x39: <span class="comment">// Negative integer -1-n (two-byte uint16_t follows)</span></div>
|
||
<div class="line"><a name="l05590"></a><span class="lineno"> 5590</span>  {</div>
|
||
<div class="line"><a name="l05591"></a><span class="lineno"> 5591</span>  std::uint16_t number;</div>
|
||
<div class="line"><a name="l05592"></a><span class="lineno"> 5592</span>  <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40aaf9de350d652f0c9055ddab514bd23ea">input_format_t::cbor</a>, number) and sax->number_integer(<span class="keyword">static_cast<</span>number_integer_t<span class="keyword">></span>(-1) - number);</div>
|
||
<div class="line"><a name="l05593"></a><span class="lineno"> 5593</span>  }</div>
|
||
<div class="line"><a name="l05594"></a><span class="lineno"> 5594</span>  </div>
|
||
<div class="line"><a name="l05595"></a><span class="lineno"> 5595</span>  <span class="keywordflow">case</span> 0x3A: <span class="comment">// Negative integer -1-n (four-byte uint32_t follows)</span></div>
|
||
<div class="line"><a name="l05596"></a><span class="lineno"> 5596</span>  {</div>
|
||
<div class="line"><a name="l05597"></a><span class="lineno"> 5597</span>  std::uint32_t number;</div>
|
||
<div class="line"><a name="l05598"></a><span class="lineno"> 5598</span>  <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40aaf9de350d652f0c9055ddab514bd23ea">input_format_t::cbor</a>, number) and sax->number_integer(<span class="keyword">static_cast<</span>number_integer_t<span class="keyword">></span>(-1) - number);</div>
|
||
<div class="line"><a name="l05599"></a><span class="lineno"> 5599</span>  }</div>
|
||
<div class="line"><a name="l05600"></a><span class="lineno"> 5600</span>  </div>
|
||
<div class="line"><a name="l05601"></a><span class="lineno"> 5601</span>  <span class="keywordflow">case</span> 0x3B: <span class="comment">// Negative integer -1-n (eight-byte uint64_t follows)</span></div>
|
||
<div class="line"><a name="l05602"></a><span class="lineno"> 5602</span>  {</div>
|
||
<div class="line"><a name="l05603"></a><span class="lineno"> 5603</span>  std::uint64_t number;</div>
|
||
<div class="line"><a name="l05604"></a><span class="lineno"> 5604</span>  <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40aaf9de350d652f0c9055ddab514bd23ea">input_format_t::cbor</a>, number) and sax->number_integer(<span class="keyword">static_cast<</span>number_integer_t<span class="keyword">></span>(-1)</div>
|
||
<div class="line"><a name="l05605"></a><span class="lineno"> 5605</span>  - <span class="keyword">static_cast<</span>number_integer_t<span class="keyword">></span>(number));</div>
|
||
<div class="line"><a name="l05606"></a><span class="lineno"> 5606</span>  }</div>
|
||
<div class="line"><a name="l05607"></a><span class="lineno"> 5607</span>  </div>
|
||
<div class="line"><a name="l05608"></a><span class="lineno"> 5608</span>  <span class="comment">// UTF-8 string (0x00..0x17 bytes follow)</span></div>
|
||
<div class="line"><a name="l05609"></a><span class="lineno"> 5609</span>  <span class="keywordflow">case</span> 0x60:</div>
|
||
<div class="line"><a name="l05610"></a><span class="lineno"> 5610</span>  <span class="keywordflow">case</span> 0x61:</div>
|
||
<div class="line"><a name="l05611"></a><span class="lineno"> 5611</span>  <span class="keywordflow">case</span> 0x62:</div>
|
||
<div class="line"><a name="l05612"></a><span class="lineno"> 5612</span>  <span class="keywordflow">case</span> 0x63:</div>
|
||
<div class="line"><a name="l05613"></a><span class="lineno"> 5613</span>  <span class="keywordflow">case</span> 0x64:</div>
|
||
<div class="line"><a name="l05614"></a><span class="lineno"> 5614</span>  <span class="keywordflow">case</span> 0x65:</div>
|
||
<div class="line"><a name="l05615"></a><span class="lineno"> 5615</span>  <span class="keywordflow">case</span> 0x66:</div>
|
||
<div class="line"><a name="l05616"></a><span class="lineno"> 5616</span>  <span class="keywordflow">case</span> 0x67:</div>
|
||
<div class="line"><a name="l05617"></a><span class="lineno"> 5617</span>  <span class="keywordflow">case</span> 0x68:</div>
|
||
<div class="line"><a name="l05618"></a><span class="lineno"> 5618</span>  <span class="keywordflow">case</span> 0x69:</div>
|
||
<div class="line"><a name="l05619"></a><span class="lineno"> 5619</span>  <span class="keywordflow">case</span> 0x6A:</div>
|
||
<div class="line"><a name="l05620"></a><span class="lineno"> 5620</span>  <span class="keywordflow">case</span> 0x6B:</div>
|
||
<div class="line"><a name="l05621"></a><span class="lineno"> 5621</span>  <span class="keywordflow">case</span> 0x6C:</div>
|
||
<div class="line"><a name="l05622"></a><span class="lineno"> 5622</span>  <span class="keywordflow">case</span> 0x6D:</div>
|
||
<div class="line"><a name="l05623"></a><span class="lineno"> 5623</span>  <span class="keywordflow">case</span> 0x6E:</div>
|
||
<div class="line"><a name="l05624"></a><span class="lineno"> 5624</span>  <span class="keywordflow">case</span> 0x6F:</div>
|
||
<div class="line"><a name="l05625"></a><span class="lineno"> 5625</span>  <span class="keywordflow">case</span> 0x70:</div>
|
||
<div class="line"><a name="l05626"></a><span class="lineno"> 5626</span>  <span class="keywordflow">case</span> 0x71:</div>
|
||
<div class="line"><a name="l05627"></a><span class="lineno"> 5627</span>  <span class="keywordflow">case</span> 0x72:</div>
|
||
<div class="line"><a name="l05628"></a><span class="lineno"> 5628</span>  <span class="keywordflow">case</span> 0x73:</div>
|
||
<div class="line"><a name="l05629"></a><span class="lineno"> 5629</span>  <span class="keywordflow">case</span> 0x74:</div>
|
||
<div class="line"><a name="l05630"></a><span class="lineno"> 5630</span>  <span class="keywordflow">case</span> 0x75:</div>
|
||
<div class="line"><a name="l05631"></a><span class="lineno"> 5631</span>  <span class="keywordflow">case</span> 0x76:</div>
|
||
<div class="line"><a name="l05632"></a><span class="lineno"> 5632</span>  <span class="keywordflow">case</span> 0x77:</div>
|
||
<div class="line"><a name="l05633"></a><span class="lineno"> 5633</span>  <span class="keywordflow">case</span> 0x78: <span class="comment">// UTF-8 string (one-byte uint8_t for n follows)</span></div>
|
||
<div class="line"><a name="l05634"></a><span class="lineno"> 5634</span>  <span class="keywordflow">case</span> 0x79: <span class="comment">// UTF-8 string (two-byte uint16_t for n follow)</span></div>
|
||
<div class="line"><a name="l05635"></a><span class="lineno"> 5635</span>  <span class="keywordflow">case</span> 0x7A: <span class="comment">// UTF-8 string (four-byte uint32_t for n follow)</span></div>
|
||
<div class="line"><a name="l05636"></a><span class="lineno"> 5636</span>  <span class="keywordflow">case</span> 0x7B: <span class="comment">// UTF-8 string (eight-byte uint64_t for n follow)</span></div>
|
||
<div class="line"><a name="l05637"></a><span class="lineno"> 5637</span>  <span class="keywordflow">case</span> 0x7F: <span class="comment">// UTF-8 string (indefinite length)</span></div>
|
||
<div class="line"><a name="l05638"></a><span class="lineno"> 5638</span>  {</div>
|
||
<div class="line"><a name="l05639"></a><span class="lineno"> 5639</span>  string_t s;</div>
|
||
<div class="line"><a name="l05640"></a><span class="lineno"> 5640</span>  <span class="keywordflow">return</span> get_cbor_string(s) and sax->string(s);</div>
|
||
<div class="line"><a name="l05641"></a><span class="lineno"> 5641</span>  }</div>
|
||
<div class="line"><a name="l05642"></a><span class="lineno"> 5642</span>  </div>
|
||
<div class="line"><a name="l05643"></a><span class="lineno"> 5643</span>  <span class="comment">// array (0x00..0x17 data items follow)</span></div>
|
||
<div class="line"><a name="l05644"></a><span class="lineno"> 5644</span>  <span class="keywordflow">case</span> 0x80:</div>
|
||
<div class="line"><a name="l05645"></a><span class="lineno"> 5645</span>  <span class="keywordflow">case</span> 0x81:</div>
|
||
<div class="line"><a name="l05646"></a><span class="lineno"> 5646</span>  <span class="keywordflow">case</span> 0x82:</div>
|
||
<div class="line"><a name="l05647"></a><span class="lineno"> 5647</span>  <span class="keywordflow">case</span> 0x83:</div>
|
||
<div class="line"><a name="l05648"></a><span class="lineno"> 5648</span>  <span class="keywordflow">case</span> 0x84:</div>
|
||
<div class="line"><a name="l05649"></a><span class="lineno"> 5649</span>  <span class="keywordflow">case</span> 0x85:</div>
|
||
<div class="line"><a name="l05650"></a><span class="lineno"> 5650</span>  <span class="keywordflow">case</span> 0x86:</div>
|
||
<div class="line"><a name="l05651"></a><span class="lineno"> 5651</span>  <span class="keywordflow">case</span> 0x87:</div>
|
||
<div class="line"><a name="l05652"></a><span class="lineno"> 5652</span>  <span class="keywordflow">case</span> 0x88:</div>
|
||
<div class="line"><a name="l05653"></a><span class="lineno"> 5653</span>  <span class="keywordflow">case</span> 0x89:</div>
|
||
<div class="line"><a name="l05654"></a><span class="lineno"> 5654</span>  <span class="keywordflow">case</span> 0x8A:</div>
|
||
<div class="line"><a name="l05655"></a><span class="lineno"> 5655</span>  <span class="keywordflow">case</span> 0x8B:</div>
|
||
<div class="line"><a name="l05656"></a><span class="lineno"> 5656</span>  <span class="keywordflow">case</span> 0x8C:</div>
|
||
<div class="line"><a name="l05657"></a><span class="lineno"> 5657</span>  <span class="keywordflow">case</span> 0x8D:</div>
|
||
<div class="line"><a name="l05658"></a><span class="lineno"> 5658</span>  <span class="keywordflow">case</span> 0x8E:</div>
|
||
<div class="line"><a name="l05659"></a><span class="lineno"> 5659</span>  <span class="keywordflow">case</span> 0x8F:</div>
|
||
<div class="line"><a name="l05660"></a><span class="lineno"> 5660</span>  <span class="keywordflow">case</span> 0x90:</div>
|
||
<div class="line"><a name="l05661"></a><span class="lineno"> 5661</span>  <span class="keywordflow">case</span> 0x91:</div>
|
||
<div class="line"><a name="l05662"></a><span class="lineno"> 5662</span>  <span class="keywordflow">case</span> 0x92:</div>
|
||
<div class="line"><a name="l05663"></a><span class="lineno"> 5663</span>  <span class="keywordflow">case</span> 0x93:</div>
|
||
<div class="line"><a name="l05664"></a><span class="lineno"> 5664</span>  <span class="keywordflow">case</span> 0x94:</div>
|
||
<div class="line"><a name="l05665"></a><span class="lineno"> 5665</span>  <span class="keywordflow">case</span> 0x95:</div>
|
||
<div class="line"><a name="l05666"></a><span class="lineno"> 5666</span>  <span class="keywordflow">case</span> 0x96:</div>
|
||
<div class="line"><a name="l05667"></a><span class="lineno"> 5667</span>  <span class="keywordflow">case</span> 0x97:</div>
|
||
<div class="line"><a name="l05668"></a><span class="lineno"> 5668</span>  <span class="keywordflow">return</span> get_cbor_array(<span class="keyword">static_cast<</span>std::size_t<span class="keyword">></span>(<span class="keyword">static_cast<</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">></span>(current) & 0x1Fu));</div>
|
||
<div class="line"><a name="l05669"></a><span class="lineno"> 5669</span>  </div>
|
||
<div class="line"><a name="l05670"></a><span class="lineno"> 5670</span>  <span class="keywordflow">case</span> 0x98: <span class="comment">// array (one-byte uint8_t for n follows)</span></div>
|
||
<div class="line"><a name="l05671"></a><span class="lineno"> 5671</span>  {</div>
|
||
<div class="line"><a name="l05672"></a><span class="lineno"> 5672</span>  std::uint8_t len;</div>
|
||
<div class="line"><a name="l05673"></a><span class="lineno"> 5673</span>  <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40aaf9de350d652f0c9055ddab514bd23ea">input_format_t::cbor</a>, len) and get_cbor_array(<span class="keyword">static_cast<</span>std::size_t<span class="keyword">></span>(len));</div>
|
||
<div class="line"><a name="l05674"></a><span class="lineno"> 5674</span>  }</div>
|
||
<div class="line"><a name="l05675"></a><span class="lineno"> 5675</span>  </div>
|
||
<div class="line"><a name="l05676"></a><span class="lineno"> 5676</span>  <span class="keywordflow">case</span> 0x99: <span class="comment">// array (two-byte uint16_t for n follow)</span></div>
|
||
<div class="line"><a name="l05677"></a><span class="lineno"> 5677</span>  {</div>
|
||
<div class="line"><a name="l05678"></a><span class="lineno"> 5678</span>  std::uint16_t len;</div>
|
||
<div class="line"><a name="l05679"></a><span class="lineno"> 5679</span>  <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40aaf9de350d652f0c9055ddab514bd23ea">input_format_t::cbor</a>, len) and get_cbor_array(<span class="keyword">static_cast<</span>std::size_t<span class="keyword">></span>(len));</div>
|
||
<div class="line"><a name="l05680"></a><span class="lineno"> 5680</span>  }</div>
|
||
<div class="line"><a name="l05681"></a><span class="lineno"> 5681</span>  </div>
|
||
<div class="line"><a name="l05682"></a><span class="lineno"> 5682</span>  <span class="keywordflow">case</span> 0x9A: <span class="comment">// array (four-byte uint32_t for n follow)</span></div>
|
||
<div class="line"><a name="l05683"></a><span class="lineno"> 5683</span>  {</div>
|
||
<div class="line"><a name="l05684"></a><span class="lineno"> 5684</span>  std::uint32_t len;</div>
|
||
<div class="line"><a name="l05685"></a><span class="lineno"> 5685</span>  <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40aaf9de350d652f0c9055ddab514bd23ea">input_format_t::cbor</a>, len) and get_cbor_array(<span class="keyword">static_cast<</span>std::size_t<span class="keyword">></span>(len));</div>
|
||
<div class="line"><a name="l05686"></a><span class="lineno"> 5686</span>  }</div>
|
||
<div class="line"><a name="l05687"></a><span class="lineno"> 5687</span>  </div>
|
||
<div class="line"><a name="l05688"></a><span class="lineno"> 5688</span>  <span class="keywordflow">case</span> 0x9B: <span class="comment">// array (eight-byte uint64_t for n follow)</span></div>
|
||
<div class="line"><a name="l05689"></a><span class="lineno"> 5689</span>  {</div>
|
||
<div class="line"><a name="l05690"></a><span class="lineno"> 5690</span>  std::uint64_t len;</div>
|
||
<div class="line"><a name="l05691"></a><span class="lineno"> 5691</span>  <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40aaf9de350d652f0c9055ddab514bd23ea">input_format_t::cbor</a>, len) and get_cbor_array(<span class="keyword">static_cast<</span>std::size_t<span class="keyword">></span>(len));</div>
|
||
<div class="line"><a name="l05692"></a><span class="lineno"> 5692</span>  }</div>
|
||
<div class="line"><a name="l05693"></a><span class="lineno"> 5693</span>  </div>
|
||
<div class="line"><a name="l05694"></a><span class="lineno"> 5694</span>  <span class="keywordflow">case</span> 0x9F: <span class="comment">// array (indefinite length)</span></div>
|
||
<div class="line"><a name="l05695"></a><span class="lineno"> 5695</span>  <span class="keywordflow">return</span> get_cbor_array(std::size_t(-1));</div>
|
||
<div class="line"><a name="l05696"></a><span class="lineno"> 5696</span>  </div>
|
||
<div class="line"><a name="l05697"></a><span class="lineno"> 5697</span>  <span class="comment">// map (0x00..0x17 pairs of data items follow)</span></div>
|
||
<div class="line"><a name="l05698"></a><span class="lineno"> 5698</span>  <span class="keywordflow">case</span> 0xA0:</div>
|
||
<div class="line"><a name="l05699"></a><span class="lineno"> 5699</span>  <span class="keywordflow">case</span> 0xA1:</div>
|
||
<div class="line"><a name="l05700"></a><span class="lineno"> 5700</span>  <span class="keywordflow">case</span> 0xA2:</div>
|
||
<div class="line"><a name="l05701"></a><span class="lineno"> 5701</span>  <span class="keywordflow">case</span> 0xA3:</div>
|
||
<div class="line"><a name="l05702"></a><span class="lineno"> 5702</span>  <span class="keywordflow">case</span> 0xA4:</div>
|
||
<div class="line"><a name="l05703"></a><span class="lineno"> 5703</span>  <span class="keywordflow">case</span> 0xA5:</div>
|
||
<div class="line"><a name="l05704"></a><span class="lineno"> 5704</span>  <span class="keywordflow">case</span> 0xA6:</div>
|
||
<div class="line"><a name="l05705"></a><span class="lineno"> 5705</span>  <span class="keywordflow">case</span> 0xA7:</div>
|
||
<div class="line"><a name="l05706"></a><span class="lineno"> 5706</span>  <span class="keywordflow">case</span> 0xA8:</div>
|
||
<div class="line"><a name="l05707"></a><span class="lineno"> 5707</span>  <span class="keywordflow">case</span> 0xA9:</div>
|
||
<div class="line"><a name="l05708"></a><span class="lineno"> 5708</span>  <span class="keywordflow">case</span> 0xAA:</div>
|
||
<div class="line"><a name="l05709"></a><span class="lineno"> 5709</span>  <span class="keywordflow">case</span> 0xAB:</div>
|
||
<div class="line"><a name="l05710"></a><span class="lineno"> 5710</span>  <span class="keywordflow">case</span> 0xAC:</div>
|
||
<div class="line"><a name="l05711"></a><span class="lineno"> 5711</span>  <span class="keywordflow">case</span> 0xAD:</div>
|
||
<div class="line"><a name="l05712"></a><span class="lineno"> 5712</span>  <span class="keywordflow">case</span> 0xAE:</div>
|
||
<div class="line"><a name="l05713"></a><span class="lineno"> 5713</span>  <span class="keywordflow">case</span> 0xAF:</div>
|
||
<div class="line"><a name="l05714"></a><span class="lineno"> 5714</span>  <span class="keywordflow">case</span> 0xB0:</div>
|
||
<div class="line"><a name="l05715"></a><span class="lineno"> 5715</span>  <span class="keywordflow">case</span> 0xB1:</div>
|
||
<div class="line"><a name="l05716"></a><span class="lineno"> 5716</span>  <span class="keywordflow">case</span> 0xB2:</div>
|
||
<div class="line"><a name="l05717"></a><span class="lineno"> 5717</span>  <span class="keywordflow">case</span> 0xB3:</div>
|
||
<div class="line"><a name="l05718"></a><span class="lineno"> 5718</span>  <span class="keywordflow">case</span> 0xB4:</div>
|
||
<div class="line"><a name="l05719"></a><span class="lineno"> 5719</span>  <span class="keywordflow">case</span> 0xB5:</div>
|
||
<div class="line"><a name="l05720"></a><span class="lineno"> 5720</span>  <span class="keywordflow">case</span> 0xB6:</div>
|
||
<div class="line"><a name="l05721"></a><span class="lineno"> 5721</span>  <span class="keywordflow">case</span> 0xB7:</div>
|
||
<div class="line"><a name="l05722"></a><span class="lineno"> 5722</span>  <span class="keywordflow">return</span> get_cbor_object(<span class="keyword">static_cast<</span>std::size_t<span class="keyword">></span>(<span class="keyword">static_cast<</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">></span>(current) & 0x1Fu));</div>
|
||
<div class="line"><a name="l05723"></a><span class="lineno"> 5723</span>  </div>
|
||
<div class="line"><a name="l05724"></a><span class="lineno"> 5724</span>  <span class="keywordflow">case</span> 0xB8: <span class="comment">// map (one-byte uint8_t for n follows)</span></div>
|
||
<div class="line"><a name="l05725"></a><span class="lineno"> 5725</span>  {</div>
|
||
<div class="line"><a name="l05726"></a><span class="lineno"> 5726</span>  std::uint8_t len;</div>
|
||
<div class="line"><a name="l05727"></a><span class="lineno"> 5727</span>  <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40aaf9de350d652f0c9055ddab514bd23ea">input_format_t::cbor</a>, len) and get_cbor_object(<span class="keyword">static_cast<</span>std::size_t<span class="keyword">></span>(len));</div>
|
||
<div class="line"><a name="l05728"></a><span class="lineno"> 5728</span>  }</div>
|
||
<div class="line"><a name="l05729"></a><span class="lineno"> 5729</span>  </div>
|
||
<div class="line"><a name="l05730"></a><span class="lineno"> 5730</span>  <span class="keywordflow">case</span> 0xB9: <span class="comment">// map (two-byte uint16_t for n follow)</span></div>
|
||
<div class="line"><a name="l05731"></a><span class="lineno"> 5731</span>  {</div>
|
||
<div class="line"><a name="l05732"></a><span class="lineno"> 5732</span>  std::uint16_t len;</div>
|
||
<div class="line"><a name="l05733"></a><span class="lineno"> 5733</span>  <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40aaf9de350d652f0c9055ddab514bd23ea">input_format_t::cbor</a>, len) and get_cbor_object(<span class="keyword">static_cast<</span>std::size_t<span class="keyword">></span>(len));</div>
|
||
<div class="line"><a name="l05734"></a><span class="lineno"> 5734</span>  }</div>
|
||
<div class="line"><a name="l05735"></a><span class="lineno"> 5735</span>  </div>
|
||
<div class="line"><a name="l05736"></a><span class="lineno"> 5736</span>  <span class="keywordflow">case</span> 0xBA: <span class="comment">// map (four-byte uint32_t for n follow)</span></div>
|
||
<div class="line"><a name="l05737"></a><span class="lineno"> 5737</span>  {</div>
|
||
<div class="line"><a name="l05738"></a><span class="lineno"> 5738</span>  std::uint32_t len;</div>
|
||
<div class="line"><a name="l05739"></a><span class="lineno"> 5739</span>  <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40aaf9de350d652f0c9055ddab514bd23ea">input_format_t::cbor</a>, len) and get_cbor_object(<span class="keyword">static_cast<</span>std::size_t<span class="keyword">></span>(len));</div>
|
||
<div class="line"><a name="l05740"></a><span class="lineno"> 5740</span>  }</div>
|
||
<div class="line"><a name="l05741"></a><span class="lineno"> 5741</span>  </div>
|
||
<div class="line"><a name="l05742"></a><span class="lineno"> 5742</span>  <span class="keywordflow">case</span> 0xBB: <span class="comment">// map (eight-byte uint64_t for n follow)</span></div>
|
||
<div class="line"><a name="l05743"></a><span class="lineno"> 5743</span>  {</div>
|
||
<div class="line"><a name="l05744"></a><span class="lineno"> 5744</span>  std::uint64_t len;</div>
|
||
<div class="line"><a name="l05745"></a><span class="lineno"> 5745</span>  <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40aaf9de350d652f0c9055ddab514bd23ea">input_format_t::cbor</a>, len) and get_cbor_object(<span class="keyword">static_cast<</span>std::size_t<span class="keyword">></span>(len));</div>
|
||
<div class="line"><a name="l05746"></a><span class="lineno"> 5746</span>  }</div>
|
||
<div class="line"><a name="l05747"></a><span class="lineno"> 5747</span>  </div>
|
||
<div class="line"><a name="l05748"></a><span class="lineno"> 5748</span>  <span class="keywordflow">case</span> 0xBF: <span class="comment">// map (indefinite length)</span></div>
|
||
<div class="line"><a name="l05749"></a><span class="lineno"> 5749</span>  <span class="keywordflow">return</span> get_cbor_object(std::size_t(-1));</div>
|
||
<div class="line"><a name="l05750"></a><span class="lineno"> 5750</span>  </div>
|
||
<div class="line"><a name="l05751"></a><span class="lineno"> 5751</span>  <span class="keywordflow">case</span> 0xF4: <span class="comment">// false</span></div>
|
||
<div class="line"><a name="l05752"></a><span class="lineno"> 5752</span>  <span class="keywordflow">return</span> sax->boolean(<span class="keyword">false</span>);</div>
|
||
<div class="line"><a name="l05753"></a><span class="lineno"> 5753</span>  </div>
|
||
<div class="line"><a name="l05754"></a><span class="lineno"> 5754</span>  <span class="keywordflow">case</span> 0xF5: <span class="comment">// true</span></div>
|
||
<div class="line"><a name="l05755"></a><span class="lineno"> 5755</span>  <span class="keywordflow">return</span> sax->boolean(<span class="keyword">true</span>);</div>
|
||
<div class="line"><a name="l05756"></a><span class="lineno"> 5756</span>  </div>
|
||
<div class="line"><a name="l05757"></a><span class="lineno"> 5757</span>  <span class="keywordflow">case</span> 0xF6: <span class="comment">// null</span></div>
|
||
<div class="line"><a name="l05758"></a><span class="lineno"> 5758</span>  <span class="keywordflow">return</span> sax->null();</div>
|
||
<div class="line"><a name="l05759"></a><span class="lineno"> 5759</span>  </div>
|
||
<div class="line"><a name="l05760"></a><span class="lineno"> 5760</span>  <span class="keywordflow">case</span> 0xF9: <span class="comment">// Half-Precision Float (two-byte IEEE 754)</span></div>
|
||
<div class="line"><a name="l05761"></a><span class="lineno"> 5761</span>  {</div>
|
||
<div class="line"><a name="l05762"></a><span class="lineno"> 5762</span>  <span class="keyword">const</span> <span class="keywordtype">int</span> byte1_raw = get();</div>
|
||
<div class="line"><a name="l05763"></a><span class="lineno"> 5763</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not unexpect_eof(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40aaf9de350d652f0c9055ddab514bd23ea">input_format_t::cbor</a>, <span class="stringliteral">"number"</span>)))</div>
|
||
<div class="line"><a name="l05764"></a><span class="lineno"> 5764</span>  {</div>
|
||
<div class="line"><a name="l05765"></a><span class="lineno"> 5765</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||
<div class="line"><a name="l05766"></a><span class="lineno"> 5766</span>  }</div>
|
||
<div class="line"><a name="l05767"></a><span class="lineno"> 5767</span>  <span class="keyword">const</span> <span class="keywordtype">int</span> byte2_raw = get();</div>
|
||
<div class="line"><a name="l05768"></a><span class="lineno"> 5768</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not unexpect_eof(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40aaf9de350d652f0c9055ddab514bd23ea">input_format_t::cbor</a>, <span class="stringliteral">"number"</span>)))</div>
|
||
<div class="line"><a name="l05769"></a><span class="lineno"> 5769</span>  {</div>
|
||
<div class="line"><a name="l05770"></a><span class="lineno"> 5770</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||
<div class="line"><a name="l05771"></a><span class="lineno"> 5771</span>  }</div>
|
||
<div class="line"><a name="l05772"></a><span class="lineno"> 5772</span>  </div>
|
||
<div class="line"><a name="l05773"></a><span class="lineno"> 5773</span>  <span class="keyword">const</span> <span class="keyword">auto</span> byte1 = <span class="keyword">static_cast<</span><span class="keywordtype">unsigned</span> <span class="keywordtype">char</span><span class="keyword">></span>(byte1_raw);</div>
|
||
<div class="line"><a name="l05774"></a><span class="lineno"> 5774</span>  <span class="keyword">const</span> <span class="keyword">auto</span> byte2 = <span class="keyword">static_cast<</span><span class="keywordtype">unsigned</span> <span class="keywordtype">char</span><span class="keyword">></span>(byte2_raw);</div>
|
||
<div class="line"><a name="l05775"></a><span class="lineno"> 5775</span>  </div>
|
||
<div class="line"><a name="l05776"></a><span class="lineno"> 5776</span>  <span class="comment">// code from RFC 7049, Appendix D, Figure 3:</span></div>
|
||
<div class="line"><a name="l05777"></a><span class="lineno"> 5777</span>  <span class="comment">// As half-precision floating-point numbers were only added</span></div>
|
||
<div class="line"><a name="l05778"></a><span class="lineno"> 5778</span>  <span class="comment">// to IEEE 754 in 2008, today's programming platforms often</span></div>
|
||
<div class="line"><a name="l05779"></a><span class="lineno"> 5779</span>  <span class="comment">// still only have limited support for them. It is very</span></div>
|
||
<div class="line"><a name="l05780"></a><span class="lineno"> 5780</span>  <span class="comment">// easy to include at least decoding support for them even</span></div>
|
||
<div class="line"><a name="l05781"></a><span class="lineno"> 5781</span>  <span class="comment">// without such support. An example of a small decoder for</span></div>
|
||
<div class="line"><a name="l05782"></a><span class="lineno"> 5782</span>  <span class="comment">// half-precision floating-point numbers in the C language</span></div>
|
||
<div class="line"><a name="l05783"></a><span class="lineno"> 5783</span>  <span class="comment">// is shown in Fig. 3.</span></div>
|
||
<div class="line"><a name="l05784"></a><span class="lineno"> 5784</span>  <span class="keyword">const</span> <span class="keyword">auto</span> half = <span class="keyword">static_cast<</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">></span>((byte1 << 8u) + byte2);</div>
|
||
<div class="line"><a name="l05785"></a><span class="lineno"> 5785</span>  <span class="keyword">const</span> <span class="keywordtype">double</span> val = [&half]</div>
|
||
<div class="line"><a name="l05786"></a><span class="lineno"> 5786</span>  {</div>
|
||
<div class="line"><a name="l05787"></a><span class="lineno"> 5787</span>  <span class="keyword">const</span> <span class="keywordtype">int</span> exp = (half >> 10u) & 0x1Fu;</div>
|
||
<div class="line"><a name="l05788"></a><span class="lineno"> 5788</span>  <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> mant = half & 0x3FFu;</div>
|
||
<div class="line"><a name="l05789"></a><span class="lineno"> 5789</span>  assert(0 <= exp and exp <= 32);</div>
|
||
<div class="line"><a name="l05790"></a><span class="lineno"> 5790</span>  assert(mant <= 1024);</div>
|
||
<div class="line"><a name="l05791"></a><span class="lineno"> 5791</span>  <span class="keywordflow">switch</span> (exp)</div>
|
||
<div class="line"><a name="l05792"></a><span class="lineno"> 5792</span>  {</div>
|
||
<div class="line"><a name="l05793"></a><span class="lineno"> 5793</span>  <span class="keywordflow">case</span> 0:</div>
|
||
<div class="line"><a name="l05794"></a><span class="lineno"> 5794</span>  <span class="keywordflow">return</span> std::ldexp(mant, -24);</div>
|
||
<div class="line"><a name="l05795"></a><span class="lineno"> 5795</span>  <span class="keywordflow">case</span> 31:</div>
|
||
<div class="line"><a name="l05796"></a><span class="lineno"> 5796</span>  <span class="keywordflow">return</span> (mant == 0)</div>
|
||
<div class="line"><a name="l05797"></a><span class="lineno"> 5797</span>  ? std::numeric_limits<double>::infinity()</div>
|
||
<div class="line"><a name="l05798"></a><span class="lineno"> 5798</span>  : <a class="code" href="namespacestd.html">std</a>::numeric_limits<double>::quiet_NaN();</div>
|
||
<div class="line"><a name="l05799"></a><span class="lineno"> 5799</span>  <span class="keywordflow">default</span>:</div>
|
||
<div class="line"><a name="l05800"></a><span class="lineno"> 5800</span>  <span class="keywordflow">return</span> std::ldexp(mant + 1024, exp - 25);</div>
|
||
<div class="line"><a name="l05801"></a><span class="lineno"> 5801</span>  }</div>
|
||
<div class="line"><a name="l05802"></a><span class="lineno"> 5802</span>  }();</div>
|
||
<div class="line"><a name="l05803"></a><span class="lineno"> 5803</span>  <span class="keywordflow">return</span> sax->number_float((half & 0x8000u) != 0</div>
|
||
<div class="line"><a name="l05804"></a><span class="lineno"> 5804</span>  ? <span class="keyword">static_cast<</span>number_float_t<span class="keyword">></span>(-val)</div>
|
||
<div class="line"><a name="l05805"></a><span class="lineno"> 5805</span>  : <span class="keyword">static_cast<</span>number_float_t<span class="keyword">></span>(val), <span class="stringliteral">""</span>);</div>
|
||
<div class="line"><a name="l05806"></a><span class="lineno"> 5806</span>  }</div>
|
||
<div class="line"><a name="l05807"></a><span class="lineno"> 5807</span>  </div>
|
||
<div class="line"><a name="l05808"></a><span class="lineno"> 5808</span>  <span class="keywordflow">case</span> 0xFA: <span class="comment">// Single-Precision Float (four-byte IEEE 754)</span></div>
|
||
<div class="line"><a name="l05809"></a><span class="lineno"> 5809</span>  {</div>
|
||
<div class="line"><a name="l05810"></a><span class="lineno"> 5810</span>  <span class="keywordtype">float</span> number;</div>
|
||
<div class="line"><a name="l05811"></a><span class="lineno"> 5811</span>  <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40aaf9de350d652f0c9055ddab514bd23ea">input_format_t::cbor</a>, number) and sax->number_float(<span class="keyword">static_cast<</span>number_float_t<span class="keyword">></span>(number), <span class="stringliteral">""</span>);</div>
|
||
<div class="line"><a name="l05812"></a><span class="lineno"> 5812</span>  }</div>
|
||
<div class="line"><a name="l05813"></a><span class="lineno"> 5813</span>  </div>
|
||
<div class="line"><a name="l05814"></a><span class="lineno"> 5814</span>  <span class="keywordflow">case</span> 0xFB: <span class="comment">// Double-Precision Float (eight-byte IEEE 754)</span></div>
|
||
<div class="line"><a name="l05815"></a><span class="lineno"> 5815</span>  {</div>
|
||
<div class="line"><a name="l05816"></a><span class="lineno"> 5816</span>  <span class="keywordtype">double</span> number;</div>
|
||
<div class="line"><a name="l05817"></a><span class="lineno"> 5817</span>  <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40aaf9de350d652f0c9055ddab514bd23ea">input_format_t::cbor</a>, number) and sax->number_float(<span class="keyword">static_cast<</span>number_float_t<span class="keyword">></span>(number), <span class="stringliteral">""</span>);</div>
|
||
<div class="line"><a name="l05818"></a><span class="lineno"> 5818</span>  }</div>
|
||
<div class="line"><a name="l05819"></a><span class="lineno"> 5819</span>  </div>
|
||
<div class="line"><a name="l05820"></a><span class="lineno"> 5820</span>  <span class="keywordflow">default</span>: <span class="comment">// anything else (0xFF is handled inside the other types)</span></div>
|
||
<div class="line"><a name="l05821"></a><span class="lineno"> 5821</span>  {</div>
|
||
<div class="line"><a name="l05822"></a><span class="lineno"> 5822</span>  <span class="keyword">auto</span> last_token = get_token_string();</div>
|
||
<div class="line"><a name="l05823"></a><span class="lineno"> 5823</span>  <span class="keywordflow">return</span> sax->parse_error(chars_read, last_token, <a class="code" href="classnlohmann_1_1detail_1_1parse__error.html#a137ea4d27de45d8a844fd13451d40f3d">parse_error::create</a>(112, chars_read, exception_message(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40aaf9de350d652f0c9055ddab514bd23ea">input_format_t::cbor</a>, <span class="stringliteral">"invalid byte: 0x"</span> + last_token, <span class="stringliteral">"value"</span>)));</div>
|
||
<div class="line"><a name="l05824"></a><span class="lineno"> 5824</span>  }</div>
|
||
<div class="line"><a name="l05825"></a><span class="lineno"> 5825</span>  }</div>
|
||
<div class="line"><a name="l05826"></a><span class="lineno"> 5826</span>  }</div>
|
||
<div class="line"><a name="l05827"></a><span class="lineno"> 5827</span>  </div>
|
||
<div class="line"><a name="l05839"></a><span class="lineno"> 5839</span>  <span class="keywordtype">bool</span> get_cbor_string(string_t& result)</div>
|
||
<div class="line"><a name="l05840"></a><span class="lineno"> 5840</span>  {</div>
|
||
<div class="line"><a name="l05841"></a><span class="lineno"> 5841</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not unexpect_eof(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40aaf9de350d652f0c9055ddab514bd23ea">input_format_t::cbor</a>, <span class="stringliteral">"string"</span>)))</div>
|
||
<div class="line"><a name="l05842"></a><span class="lineno"> 5842</span>  {</div>
|
||
<div class="line"><a name="l05843"></a><span class="lineno"> 5843</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||
<div class="line"><a name="l05844"></a><span class="lineno"> 5844</span>  }</div>
|
||
<div class="line"><a name="l05845"></a><span class="lineno"> 5845</span>  </div>
|
||
<div class="line"><a name="l05846"></a><span class="lineno"> 5846</span>  <span class="keywordflow">switch</span> (current)</div>
|
||
<div class="line"><a name="l05847"></a><span class="lineno"> 5847</span>  {</div>
|
||
<div class="line"><a name="l05848"></a><span class="lineno"> 5848</span>  <span class="comment">// UTF-8 string (0x00..0x17 bytes follow)</span></div>
|
||
<div class="line"><a name="l05849"></a><span class="lineno"> 5849</span>  <span class="keywordflow">case</span> 0x60:</div>
|
||
<div class="line"><a name="l05850"></a><span class="lineno"> 5850</span>  <span class="keywordflow">case</span> 0x61:</div>
|
||
<div class="line"><a name="l05851"></a><span class="lineno"> 5851</span>  <span class="keywordflow">case</span> 0x62:</div>
|
||
<div class="line"><a name="l05852"></a><span class="lineno"> 5852</span>  <span class="keywordflow">case</span> 0x63:</div>
|
||
<div class="line"><a name="l05853"></a><span class="lineno"> 5853</span>  <span class="keywordflow">case</span> 0x64:</div>
|
||
<div class="line"><a name="l05854"></a><span class="lineno"> 5854</span>  <span class="keywordflow">case</span> 0x65:</div>
|
||
<div class="line"><a name="l05855"></a><span class="lineno"> 5855</span>  <span class="keywordflow">case</span> 0x66:</div>
|
||
<div class="line"><a name="l05856"></a><span class="lineno"> 5856</span>  <span class="keywordflow">case</span> 0x67:</div>
|
||
<div class="line"><a name="l05857"></a><span class="lineno"> 5857</span>  <span class="keywordflow">case</span> 0x68:</div>
|
||
<div class="line"><a name="l05858"></a><span class="lineno"> 5858</span>  <span class="keywordflow">case</span> 0x69:</div>
|
||
<div class="line"><a name="l05859"></a><span class="lineno"> 5859</span>  <span class="keywordflow">case</span> 0x6A:</div>
|
||
<div class="line"><a name="l05860"></a><span class="lineno"> 5860</span>  <span class="keywordflow">case</span> 0x6B:</div>
|
||
<div class="line"><a name="l05861"></a><span class="lineno"> 5861</span>  <span class="keywordflow">case</span> 0x6C:</div>
|
||
<div class="line"><a name="l05862"></a><span class="lineno"> 5862</span>  <span class="keywordflow">case</span> 0x6D:</div>
|
||
<div class="line"><a name="l05863"></a><span class="lineno"> 5863</span>  <span class="keywordflow">case</span> 0x6E:</div>
|
||
<div class="line"><a name="l05864"></a><span class="lineno"> 5864</span>  <span class="keywordflow">case</span> 0x6F:</div>
|
||
<div class="line"><a name="l05865"></a><span class="lineno"> 5865</span>  <span class="keywordflow">case</span> 0x70:</div>
|
||
<div class="line"><a name="l05866"></a><span class="lineno"> 5866</span>  <span class="keywordflow">case</span> 0x71:</div>
|
||
<div class="line"><a name="l05867"></a><span class="lineno"> 5867</span>  <span class="keywordflow">case</span> 0x72:</div>
|
||
<div class="line"><a name="l05868"></a><span class="lineno"> 5868</span>  <span class="keywordflow">case</span> 0x73:</div>
|
||
<div class="line"><a name="l05869"></a><span class="lineno"> 5869</span>  <span class="keywordflow">case</span> 0x74:</div>
|
||
<div class="line"><a name="l05870"></a><span class="lineno"> 5870</span>  <span class="keywordflow">case</span> 0x75:</div>
|
||
<div class="line"><a name="l05871"></a><span class="lineno"> 5871</span>  <span class="keywordflow">case</span> 0x76:</div>
|
||
<div class="line"><a name="l05872"></a><span class="lineno"> 5872</span>  <span class="keywordflow">case</span> 0x77:</div>
|
||
<div class="line"><a name="l05873"></a><span class="lineno"> 5873</span>  {</div>
|
||
<div class="line"><a name="l05874"></a><span class="lineno"> 5874</span>  <span class="keywordflow">return</span> get_string(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40aaf9de350d652f0c9055ddab514bd23ea">input_format_t::cbor</a>, <span class="keyword">static_cast<</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">></span>(current) & 0x1Fu, result);</div>
|
||
<div class="line"><a name="l05875"></a><span class="lineno"> 5875</span>  }</div>
|
||
<div class="line"><a name="l05876"></a><span class="lineno"> 5876</span>  </div>
|
||
<div class="line"><a name="l05877"></a><span class="lineno"> 5877</span>  <span class="keywordflow">case</span> 0x78: <span class="comment">// UTF-8 string (one-byte uint8_t for n follows)</span></div>
|
||
<div class="line"><a name="l05878"></a><span class="lineno"> 5878</span>  {</div>
|
||
<div class="line"><a name="l05879"></a><span class="lineno"> 5879</span>  std::uint8_t len;</div>
|
||
<div class="line"><a name="l05880"></a><span class="lineno"> 5880</span>  <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40aaf9de350d652f0c9055ddab514bd23ea">input_format_t::cbor</a>, len) and get_string(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40aaf9de350d652f0c9055ddab514bd23ea">input_format_t::cbor</a>, len, result);</div>
|
||
<div class="line"><a name="l05881"></a><span class="lineno"> 5881</span>  }</div>
|
||
<div class="line"><a name="l05882"></a><span class="lineno"> 5882</span>  </div>
|
||
<div class="line"><a name="l05883"></a><span class="lineno"> 5883</span>  <span class="keywordflow">case</span> 0x79: <span class="comment">// UTF-8 string (two-byte uint16_t for n follow)</span></div>
|
||
<div class="line"><a name="l05884"></a><span class="lineno"> 5884</span>  {</div>
|
||
<div class="line"><a name="l05885"></a><span class="lineno"> 5885</span>  std::uint16_t len;</div>
|
||
<div class="line"><a name="l05886"></a><span class="lineno"> 5886</span>  <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40aaf9de350d652f0c9055ddab514bd23ea">input_format_t::cbor</a>, len) and get_string(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40aaf9de350d652f0c9055ddab514bd23ea">input_format_t::cbor</a>, len, result);</div>
|
||
<div class="line"><a name="l05887"></a><span class="lineno"> 5887</span>  }</div>
|
||
<div class="line"><a name="l05888"></a><span class="lineno"> 5888</span>  </div>
|
||
<div class="line"><a name="l05889"></a><span class="lineno"> 5889</span>  <span class="keywordflow">case</span> 0x7A: <span class="comment">// UTF-8 string (four-byte uint32_t for n follow)</span></div>
|
||
<div class="line"><a name="l05890"></a><span class="lineno"> 5890</span>  {</div>
|
||
<div class="line"><a name="l05891"></a><span class="lineno"> 5891</span>  std::uint32_t len;</div>
|
||
<div class="line"><a name="l05892"></a><span class="lineno"> 5892</span>  <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40aaf9de350d652f0c9055ddab514bd23ea">input_format_t::cbor</a>, len) and get_string(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40aaf9de350d652f0c9055ddab514bd23ea">input_format_t::cbor</a>, len, result);</div>
|
||
<div class="line"><a name="l05893"></a><span class="lineno"> 5893</span>  }</div>
|
||
<div class="line"><a name="l05894"></a><span class="lineno"> 5894</span>  </div>
|
||
<div class="line"><a name="l05895"></a><span class="lineno"> 5895</span>  <span class="keywordflow">case</span> 0x7B: <span class="comment">// UTF-8 string (eight-byte uint64_t for n follow)</span></div>
|
||
<div class="line"><a name="l05896"></a><span class="lineno"> 5896</span>  {</div>
|
||
<div class="line"><a name="l05897"></a><span class="lineno"> 5897</span>  std::uint64_t len;</div>
|
||
<div class="line"><a name="l05898"></a><span class="lineno"> 5898</span>  <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40aaf9de350d652f0c9055ddab514bd23ea">input_format_t::cbor</a>, len) and get_string(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40aaf9de350d652f0c9055ddab514bd23ea">input_format_t::cbor</a>, len, result);</div>
|
||
<div class="line"><a name="l05899"></a><span class="lineno"> 5899</span>  }</div>
|
||
<div class="line"><a name="l05900"></a><span class="lineno"> 5900</span>  </div>
|
||
<div class="line"><a name="l05901"></a><span class="lineno"> 5901</span>  <span class="keywordflow">case</span> 0x7F: <span class="comment">// UTF-8 string (indefinite length)</span></div>
|
||
<div class="line"><a name="l05902"></a><span class="lineno"> 5902</span>  {</div>
|
||
<div class="line"><a name="l05903"></a><span class="lineno"> 5903</span>  <span class="keywordflow">while</span> (get() != 0xFF)</div>
|
||
<div class="line"><a name="l05904"></a><span class="lineno"> 5904</span>  {</div>
|
||
<div class="line"><a name="l05905"></a><span class="lineno"> 5905</span>  string_t chunk;</div>
|
||
<div class="line"><a name="l05906"></a><span class="lineno"> 5906</span>  <span class="keywordflow">if</span> (not get_cbor_string(chunk))</div>
|
||
<div class="line"><a name="l05907"></a><span class="lineno"> 5907</span>  {</div>
|
||
<div class="line"><a name="l05908"></a><span class="lineno"> 5908</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||
<div class="line"><a name="l05909"></a><span class="lineno"> 5909</span>  }</div>
|
||
<div class="line"><a name="l05910"></a><span class="lineno"> 5910</span>  result.append(chunk);</div>
|
||
<div class="line"><a name="l05911"></a><span class="lineno"> 5911</span>  }</div>
|
||
<div class="line"><a name="l05912"></a><span class="lineno"> 5912</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
||
<div class="line"><a name="l05913"></a><span class="lineno"> 5913</span>  }</div>
|
||
<div class="line"><a name="l05914"></a><span class="lineno"> 5914</span>  </div>
|
||
<div class="line"><a name="l05915"></a><span class="lineno"> 5915</span>  <span class="keywordflow">default</span>:</div>
|
||
<div class="line"><a name="l05916"></a><span class="lineno"> 5916</span>  {</div>
|
||
<div class="line"><a name="l05917"></a><span class="lineno"> 5917</span>  <span class="keyword">auto</span> last_token = get_token_string();</div>
|
||
<div class="line"><a name="l05918"></a><span class="lineno"> 5918</span>  <span class="keywordflow">return</span> sax->parse_error(chars_read, last_token, <a class="code" href="classnlohmann_1_1detail_1_1parse__error.html#a137ea4d27de45d8a844fd13451d40f3d">parse_error::create</a>(113, chars_read, exception_message(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40aaf9de350d652f0c9055ddab514bd23ea">input_format_t::cbor</a>, <span class="stringliteral">"expected length specification (0x60-0x7B) or indefinite string type (0x7F); last byte: 0x"</span> + last_token, <span class="stringliteral">"string"</span>)));</div>
|
||
<div class="line"><a name="l05919"></a><span class="lineno"> 5919</span>  }</div>
|
||
<div class="line"><a name="l05920"></a><span class="lineno"> 5920</span>  }</div>
|
||
<div class="line"><a name="l05921"></a><span class="lineno"> 5921</span>  }</div>
|
||
<div class="line"><a name="l05922"></a><span class="lineno"> 5922</span>  </div>
|
||
<div class="line"><a name="l05928"></a><span class="lineno"> 5928</span>  <span class="keywordtype">bool</span> get_cbor_array(<span class="keyword">const</span> std::size_t len)</div>
|
||
<div class="line"><a name="l05929"></a><span class="lineno"> 5929</span>  {</div>
|
||
<div class="line"><a name="l05930"></a><span class="lineno"> 5930</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not sax->start_array(len)))</div>
|
||
<div class="line"><a name="l05931"></a><span class="lineno"> 5931</span>  {</div>
|
||
<div class="line"><a name="l05932"></a><span class="lineno"> 5932</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||
<div class="line"><a name="l05933"></a><span class="lineno"> 5933</span>  }</div>
|
||
<div class="line"><a name="l05934"></a><span class="lineno"> 5934</span>  </div>
|
||
<div class="line"><a name="l05935"></a><span class="lineno"> 5935</span>  <span class="keywordflow">if</span> (len != std::size_t(-1))</div>
|
||
<div class="line"><a name="l05936"></a><span class="lineno"> 5936</span>  {</div>
|
||
<div class="line"><a name="l05937"></a><span class="lineno"> 5937</span>  <span class="keywordflow">for</span> (std::size_t i = 0; i < len; ++i)</div>
|
||
<div class="line"><a name="l05938"></a><span class="lineno"> 5938</span>  {</div>
|
||
<div class="line"><a name="l05939"></a><span class="lineno"> 5939</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not parse_cbor_internal()))</div>
|
||
<div class="line"><a name="l05940"></a><span class="lineno"> 5940</span>  {</div>
|
||
<div class="line"><a name="l05941"></a><span class="lineno"> 5941</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||
<div class="line"><a name="l05942"></a><span class="lineno"> 5942</span>  }</div>
|
||
<div class="line"><a name="l05943"></a><span class="lineno"> 5943</span>  }</div>
|
||
<div class="line"><a name="l05944"></a><span class="lineno"> 5944</span>  }</div>
|
||
<div class="line"><a name="l05945"></a><span class="lineno"> 5945</span>  <span class="keywordflow">else</span></div>
|
||
<div class="line"><a name="l05946"></a><span class="lineno"> 5946</span>  {</div>
|
||
<div class="line"><a name="l05947"></a><span class="lineno"> 5947</span>  <span class="keywordflow">while</span> (get() != 0xFF)</div>
|
||
<div class="line"><a name="l05948"></a><span class="lineno"> 5948</span>  {</div>
|
||
<div class="line"><a name="l05949"></a><span class="lineno"> 5949</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not parse_cbor_internal(<span class="keyword">false</span>)))</div>
|
||
<div class="line"><a name="l05950"></a><span class="lineno"> 5950</span>  {</div>
|
||
<div class="line"><a name="l05951"></a><span class="lineno"> 5951</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||
<div class="line"><a name="l05952"></a><span class="lineno"> 5952</span>  }</div>
|
||
<div class="line"><a name="l05953"></a><span class="lineno"> 5953</span>  }</div>
|
||
<div class="line"><a name="l05954"></a><span class="lineno"> 5954</span>  }</div>
|
||
<div class="line"><a name="l05955"></a><span class="lineno"> 5955</span>  </div>
|
||
<div class="line"><a name="l05956"></a><span class="lineno"> 5956</span>  <span class="keywordflow">return</span> sax->end_array();</div>
|
||
<div class="line"><a name="l05957"></a><span class="lineno"> 5957</span>  }</div>
|
||
<div class="line"><a name="l05958"></a><span class="lineno"> 5958</span>  </div>
|
||
<div class="line"><a name="l05964"></a><span class="lineno"> 5964</span>  <span class="keywordtype">bool</span> get_cbor_object(<span class="keyword">const</span> std::size_t len)</div>
|
||
<div class="line"><a name="l05965"></a><span class="lineno"> 5965</span>  {</div>
|
||
<div class="line"><a name="l05966"></a><span class="lineno"> 5966</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not sax->start_object(len)))</div>
|
||
<div class="line"><a name="l05967"></a><span class="lineno"> 5967</span>  {</div>
|
||
<div class="line"><a name="l05968"></a><span class="lineno"> 5968</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||
<div class="line"><a name="l05969"></a><span class="lineno"> 5969</span>  }</div>
|
||
<div class="line"><a name="l05970"></a><span class="lineno"> 5970</span>  </div>
|
||
<div class="line"><a name="l05971"></a><span class="lineno"> 5971</span>  string_t key;</div>
|
||
<div class="line"><a name="l05972"></a><span class="lineno"> 5972</span>  <span class="keywordflow">if</span> (len != std::size_t(-1))</div>
|
||
<div class="line"><a name="l05973"></a><span class="lineno"> 5973</span>  {</div>
|
||
<div class="line"><a name="l05974"></a><span class="lineno"> 5974</span>  <span class="keywordflow">for</span> (std::size_t i = 0; i < len; ++i)</div>
|
||
<div class="line"><a name="l05975"></a><span class="lineno"> 5975</span>  {</div>
|
||
<div class="line"><a name="l05976"></a><span class="lineno"> 5976</span>  get();</div>
|
||
<div class="line"><a name="l05977"></a><span class="lineno"> 5977</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not get_cbor_string(key) or not sax->key(key)))</div>
|
||
<div class="line"><a name="l05978"></a><span class="lineno"> 5978</span>  {</div>
|
||
<div class="line"><a name="l05979"></a><span class="lineno"> 5979</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||
<div class="line"><a name="l05980"></a><span class="lineno"> 5980</span>  }</div>
|
||
<div class="line"><a name="l05981"></a><span class="lineno"> 5981</span>  </div>
|
||
<div class="line"><a name="l05982"></a><span class="lineno"> 5982</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not parse_cbor_internal()))</div>
|
||
<div class="line"><a name="l05983"></a><span class="lineno"> 5983</span>  {</div>
|
||
<div class="line"><a name="l05984"></a><span class="lineno"> 5984</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||
<div class="line"><a name="l05985"></a><span class="lineno"> 5985</span>  }</div>
|
||
<div class="line"><a name="l05986"></a><span class="lineno"> 5986</span>  key.clear();</div>
|
||
<div class="line"><a name="l05987"></a><span class="lineno"> 5987</span>  }</div>
|
||
<div class="line"><a name="l05988"></a><span class="lineno"> 5988</span>  }</div>
|
||
<div class="line"><a name="l05989"></a><span class="lineno"> 5989</span>  <span class="keywordflow">else</span></div>
|
||
<div class="line"><a name="l05990"></a><span class="lineno"> 5990</span>  {</div>
|
||
<div class="line"><a name="l05991"></a><span class="lineno"> 5991</span>  <span class="keywordflow">while</span> (get() != 0xFF)</div>
|
||
<div class="line"><a name="l05992"></a><span class="lineno"> 5992</span>  {</div>
|
||
<div class="line"><a name="l05993"></a><span class="lineno"> 5993</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not get_cbor_string(key) or not sax->key(key)))</div>
|
||
<div class="line"><a name="l05994"></a><span class="lineno"> 5994</span>  {</div>
|
||
<div class="line"><a name="l05995"></a><span class="lineno"> 5995</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||
<div class="line"><a name="l05996"></a><span class="lineno"> 5996</span>  }</div>
|
||
<div class="line"><a name="l05997"></a><span class="lineno"> 5997</span>  </div>
|
||
<div class="line"><a name="l05998"></a><span class="lineno"> 5998</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not parse_cbor_internal()))</div>
|
||
<div class="line"><a name="l05999"></a><span class="lineno"> 5999</span>  {</div>
|
||
<div class="line"><a name="l06000"></a><span class="lineno"> 6000</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||
<div class="line"><a name="l06001"></a><span class="lineno"> 6001</span>  }</div>
|
||
<div class="line"><a name="l06002"></a><span class="lineno"> 6002</span>  key.clear();</div>
|
||
<div class="line"><a name="l06003"></a><span class="lineno"> 6003</span>  }</div>
|
||
<div class="line"><a name="l06004"></a><span class="lineno"> 6004</span>  }</div>
|
||
<div class="line"><a name="l06005"></a><span class="lineno"> 6005</span>  </div>
|
||
<div class="line"><a name="l06006"></a><span class="lineno"> 6006</span>  <span class="keywordflow">return</span> sax->end_object();</div>
|
||
<div class="line"><a name="l06007"></a><span class="lineno"> 6007</span>  }</div>
|
||
<div class="line"><a name="l06008"></a><span class="lineno"> 6008</span>  </div>
|
||
<div class="line"><a name="l06010"></a><span class="lineno"> 6010</span>  <span class="comment">// MsgPack //</span></div>
|
||
<div class="line"><a name="l06012"></a><span class="lineno"> 6012</span> <span class="comment"></span> </div>
|
||
<div class="line"><a name="l06016"></a><span class="lineno"> 6016</span>  <span class="keywordtype">bool</span> parse_msgpack_internal()</div>
|
||
<div class="line"><a name="l06017"></a><span class="lineno"> 6017</span>  {</div>
|
||
<div class="line"><a name="l06018"></a><span class="lineno"> 6018</span>  <span class="keywordflow">switch</span> (get())</div>
|
||
<div class="line"><a name="l06019"></a><span class="lineno"> 6019</span>  {</div>
|
||
<div class="line"><a name="l06020"></a><span class="lineno"> 6020</span>  <span class="comment">// EOF</span></div>
|
||
<div class="line"><a name="l06021"></a><span class="lineno"> 6021</span>  <span class="keywordflow">case</span> std::char_traits<char>::eof():</div>
|
||
<div class="line"><a name="l06022"></a><span class="lineno"> 6022</span>  return unexpect_eof(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40">input_format_t</a>::<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40ac40d516627022a54003ac2b74a82688a">msgpack</a>, <span class="stringliteral">"value"</span>);</div>
|
||
<div class="line"><a name="l06023"></a><span class="lineno"> 6023</span>  </div>
|
||
<div class="line"><a name="l06024"></a><span class="lineno"> 6024</span>  <span class="comment">// positive fixint</span></div>
|
||
<div class="line"><a name="l06025"></a><span class="lineno"> 6025</span>  <span class="keywordflow">case</span> 0x00:</div>
|
||
<div class="line"><a name="l06026"></a><span class="lineno"> 6026</span>  <span class="keywordflow">case</span> 0x01:</div>
|
||
<div class="line"><a name="l06027"></a><span class="lineno"> 6027</span>  <span class="keywordflow">case</span> 0x02:</div>
|
||
<div class="line"><a name="l06028"></a><span class="lineno"> 6028</span>  <span class="keywordflow">case</span> 0x03:</div>
|
||
<div class="line"><a name="l06029"></a><span class="lineno"> 6029</span>  <span class="keywordflow">case</span> 0x04:</div>
|
||
<div class="line"><a name="l06030"></a><span class="lineno"> 6030</span>  <span class="keywordflow">case</span> 0x05:</div>
|
||
<div class="line"><a name="l06031"></a><span class="lineno"> 6031</span>  <span class="keywordflow">case</span> 0x06:</div>
|
||
<div class="line"><a name="l06032"></a><span class="lineno"> 6032</span>  <span class="keywordflow">case</span> 0x07:</div>
|
||
<div class="line"><a name="l06033"></a><span class="lineno"> 6033</span>  <span class="keywordflow">case</span> 0x08:</div>
|
||
<div class="line"><a name="l06034"></a><span class="lineno"> 6034</span>  <span class="keywordflow">case</span> 0x09:</div>
|
||
<div class="line"><a name="l06035"></a><span class="lineno"> 6035</span>  <span class="keywordflow">case</span> 0x0A:</div>
|
||
<div class="line"><a name="l06036"></a><span class="lineno"> 6036</span>  <span class="keywordflow">case</span> 0x0B:</div>
|
||
<div class="line"><a name="l06037"></a><span class="lineno"> 6037</span>  <span class="keywordflow">case</span> 0x0C:</div>
|
||
<div class="line"><a name="l06038"></a><span class="lineno"> 6038</span>  <span class="keywordflow">case</span> 0x0D:</div>
|
||
<div class="line"><a name="l06039"></a><span class="lineno"> 6039</span>  <span class="keywordflow">case</span> 0x0E:</div>
|
||
<div class="line"><a name="l06040"></a><span class="lineno"> 6040</span>  <span class="keywordflow">case</span> 0x0F:</div>
|
||
<div class="line"><a name="l06041"></a><span class="lineno"> 6041</span>  <span class="keywordflow">case</span> 0x10:</div>
|
||
<div class="line"><a name="l06042"></a><span class="lineno"> 6042</span>  <span class="keywordflow">case</span> 0x11:</div>
|
||
<div class="line"><a name="l06043"></a><span class="lineno"> 6043</span>  <span class="keywordflow">case</span> 0x12:</div>
|
||
<div class="line"><a name="l06044"></a><span class="lineno"> 6044</span>  <span class="keywordflow">case</span> 0x13:</div>
|
||
<div class="line"><a name="l06045"></a><span class="lineno"> 6045</span>  <span class="keywordflow">case</span> 0x14:</div>
|
||
<div class="line"><a name="l06046"></a><span class="lineno"> 6046</span>  <span class="keywordflow">case</span> 0x15:</div>
|
||
<div class="line"><a name="l06047"></a><span class="lineno"> 6047</span>  <span class="keywordflow">case</span> 0x16:</div>
|
||
<div class="line"><a name="l06048"></a><span class="lineno"> 6048</span>  <span class="keywordflow">case</span> 0x17:</div>
|
||
<div class="line"><a name="l06049"></a><span class="lineno"> 6049</span>  <span class="keywordflow">case</span> 0x18:</div>
|
||
<div class="line"><a name="l06050"></a><span class="lineno"> 6050</span>  <span class="keywordflow">case</span> 0x19:</div>
|
||
<div class="line"><a name="l06051"></a><span class="lineno"> 6051</span>  <span class="keywordflow">case</span> 0x1A:</div>
|
||
<div class="line"><a name="l06052"></a><span class="lineno"> 6052</span>  <span class="keywordflow">case</span> 0x1B:</div>
|
||
<div class="line"><a name="l06053"></a><span class="lineno"> 6053</span>  <span class="keywordflow">case</span> 0x1C:</div>
|
||
<div class="line"><a name="l06054"></a><span class="lineno"> 6054</span>  <span class="keywordflow">case</span> 0x1D:</div>
|
||
<div class="line"><a name="l06055"></a><span class="lineno"> 6055</span>  <span class="keywordflow">case</span> 0x1E:</div>
|
||
<div class="line"><a name="l06056"></a><span class="lineno"> 6056</span>  <span class="keywordflow">case</span> 0x1F:</div>
|
||
<div class="line"><a name="l06057"></a><span class="lineno"> 6057</span>  <span class="keywordflow">case</span> 0x20:</div>
|
||
<div class="line"><a name="l06058"></a><span class="lineno"> 6058</span>  <span class="keywordflow">case</span> 0x21:</div>
|
||
<div class="line"><a name="l06059"></a><span class="lineno"> 6059</span>  <span class="keywordflow">case</span> 0x22:</div>
|
||
<div class="line"><a name="l06060"></a><span class="lineno"> 6060</span>  <span class="keywordflow">case</span> 0x23:</div>
|
||
<div class="line"><a name="l06061"></a><span class="lineno"> 6061</span>  <span class="keywordflow">case</span> 0x24:</div>
|
||
<div class="line"><a name="l06062"></a><span class="lineno"> 6062</span>  <span class="keywordflow">case</span> 0x25:</div>
|
||
<div class="line"><a name="l06063"></a><span class="lineno"> 6063</span>  <span class="keywordflow">case</span> 0x26:</div>
|
||
<div class="line"><a name="l06064"></a><span class="lineno"> 6064</span>  <span class="keywordflow">case</span> 0x27:</div>
|
||
<div class="line"><a name="l06065"></a><span class="lineno"> 6065</span>  <span class="keywordflow">case</span> 0x28:</div>
|
||
<div class="line"><a name="l06066"></a><span class="lineno"> 6066</span>  <span class="keywordflow">case</span> 0x29:</div>
|
||
<div class="line"><a name="l06067"></a><span class="lineno"> 6067</span>  <span class="keywordflow">case</span> 0x2A:</div>
|
||
<div class="line"><a name="l06068"></a><span class="lineno"> 6068</span>  <span class="keywordflow">case</span> 0x2B:</div>
|
||
<div class="line"><a name="l06069"></a><span class="lineno"> 6069</span>  <span class="keywordflow">case</span> 0x2C:</div>
|
||
<div class="line"><a name="l06070"></a><span class="lineno"> 6070</span>  <span class="keywordflow">case</span> 0x2D:</div>
|
||
<div class="line"><a name="l06071"></a><span class="lineno"> 6071</span>  <span class="keywordflow">case</span> 0x2E:</div>
|
||
<div class="line"><a name="l06072"></a><span class="lineno"> 6072</span>  <span class="keywordflow">case</span> 0x2F:</div>
|
||
<div class="line"><a name="l06073"></a><span class="lineno"> 6073</span>  <span class="keywordflow">case</span> 0x30:</div>
|
||
<div class="line"><a name="l06074"></a><span class="lineno"> 6074</span>  <span class="keywordflow">case</span> 0x31:</div>
|
||
<div class="line"><a name="l06075"></a><span class="lineno"> 6075</span>  <span class="keywordflow">case</span> 0x32:</div>
|
||
<div class="line"><a name="l06076"></a><span class="lineno"> 6076</span>  <span class="keywordflow">case</span> 0x33:</div>
|
||
<div class="line"><a name="l06077"></a><span class="lineno"> 6077</span>  <span class="keywordflow">case</span> 0x34:</div>
|
||
<div class="line"><a name="l06078"></a><span class="lineno"> 6078</span>  <span class="keywordflow">case</span> 0x35:</div>
|
||
<div class="line"><a name="l06079"></a><span class="lineno"> 6079</span>  <span class="keywordflow">case</span> 0x36:</div>
|
||
<div class="line"><a name="l06080"></a><span class="lineno"> 6080</span>  <span class="keywordflow">case</span> 0x37:</div>
|
||
<div class="line"><a name="l06081"></a><span class="lineno"> 6081</span>  <span class="keywordflow">case</span> 0x38:</div>
|
||
<div class="line"><a name="l06082"></a><span class="lineno"> 6082</span>  <span class="keywordflow">case</span> 0x39:</div>
|
||
<div class="line"><a name="l06083"></a><span class="lineno"> 6083</span>  <span class="keywordflow">case</span> 0x3A:</div>
|
||
<div class="line"><a name="l06084"></a><span class="lineno"> 6084</span>  <span class="keywordflow">case</span> 0x3B:</div>
|
||
<div class="line"><a name="l06085"></a><span class="lineno"> 6085</span>  <span class="keywordflow">case</span> 0x3C:</div>
|
||
<div class="line"><a name="l06086"></a><span class="lineno"> 6086</span>  <span class="keywordflow">case</span> 0x3D:</div>
|
||
<div class="line"><a name="l06087"></a><span class="lineno"> 6087</span>  <span class="keywordflow">case</span> 0x3E:</div>
|
||
<div class="line"><a name="l06088"></a><span class="lineno"> 6088</span>  <span class="keywordflow">case</span> 0x3F:</div>
|
||
<div class="line"><a name="l06089"></a><span class="lineno"> 6089</span>  <span class="keywordflow">case</span> 0x40:</div>
|
||
<div class="line"><a name="l06090"></a><span class="lineno"> 6090</span>  <span class="keywordflow">case</span> 0x41:</div>
|
||
<div class="line"><a name="l06091"></a><span class="lineno"> 6091</span>  <span class="keywordflow">case</span> 0x42:</div>
|
||
<div class="line"><a name="l06092"></a><span class="lineno"> 6092</span>  <span class="keywordflow">case</span> 0x43:</div>
|
||
<div class="line"><a name="l06093"></a><span class="lineno"> 6093</span>  <span class="keywordflow">case</span> 0x44:</div>
|
||
<div class="line"><a name="l06094"></a><span class="lineno"> 6094</span>  <span class="keywordflow">case</span> 0x45:</div>
|
||
<div class="line"><a name="l06095"></a><span class="lineno"> 6095</span>  <span class="keywordflow">case</span> 0x46:</div>
|
||
<div class="line"><a name="l06096"></a><span class="lineno"> 6096</span>  <span class="keywordflow">case</span> 0x47:</div>
|
||
<div class="line"><a name="l06097"></a><span class="lineno"> 6097</span>  <span class="keywordflow">case</span> 0x48:</div>
|
||
<div class="line"><a name="l06098"></a><span class="lineno"> 6098</span>  <span class="keywordflow">case</span> 0x49:</div>
|
||
<div class="line"><a name="l06099"></a><span class="lineno"> 6099</span>  <span class="keywordflow">case</span> 0x4A:</div>
|
||
<div class="line"><a name="l06100"></a><span class="lineno"> 6100</span>  <span class="keywordflow">case</span> 0x4B:</div>
|
||
<div class="line"><a name="l06101"></a><span class="lineno"> 6101</span>  <span class="keywordflow">case</span> 0x4C:</div>
|
||
<div class="line"><a name="l06102"></a><span class="lineno"> 6102</span>  <span class="keywordflow">case</span> 0x4D:</div>
|
||
<div class="line"><a name="l06103"></a><span class="lineno"> 6103</span>  <span class="keywordflow">case</span> 0x4E:</div>
|
||
<div class="line"><a name="l06104"></a><span class="lineno"> 6104</span>  <span class="keywordflow">case</span> 0x4F:</div>
|
||
<div class="line"><a name="l06105"></a><span class="lineno"> 6105</span>  <span class="keywordflow">case</span> 0x50:</div>
|
||
<div class="line"><a name="l06106"></a><span class="lineno"> 6106</span>  <span class="keywordflow">case</span> 0x51:</div>
|
||
<div class="line"><a name="l06107"></a><span class="lineno"> 6107</span>  <span class="keywordflow">case</span> 0x52:</div>
|
||
<div class="line"><a name="l06108"></a><span class="lineno"> 6108</span>  <span class="keywordflow">case</span> 0x53:</div>
|
||
<div class="line"><a name="l06109"></a><span class="lineno"> 6109</span>  <span class="keywordflow">case</span> 0x54:</div>
|
||
<div class="line"><a name="l06110"></a><span class="lineno"> 6110</span>  <span class="keywordflow">case</span> 0x55:</div>
|
||
<div class="line"><a name="l06111"></a><span class="lineno"> 6111</span>  <span class="keywordflow">case</span> 0x56:</div>
|
||
<div class="line"><a name="l06112"></a><span class="lineno"> 6112</span>  <span class="keywordflow">case</span> 0x57:</div>
|
||
<div class="line"><a name="l06113"></a><span class="lineno"> 6113</span>  <span class="keywordflow">case</span> 0x58:</div>
|
||
<div class="line"><a name="l06114"></a><span class="lineno"> 6114</span>  <span class="keywordflow">case</span> 0x59:</div>
|
||
<div class="line"><a name="l06115"></a><span class="lineno"> 6115</span>  <span class="keywordflow">case</span> 0x5A:</div>
|
||
<div class="line"><a name="l06116"></a><span class="lineno"> 6116</span>  <span class="keywordflow">case</span> 0x5B:</div>
|
||
<div class="line"><a name="l06117"></a><span class="lineno"> 6117</span>  <span class="keywordflow">case</span> 0x5C:</div>
|
||
<div class="line"><a name="l06118"></a><span class="lineno"> 6118</span>  <span class="keywordflow">case</span> 0x5D:</div>
|
||
<div class="line"><a name="l06119"></a><span class="lineno"> 6119</span>  <span class="keywordflow">case</span> 0x5E:</div>
|
||
<div class="line"><a name="l06120"></a><span class="lineno"> 6120</span>  <span class="keywordflow">case</span> 0x5F:</div>
|
||
<div class="line"><a name="l06121"></a><span class="lineno"> 6121</span>  <span class="keywordflow">case</span> 0x60:</div>
|
||
<div class="line"><a name="l06122"></a><span class="lineno"> 6122</span>  <span class="keywordflow">case</span> 0x61:</div>
|
||
<div class="line"><a name="l06123"></a><span class="lineno"> 6123</span>  <span class="keywordflow">case</span> 0x62:</div>
|
||
<div class="line"><a name="l06124"></a><span class="lineno"> 6124</span>  <span class="keywordflow">case</span> 0x63:</div>
|
||
<div class="line"><a name="l06125"></a><span class="lineno"> 6125</span>  <span class="keywordflow">case</span> 0x64:</div>
|
||
<div class="line"><a name="l06126"></a><span class="lineno"> 6126</span>  <span class="keywordflow">case</span> 0x65:</div>
|
||
<div class="line"><a name="l06127"></a><span class="lineno"> 6127</span>  <span class="keywordflow">case</span> 0x66:</div>
|
||
<div class="line"><a name="l06128"></a><span class="lineno"> 6128</span>  <span class="keywordflow">case</span> 0x67:</div>
|
||
<div class="line"><a name="l06129"></a><span class="lineno"> 6129</span>  <span class="keywordflow">case</span> 0x68:</div>
|
||
<div class="line"><a name="l06130"></a><span class="lineno"> 6130</span>  <span class="keywordflow">case</span> 0x69:</div>
|
||
<div class="line"><a name="l06131"></a><span class="lineno"> 6131</span>  <span class="keywordflow">case</span> 0x6A:</div>
|
||
<div class="line"><a name="l06132"></a><span class="lineno"> 6132</span>  <span class="keywordflow">case</span> 0x6B:</div>
|
||
<div class="line"><a name="l06133"></a><span class="lineno"> 6133</span>  <span class="keywordflow">case</span> 0x6C:</div>
|
||
<div class="line"><a name="l06134"></a><span class="lineno"> 6134</span>  <span class="keywordflow">case</span> 0x6D:</div>
|
||
<div class="line"><a name="l06135"></a><span class="lineno"> 6135</span>  <span class="keywordflow">case</span> 0x6E:</div>
|
||
<div class="line"><a name="l06136"></a><span class="lineno"> 6136</span>  <span class="keywordflow">case</span> 0x6F:</div>
|
||
<div class="line"><a name="l06137"></a><span class="lineno"> 6137</span>  <span class="keywordflow">case</span> 0x70:</div>
|
||
<div class="line"><a name="l06138"></a><span class="lineno"> 6138</span>  <span class="keywordflow">case</span> 0x71:</div>
|
||
<div class="line"><a name="l06139"></a><span class="lineno"> 6139</span>  <span class="keywordflow">case</span> 0x72:</div>
|
||
<div class="line"><a name="l06140"></a><span class="lineno"> 6140</span>  <span class="keywordflow">case</span> 0x73:</div>
|
||
<div class="line"><a name="l06141"></a><span class="lineno"> 6141</span>  <span class="keywordflow">case</span> 0x74:</div>
|
||
<div class="line"><a name="l06142"></a><span class="lineno"> 6142</span>  <span class="keywordflow">case</span> 0x75:</div>
|
||
<div class="line"><a name="l06143"></a><span class="lineno"> 6143</span>  <span class="keywordflow">case</span> 0x76:</div>
|
||
<div class="line"><a name="l06144"></a><span class="lineno"> 6144</span>  <span class="keywordflow">case</span> 0x77:</div>
|
||
<div class="line"><a name="l06145"></a><span class="lineno"> 6145</span>  <span class="keywordflow">case</span> 0x78:</div>
|
||
<div class="line"><a name="l06146"></a><span class="lineno"> 6146</span>  <span class="keywordflow">case</span> 0x79:</div>
|
||
<div class="line"><a name="l06147"></a><span class="lineno"> 6147</span>  <span class="keywordflow">case</span> 0x7A:</div>
|
||
<div class="line"><a name="l06148"></a><span class="lineno"> 6148</span>  <span class="keywordflow">case</span> 0x7B:</div>
|
||
<div class="line"><a name="l06149"></a><span class="lineno"> 6149</span>  <span class="keywordflow">case</span> 0x7C:</div>
|
||
<div class="line"><a name="l06150"></a><span class="lineno"> 6150</span>  <span class="keywordflow">case</span> 0x7D:</div>
|
||
<div class="line"><a name="l06151"></a><span class="lineno"> 6151</span>  <span class="keywordflow">case</span> 0x7E:</div>
|
||
<div class="line"><a name="l06152"></a><span class="lineno"> 6152</span>  <span class="keywordflow">case</span> 0x7F:</div>
|
||
<div class="line"><a name="l06153"></a><span class="lineno"> 6153</span>  <span class="keywordflow">return</span> sax->number_unsigned(<span class="keyword">static_cast<</span>number_unsigned_t<span class="keyword">></span>(current));</div>
|
||
<div class="line"><a name="l06154"></a><span class="lineno"> 6154</span>  </div>
|
||
<div class="line"><a name="l06155"></a><span class="lineno"> 6155</span>  <span class="comment">// fixmap</span></div>
|
||
<div class="line"><a name="l06156"></a><span class="lineno"> 6156</span>  <span class="keywordflow">case</span> 0x80:</div>
|
||
<div class="line"><a name="l06157"></a><span class="lineno"> 6157</span>  <span class="keywordflow">case</span> 0x81:</div>
|
||
<div class="line"><a name="l06158"></a><span class="lineno"> 6158</span>  <span class="keywordflow">case</span> 0x82:</div>
|
||
<div class="line"><a name="l06159"></a><span class="lineno"> 6159</span>  <span class="keywordflow">case</span> 0x83:</div>
|
||
<div class="line"><a name="l06160"></a><span class="lineno"> 6160</span>  <span class="keywordflow">case</span> 0x84:</div>
|
||
<div class="line"><a name="l06161"></a><span class="lineno"> 6161</span>  <span class="keywordflow">case</span> 0x85:</div>
|
||
<div class="line"><a name="l06162"></a><span class="lineno"> 6162</span>  <span class="keywordflow">case</span> 0x86:</div>
|
||
<div class="line"><a name="l06163"></a><span class="lineno"> 6163</span>  <span class="keywordflow">case</span> 0x87:</div>
|
||
<div class="line"><a name="l06164"></a><span class="lineno"> 6164</span>  <span class="keywordflow">case</span> 0x88:</div>
|
||
<div class="line"><a name="l06165"></a><span class="lineno"> 6165</span>  <span class="keywordflow">case</span> 0x89:</div>
|
||
<div class="line"><a name="l06166"></a><span class="lineno"> 6166</span>  <span class="keywordflow">case</span> 0x8A:</div>
|
||
<div class="line"><a name="l06167"></a><span class="lineno"> 6167</span>  <span class="keywordflow">case</span> 0x8B:</div>
|
||
<div class="line"><a name="l06168"></a><span class="lineno"> 6168</span>  <span class="keywordflow">case</span> 0x8C:</div>
|
||
<div class="line"><a name="l06169"></a><span class="lineno"> 6169</span>  <span class="keywordflow">case</span> 0x8D:</div>
|
||
<div class="line"><a name="l06170"></a><span class="lineno"> 6170</span>  <span class="keywordflow">case</span> 0x8E:</div>
|
||
<div class="line"><a name="l06171"></a><span class="lineno"> 6171</span>  <span class="keywordflow">case</span> 0x8F:</div>
|
||
<div class="line"><a name="l06172"></a><span class="lineno"> 6172</span>  <span class="keywordflow">return</span> get_msgpack_object(<span class="keyword">static_cast<</span>std::size_t<span class="keyword">></span>(<span class="keyword">static_cast<</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">></span>(current) & 0x0Fu));</div>
|
||
<div class="line"><a name="l06173"></a><span class="lineno"> 6173</span>  </div>
|
||
<div class="line"><a name="l06174"></a><span class="lineno"> 6174</span>  <span class="comment">// fixarray</span></div>
|
||
<div class="line"><a name="l06175"></a><span class="lineno"> 6175</span>  <span class="keywordflow">case</span> 0x90:</div>
|
||
<div class="line"><a name="l06176"></a><span class="lineno"> 6176</span>  <span class="keywordflow">case</span> 0x91:</div>
|
||
<div class="line"><a name="l06177"></a><span class="lineno"> 6177</span>  <span class="keywordflow">case</span> 0x92:</div>
|
||
<div class="line"><a name="l06178"></a><span class="lineno"> 6178</span>  <span class="keywordflow">case</span> 0x93:</div>
|
||
<div class="line"><a name="l06179"></a><span class="lineno"> 6179</span>  <span class="keywordflow">case</span> 0x94:</div>
|
||
<div class="line"><a name="l06180"></a><span class="lineno"> 6180</span>  <span class="keywordflow">case</span> 0x95:</div>
|
||
<div class="line"><a name="l06181"></a><span class="lineno"> 6181</span>  <span class="keywordflow">case</span> 0x96:</div>
|
||
<div class="line"><a name="l06182"></a><span class="lineno"> 6182</span>  <span class="keywordflow">case</span> 0x97:</div>
|
||
<div class="line"><a name="l06183"></a><span class="lineno"> 6183</span>  <span class="keywordflow">case</span> 0x98:</div>
|
||
<div class="line"><a name="l06184"></a><span class="lineno"> 6184</span>  <span class="keywordflow">case</span> 0x99:</div>
|
||
<div class="line"><a name="l06185"></a><span class="lineno"> 6185</span>  <span class="keywordflow">case</span> 0x9A:</div>
|
||
<div class="line"><a name="l06186"></a><span class="lineno"> 6186</span>  <span class="keywordflow">case</span> 0x9B:</div>
|
||
<div class="line"><a name="l06187"></a><span class="lineno"> 6187</span>  <span class="keywordflow">case</span> 0x9C:</div>
|
||
<div class="line"><a name="l06188"></a><span class="lineno"> 6188</span>  <span class="keywordflow">case</span> 0x9D:</div>
|
||
<div class="line"><a name="l06189"></a><span class="lineno"> 6189</span>  <span class="keywordflow">case</span> 0x9E:</div>
|
||
<div class="line"><a name="l06190"></a><span class="lineno"> 6190</span>  <span class="keywordflow">case</span> 0x9F:</div>
|
||
<div class="line"><a name="l06191"></a><span class="lineno"> 6191</span>  <span class="keywordflow">return</span> get_msgpack_array(<span class="keyword">static_cast<</span>std::size_t<span class="keyword">></span>(<span class="keyword">static_cast<</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">></span>(current) & 0x0Fu));</div>
|
||
<div class="line"><a name="l06192"></a><span class="lineno"> 6192</span>  </div>
|
||
<div class="line"><a name="l06193"></a><span class="lineno"> 6193</span>  <span class="comment">// fixstr</span></div>
|
||
<div class="line"><a name="l06194"></a><span class="lineno"> 6194</span>  <span class="keywordflow">case</span> 0xA0:</div>
|
||
<div class="line"><a name="l06195"></a><span class="lineno"> 6195</span>  <span class="keywordflow">case</span> 0xA1:</div>
|
||
<div class="line"><a name="l06196"></a><span class="lineno"> 6196</span>  <span class="keywordflow">case</span> 0xA2:</div>
|
||
<div class="line"><a name="l06197"></a><span class="lineno"> 6197</span>  <span class="keywordflow">case</span> 0xA3:</div>
|
||
<div class="line"><a name="l06198"></a><span class="lineno"> 6198</span>  <span class="keywordflow">case</span> 0xA4:</div>
|
||
<div class="line"><a name="l06199"></a><span class="lineno"> 6199</span>  <span class="keywordflow">case</span> 0xA5:</div>
|
||
<div class="line"><a name="l06200"></a><span class="lineno"> 6200</span>  <span class="keywordflow">case</span> 0xA6:</div>
|
||
<div class="line"><a name="l06201"></a><span class="lineno"> 6201</span>  <span class="keywordflow">case</span> 0xA7:</div>
|
||
<div class="line"><a name="l06202"></a><span class="lineno"> 6202</span>  <span class="keywordflow">case</span> 0xA8:</div>
|
||
<div class="line"><a name="l06203"></a><span class="lineno"> 6203</span>  <span class="keywordflow">case</span> 0xA9:</div>
|
||
<div class="line"><a name="l06204"></a><span class="lineno"> 6204</span>  <span class="keywordflow">case</span> 0xAA:</div>
|
||
<div class="line"><a name="l06205"></a><span class="lineno"> 6205</span>  <span class="keywordflow">case</span> 0xAB:</div>
|
||
<div class="line"><a name="l06206"></a><span class="lineno"> 6206</span>  <span class="keywordflow">case</span> 0xAC:</div>
|
||
<div class="line"><a name="l06207"></a><span class="lineno"> 6207</span>  <span class="keywordflow">case</span> 0xAD:</div>
|
||
<div class="line"><a name="l06208"></a><span class="lineno"> 6208</span>  <span class="keywordflow">case</span> 0xAE:</div>
|
||
<div class="line"><a name="l06209"></a><span class="lineno"> 6209</span>  <span class="keywordflow">case</span> 0xAF:</div>
|
||
<div class="line"><a name="l06210"></a><span class="lineno"> 6210</span>  <span class="keywordflow">case</span> 0xB0:</div>
|
||
<div class="line"><a name="l06211"></a><span class="lineno"> 6211</span>  <span class="keywordflow">case</span> 0xB1:</div>
|
||
<div class="line"><a name="l06212"></a><span class="lineno"> 6212</span>  <span class="keywordflow">case</span> 0xB2:</div>
|
||
<div class="line"><a name="l06213"></a><span class="lineno"> 6213</span>  <span class="keywordflow">case</span> 0xB3:</div>
|
||
<div class="line"><a name="l06214"></a><span class="lineno"> 6214</span>  <span class="keywordflow">case</span> 0xB4:</div>
|
||
<div class="line"><a name="l06215"></a><span class="lineno"> 6215</span>  <span class="keywordflow">case</span> 0xB5:</div>
|
||
<div class="line"><a name="l06216"></a><span class="lineno"> 6216</span>  <span class="keywordflow">case</span> 0xB6:</div>
|
||
<div class="line"><a name="l06217"></a><span class="lineno"> 6217</span>  <span class="keywordflow">case</span> 0xB7:</div>
|
||
<div class="line"><a name="l06218"></a><span class="lineno"> 6218</span>  <span class="keywordflow">case</span> 0xB8:</div>
|
||
<div class="line"><a name="l06219"></a><span class="lineno"> 6219</span>  <span class="keywordflow">case</span> 0xB9:</div>
|
||
<div class="line"><a name="l06220"></a><span class="lineno"> 6220</span>  <span class="keywordflow">case</span> 0xBA:</div>
|
||
<div class="line"><a name="l06221"></a><span class="lineno"> 6221</span>  <span class="keywordflow">case</span> 0xBB:</div>
|
||
<div class="line"><a name="l06222"></a><span class="lineno"> 6222</span>  <span class="keywordflow">case</span> 0xBC:</div>
|
||
<div class="line"><a name="l06223"></a><span class="lineno"> 6223</span>  <span class="keywordflow">case</span> 0xBD:</div>
|
||
<div class="line"><a name="l06224"></a><span class="lineno"> 6224</span>  <span class="keywordflow">case</span> 0xBE:</div>
|
||
<div class="line"><a name="l06225"></a><span class="lineno"> 6225</span>  <span class="keywordflow">case</span> 0xBF:</div>
|
||
<div class="line"><a name="l06226"></a><span class="lineno"> 6226</span>  <span class="keywordflow">case</span> 0xD9: <span class="comment">// str 8</span></div>
|
||
<div class="line"><a name="l06227"></a><span class="lineno"> 6227</span>  <span class="keywordflow">case</span> 0xDA: <span class="comment">// str 16</span></div>
|
||
<div class="line"><a name="l06228"></a><span class="lineno"> 6228</span>  <span class="keywordflow">case</span> 0xDB: <span class="comment">// str 32</span></div>
|
||
<div class="line"><a name="l06229"></a><span class="lineno"> 6229</span>  {</div>
|
||
<div class="line"><a name="l06230"></a><span class="lineno"> 6230</span>  string_t s;</div>
|
||
<div class="line"><a name="l06231"></a><span class="lineno"> 6231</span>  <span class="keywordflow">return</span> get_msgpack_string(s) and sax->string(s);</div>
|
||
<div class="line"><a name="l06232"></a><span class="lineno"> 6232</span>  }</div>
|
||
<div class="line"><a name="l06233"></a><span class="lineno"> 6233</span>  </div>
|
||
<div class="line"><a name="l06234"></a><span class="lineno"> 6234</span>  <span class="keywordflow">case</span> 0xC0: <span class="comment">// nil</span></div>
|
||
<div class="line"><a name="l06235"></a><span class="lineno"> 6235</span>  <span class="keywordflow">return</span> sax->null();</div>
|
||
<div class="line"><a name="l06236"></a><span class="lineno"> 6236</span>  </div>
|
||
<div class="line"><a name="l06237"></a><span class="lineno"> 6237</span>  <span class="keywordflow">case</span> 0xC2: <span class="comment">// false</span></div>
|
||
<div class="line"><a name="l06238"></a><span class="lineno"> 6238</span>  <span class="keywordflow">return</span> sax->boolean(<span class="keyword">false</span>);</div>
|
||
<div class="line"><a name="l06239"></a><span class="lineno"> 6239</span>  </div>
|
||
<div class="line"><a name="l06240"></a><span class="lineno"> 6240</span>  <span class="keywordflow">case</span> 0xC3: <span class="comment">// true</span></div>
|
||
<div class="line"><a name="l06241"></a><span class="lineno"> 6241</span>  <span class="keywordflow">return</span> sax->boolean(<span class="keyword">true</span>);</div>
|
||
<div class="line"><a name="l06242"></a><span class="lineno"> 6242</span>  </div>
|
||
<div class="line"><a name="l06243"></a><span class="lineno"> 6243</span>  <span class="keywordflow">case</span> 0xCA: <span class="comment">// float 32</span></div>
|
||
<div class="line"><a name="l06244"></a><span class="lineno"> 6244</span>  {</div>
|
||
<div class="line"><a name="l06245"></a><span class="lineno"> 6245</span>  <span class="keywordtype">float</span> number;</div>
|
||
<div class="line"><a name="l06246"></a><span class="lineno"> 6246</span>  <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40ac40d516627022a54003ac2b74a82688a">input_format_t::msgpack</a>, number) and sax->number_float(<span class="keyword">static_cast<</span>number_float_t<span class="keyword">></span>(number), <span class="stringliteral">""</span>);</div>
|
||
<div class="line"><a name="l06247"></a><span class="lineno"> 6247</span>  }</div>
|
||
<div class="line"><a name="l06248"></a><span class="lineno"> 6248</span>  </div>
|
||
<div class="line"><a name="l06249"></a><span class="lineno"> 6249</span>  <span class="keywordflow">case</span> 0xCB: <span class="comment">// float 64</span></div>
|
||
<div class="line"><a name="l06250"></a><span class="lineno"> 6250</span>  {</div>
|
||
<div class="line"><a name="l06251"></a><span class="lineno"> 6251</span>  <span class="keywordtype">double</span> number;</div>
|
||
<div class="line"><a name="l06252"></a><span class="lineno"> 6252</span>  <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40ac40d516627022a54003ac2b74a82688a">input_format_t::msgpack</a>, number) and sax->number_float(<span class="keyword">static_cast<</span>number_float_t<span class="keyword">></span>(number), <span class="stringliteral">""</span>);</div>
|
||
<div class="line"><a name="l06253"></a><span class="lineno"> 6253</span>  }</div>
|
||
<div class="line"><a name="l06254"></a><span class="lineno"> 6254</span>  </div>
|
||
<div class="line"><a name="l06255"></a><span class="lineno"> 6255</span>  <span class="keywordflow">case</span> 0xCC: <span class="comment">// uint 8</span></div>
|
||
<div class="line"><a name="l06256"></a><span class="lineno"> 6256</span>  {</div>
|
||
<div class="line"><a name="l06257"></a><span class="lineno"> 6257</span>  std::uint8_t number;</div>
|
||
<div class="line"><a name="l06258"></a><span class="lineno"> 6258</span>  <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40ac40d516627022a54003ac2b74a82688a">input_format_t::msgpack</a>, number) and sax->number_unsigned(number);</div>
|
||
<div class="line"><a name="l06259"></a><span class="lineno"> 6259</span>  }</div>
|
||
<div class="line"><a name="l06260"></a><span class="lineno"> 6260</span>  </div>
|
||
<div class="line"><a name="l06261"></a><span class="lineno"> 6261</span>  <span class="keywordflow">case</span> 0xCD: <span class="comment">// uint 16</span></div>
|
||
<div class="line"><a name="l06262"></a><span class="lineno"> 6262</span>  {</div>
|
||
<div class="line"><a name="l06263"></a><span class="lineno"> 6263</span>  std::uint16_t number;</div>
|
||
<div class="line"><a name="l06264"></a><span class="lineno"> 6264</span>  <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40ac40d516627022a54003ac2b74a82688a">input_format_t::msgpack</a>, number) and sax->number_unsigned(number);</div>
|
||
<div class="line"><a name="l06265"></a><span class="lineno"> 6265</span>  }</div>
|
||
<div class="line"><a name="l06266"></a><span class="lineno"> 6266</span>  </div>
|
||
<div class="line"><a name="l06267"></a><span class="lineno"> 6267</span>  <span class="keywordflow">case</span> 0xCE: <span class="comment">// uint 32</span></div>
|
||
<div class="line"><a name="l06268"></a><span class="lineno"> 6268</span>  {</div>
|
||
<div class="line"><a name="l06269"></a><span class="lineno"> 6269</span>  std::uint32_t number;</div>
|
||
<div class="line"><a name="l06270"></a><span class="lineno"> 6270</span>  <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40ac40d516627022a54003ac2b74a82688a">input_format_t::msgpack</a>, number) and sax->number_unsigned(number);</div>
|
||
<div class="line"><a name="l06271"></a><span class="lineno"> 6271</span>  }</div>
|
||
<div class="line"><a name="l06272"></a><span class="lineno"> 6272</span>  </div>
|
||
<div class="line"><a name="l06273"></a><span class="lineno"> 6273</span>  <span class="keywordflow">case</span> 0xCF: <span class="comment">// uint 64</span></div>
|
||
<div class="line"><a name="l06274"></a><span class="lineno"> 6274</span>  {</div>
|
||
<div class="line"><a name="l06275"></a><span class="lineno"> 6275</span>  std::uint64_t number;</div>
|
||
<div class="line"><a name="l06276"></a><span class="lineno"> 6276</span>  <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40ac40d516627022a54003ac2b74a82688a">input_format_t::msgpack</a>, number) and sax->number_unsigned(number);</div>
|
||
<div class="line"><a name="l06277"></a><span class="lineno"> 6277</span>  }</div>
|
||
<div class="line"><a name="l06278"></a><span class="lineno"> 6278</span>  </div>
|
||
<div class="line"><a name="l06279"></a><span class="lineno"> 6279</span>  <span class="keywordflow">case</span> 0xD0: <span class="comment">// int 8</span></div>
|
||
<div class="line"><a name="l06280"></a><span class="lineno"> 6280</span>  {</div>
|
||
<div class="line"><a name="l06281"></a><span class="lineno"> 6281</span>  std::int8_t number;</div>
|
||
<div class="line"><a name="l06282"></a><span class="lineno"> 6282</span>  <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40ac40d516627022a54003ac2b74a82688a">input_format_t::msgpack</a>, number) and sax->number_integer(number);</div>
|
||
<div class="line"><a name="l06283"></a><span class="lineno"> 6283</span>  }</div>
|
||
<div class="line"><a name="l06284"></a><span class="lineno"> 6284</span>  </div>
|
||
<div class="line"><a name="l06285"></a><span class="lineno"> 6285</span>  <span class="keywordflow">case</span> 0xD1: <span class="comment">// int 16</span></div>
|
||
<div class="line"><a name="l06286"></a><span class="lineno"> 6286</span>  {</div>
|
||
<div class="line"><a name="l06287"></a><span class="lineno"> 6287</span>  std::int16_t number;</div>
|
||
<div class="line"><a name="l06288"></a><span class="lineno"> 6288</span>  <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40ac40d516627022a54003ac2b74a82688a">input_format_t::msgpack</a>, number) and sax->number_integer(number);</div>
|
||
<div class="line"><a name="l06289"></a><span class="lineno"> 6289</span>  }</div>
|
||
<div class="line"><a name="l06290"></a><span class="lineno"> 6290</span>  </div>
|
||
<div class="line"><a name="l06291"></a><span class="lineno"> 6291</span>  <span class="keywordflow">case</span> 0xD2: <span class="comment">// int 32</span></div>
|
||
<div class="line"><a name="l06292"></a><span class="lineno"> 6292</span>  {</div>
|
||
<div class="line"><a name="l06293"></a><span class="lineno"> 6293</span>  std::int32_t number;</div>
|
||
<div class="line"><a name="l06294"></a><span class="lineno"> 6294</span>  <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40ac40d516627022a54003ac2b74a82688a">input_format_t::msgpack</a>, number) and sax->number_integer(number);</div>
|
||
<div class="line"><a name="l06295"></a><span class="lineno"> 6295</span>  }</div>
|
||
<div class="line"><a name="l06296"></a><span class="lineno"> 6296</span>  </div>
|
||
<div class="line"><a name="l06297"></a><span class="lineno"> 6297</span>  <span class="keywordflow">case</span> 0xD3: <span class="comment">// int 64</span></div>
|
||
<div class="line"><a name="l06298"></a><span class="lineno"> 6298</span>  {</div>
|
||
<div class="line"><a name="l06299"></a><span class="lineno"> 6299</span>  std::int64_t number;</div>
|
||
<div class="line"><a name="l06300"></a><span class="lineno"> 6300</span>  <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40ac40d516627022a54003ac2b74a82688a">input_format_t::msgpack</a>, number) and sax->number_integer(number);</div>
|
||
<div class="line"><a name="l06301"></a><span class="lineno"> 6301</span>  }</div>
|
||
<div class="line"><a name="l06302"></a><span class="lineno"> 6302</span>  </div>
|
||
<div class="line"><a name="l06303"></a><span class="lineno"> 6303</span>  <span class="keywordflow">case</span> 0xDC: <span class="comment">// array 16</span></div>
|
||
<div class="line"><a name="l06304"></a><span class="lineno"> 6304</span>  {</div>
|
||
<div class="line"><a name="l06305"></a><span class="lineno"> 6305</span>  std::uint16_t len;</div>
|
||
<div class="line"><a name="l06306"></a><span class="lineno"> 6306</span>  <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40ac40d516627022a54003ac2b74a82688a">input_format_t::msgpack</a>, len) and get_msgpack_array(<span class="keyword">static_cast<</span>std::size_t<span class="keyword">></span>(len));</div>
|
||
<div class="line"><a name="l06307"></a><span class="lineno"> 6307</span>  }</div>
|
||
<div class="line"><a name="l06308"></a><span class="lineno"> 6308</span>  </div>
|
||
<div class="line"><a name="l06309"></a><span class="lineno"> 6309</span>  <span class="keywordflow">case</span> 0xDD: <span class="comment">// array 32</span></div>
|
||
<div class="line"><a name="l06310"></a><span class="lineno"> 6310</span>  {</div>
|
||
<div class="line"><a name="l06311"></a><span class="lineno"> 6311</span>  std::uint32_t len;</div>
|
||
<div class="line"><a name="l06312"></a><span class="lineno"> 6312</span>  <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40ac40d516627022a54003ac2b74a82688a">input_format_t::msgpack</a>, len) and get_msgpack_array(<span class="keyword">static_cast<</span>std::size_t<span class="keyword">></span>(len));</div>
|
||
<div class="line"><a name="l06313"></a><span class="lineno"> 6313</span>  }</div>
|
||
<div class="line"><a name="l06314"></a><span class="lineno"> 6314</span>  </div>
|
||
<div class="line"><a name="l06315"></a><span class="lineno"> 6315</span>  <span class="keywordflow">case</span> 0xDE: <span class="comment">// map 16</span></div>
|
||
<div class="line"><a name="l06316"></a><span class="lineno"> 6316</span>  {</div>
|
||
<div class="line"><a name="l06317"></a><span class="lineno"> 6317</span>  std::uint16_t len;</div>
|
||
<div class="line"><a name="l06318"></a><span class="lineno"> 6318</span>  <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40ac40d516627022a54003ac2b74a82688a">input_format_t::msgpack</a>, len) and get_msgpack_object(<span class="keyword">static_cast<</span>std::size_t<span class="keyword">></span>(len));</div>
|
||
<div class="line"><a name="l06319"></a><span class="lineno"> 6319</span>  }</div>
|
||
<div class="line"><a name="l06320"></a><span class="lineno"> 6320</span>  </div>
|
||
<div class="line"><a name="l06321"></a><span class="lineno"> 6321</span>  <span class="keywordflow">case</span> 0xDF: <span class="comment">// map 32</span></div>
|
||
<div class="line"><a name="l06322"></a><span class="lineno"> 6322</span>  {</div>
|
||
<div class="line"><a name="l06323"></a><span class="lineno"> 6323</span>  std::uint32_t len;</div>
|
||
<div class="line"><a name="l06324"></a><span class="lineno"> 6324</span>  <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40ac40d516627022a54003ac2b74a82688a">input_format_t::msgpack</a>, len) and get_msgpack_object(<span class="keyword">static_cast<</span>std::size_t<span class="keyword">></span>(len));</div>
|
||
<div class="line"><a name="l06325"></a><span class="lineno"> 6325</span>  }</div>
|
||
<div class="line"><a name="l06326"></a><span class="lineno"> 6326</span>  </div>
|
||
<div class="line"><a name="l06327"></a><span class="lineno"> 6327</span>  <span class="comment">// negative fixint</span></div>
|
||
<div class="line"><a name="l06328"></a><span class="lineno"> 6328</span>  <span class="keywordflow">case</span> 0xE0:</div>
|
||
<div class="line"><a name="l06329"></a><span class="lineno"> 6329</span>  <span class="keywordflow">case</span> 0xE1:</div>
|
||
<div class="line"><a name="l06330"></a><span class="lineno"> 6330</span>  <span class="keywordflow">case</span> 0xE2:</div>
|
||
<div class="line"><a name="l06331"></a><span class="lineno"> 6331</span>  <span class="keywordflow">case</span> 0xE3:</div>
|
||
<div class="line"><a name="l06332"></a><span class="lineno"> 6332</span>  <span class="keywordflow">case</span> 0xE4:</div>
|
||
<div class="line"><a name="l06333"></a><span class="lineno"> 6333</span>  <span class="keywordflow">case</span> 0xE5:</div>
|
||
<div class="line"><a name="l06334"></a><span class="lineno"> 6334</span>  <span class="keywordflow">case</span> 0xE6:</div>
|
||
<div class="line"><a name="l06335"></a><span class="lineno"> 6335</span>  <span class="keywordflow">case</span> 0xE7:</div>
|
||
<div class="line"><a name="l06336"></a><span class="lineno"> 6336</span>  <span class="keywordflow">case</span> 0xE8:</div>
|
||
<div class="line"><a name="l06337"></a><span class="lineno"> 6337</span>  <span class="keywordflow">case</span> 0xE9:</div>
|
||
<div class="line"><a name="l06338"></a><span class="lineno"> 6338</span>  <span class="keywordflow">case</span> 0xEA:</div>
|
||
<div class="line"><a name="l06339"></a><span class="lineno"> 6339</span>  <span class="keywordflow">case</span> 0xEB:</div>
|
||
<div class="line"><a name="l06340"></a><span class="lineno"> 6340</span>  <span class="keywordflow">case</span> 0xEC:</div>
|
||
<div class="line"><a name="l06341"></a><span class="lineno"> 6341</span>  <span class="keywordflow">case</span> 0xED:</div>
|
||
<div class="line"><a name="l06342"></a><span class="lineno"> 6342</span>  <span class="keywordflow">case</span> 0xEE:</div>
|
||
<div class="line"><a name="l06343"></a><span class="lineno"> 6343</span>  <span class="keywordflow">case</span> 0xEF:</div>
|
||
<div class="line"><a name="l06344"></a><span class="lineno"> 6344</span>  <span class="keywordflow">case</span> 0xF0:</div>
|
||
<div class="line"><a name="l06345"></a><span class="lineno"> 6345</span>  <span class="keywordflow">case</span> 0xF1:</div>
|
||
<div class="line"><a name="l06346"></a><span class="lineno"> 6346</span>  <span class="keywordflow">case</span> 0xF2:</div>
|
||
<div class="line"><a name="l06347"></a><span class="lineno"> 6347</span>  <span class="keywordflow">case</span> 0xF3:</div>
|
||
<div class="line"><a name="l06348"></a><span class="lineno"> 6348</span>  <span class="keywordflow">case</span> 0xF4:</div>
|
||
<div class="line"><a name="l06349"></a><span class="lineno"> 6349</span>  <span class="keywordflow">case</span> 0xF5:</div>
|
||
<div class="line"><a name="l06350"></a><span class="lineno"> 6350</span>  <span class="keywordflow">case</span> 0xF6:</div>
|
||
<div class="line"><a name="l06351"></a><span class="lineno"> 6351</span>  <span class="keywordflow">case</span> 0xF7:</div>
|
||
<div class="line"><a name="l06352"></a><span class="lineno"> 6352</span>  <span class="keywordflow">case</span> 0xF8:</div>
|
||
<div class="line"><a name="l06353"></a><span class="lineno"> 6353</span>  <span class="keywordflow">case</span> 0xF9:</div>
|
||
<div class="line"><a name="l06354"></a><span class="lineno"> 6354</span>  <span class="keywordflow">case</span> 0xFA:</div>
|
||
<div class="line"><a name="l06355"></a><span class="lineno"> 6355</span>  <span class="keywordflow">case</span> 0xFB:</div>
|
||
<div class="line"><a name="l06356"></a><span class="lineno"> 6356</span>  <span class="keywordflow">case</span> 0xFC:</div>
|
||
<div class="line"><a name="l06357"></a><span class="lineno"> 6357</span>  <span class="keywordflow">case</span> 0xFD:</div>
|
||
<div class="line"><a name="l06358"></a><span class="lineno"> 6358</span>  <span class="keywordflow">case</span> 0xFE:</div>
|
||
<div class="line"><a name="l06359"></a><span class="lineno"> 6359</span>  <span class="keywordflow">case</span> 0xFF:</div>
|
||
<div class="line"><a name="l06360"></a><span class="lineno"> 6360</span>  <span class="keywordflow">return</span> sax->number_integer(<span class="keyword">static_cast<</span>std::int8_t<span class="keyword">></span>(current));</div>
|
||
<div class="line"><a name="l06361"></a><span class="lineno"> 6361</span>  </div>
|
||
<div class="line"><a name="l06362"></a><span class="lineno"> 6362</span>  <span class="keywordflow">default</span>: <span class="comment">// anything else</span></div>
|
||
<div class="line"><a name="l06363"></a><span class="lineno"> 6363</span>  {</div>
|
||
<div class="line"><a name="l06364"></a><span class="lineno"> 6364</span>  <span class="keyword">auto</span> last_token = get_token_string();</div>
|
||
<div class="line"><a name="l06365"></a><span class="lineno"> 6365</span>  <span class="keywordflow">return</span> sax->parse_error(chars_read, last_token, <a class="code" href="classnlohmann_1_1detail_1_1parse__error.html#a137ea4d27de45d8a844fd13451d40f3d">parse_error::create</a>(112, chars_read, exception_message(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40ac40d516627022a54003ac2b74a82688a">input_format_t::msgpack</a>, <span class="stringliteral">"invalid byte: 0x"</span> + last_token, <span class="stringliteral">"value"</span>)));</div>
|
||
<div class="line"><a name="l06366"></a><span class="lineno"> 6366</span>  }</div>
|
||
<div class="line"><a name="l06367"></a><span class="lineno"> 6367</span>  }</div>
|
||
<div class="line"><a name="l06368"></a><span class="lineno"> 6368</span>  }</div>
|
||
<div class="line"><a name="l06369"></a><span class="lineno"> 6369</span>  </div>
|
||
<div class="line"><a name="l06380"></a><span class="lineno"> 6380</span>  <span class="keywordtype">bool</span> get_msgpack_string(string_t& result)</div>
|
||
<div class="line"><a name="l06381"></a><span class="lineno"> 6381</span>  {</div>
|
||
<div class="line"><a name="l06382"></a><span class="lineno"> 6382</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not unexpect_eof(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40ac40d516627022a54003ac2b74a82688a">input_format_t::msgpack</a>, <span class="stringliteral">"string"</span>)))</div>
|
||
<div class="line"><a name="l06383"></a><span class="lineno"> 6383</span>  {</div>
|
||
<div class="line"><a name="l06384"></a><span class="lineno"> 6384</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||
<div class="line"><a name="l06385"></a><span class="lineno"> 6385</span>  }</div>
|
||
<div class="line"><a name="l06386"></a><span class="lineno"> 6386</span>  </div>
|
||
<div class="line"><a name="l06387"></a><span class="lineno"> 6387</span>  <span class="keywordflow">switch</span> (current)</div>
|
||
<div class="line"><a name="l06388"></a><span class="lineno"> 6388</span>  {</div>
|
||
<div class="line"><a name="l06389"></a><span class="lineno"> 6389</span>  <span class="comment">// fixstr</span></div>
|
||
<div class="line"><a name="l06390"></a><span class="lineno"> 6390</span>  <span class="keywordflow">case</span> 0xA0:</div>
|
||
<div class="line"><a name="l06391"></a><span class="lineno"> 6391</span>  <span class="keywordflow">case</span> 0xA1:</div>
|
||
<div class="line"><a name="l06392"></a><span class="lineno"> 6392</span>  <span class="keywordflow">case</span> 0xA2:</div>
|
||
<div class="line"><a name="l06393"></a><span class="lineno"> 6393</span>  <span class="keywordflow">case</span> 0xA3:</div>
|
||
<div class="line"><a name="l06394"></a><span class="lineno"> 6394</span>  <span class="keywordflow">case</span> 0xA4:</div>
|
||
<div class="line"><a name="l06395"></a><span class="lineno"> 6395</span>  <span class="keywordflow">case</span> 0xA5:</div>
|
||
<div class="line"><a name="l06396"></a><span class="lineno"> 6396</span>  <span class="keywordflow">case</span> 0xA6:</div>
|
||
<div class="line"><a name="l06397"></a><span class="lineno"> 6397</span>  <span class="keywordflow">case</span> 0xA7:</div>
|
||
<div class="line"><a name="l06398"></a><span class="lineno"> 6398</span>  <span class="keywordflow">case</span> 0xA8:</div>
|
||
<div class="line"><a name="l06399"></a><span class="lineno"> 6399</span>  <span class="keywordflow">case</span> 0xA9:</div>
|
||
<div class="line"><a name="l06400"></a><span class="lineno"> 6400</span>  <span class="keywordflow">case</span> 0xAA:</div>
|
||
<div class="line"><a name="l06401"></a><span class="lineno"> 6401</span>  <span class="keywordflow">case</span> 0xAB:</div>
|
||
<div class="line"><a name="l06402"></a><span class="lineno"> 6402</span>  <span class="keywordflow">case</span> 0xAC:</div>
|
||
<div class="line"><a name="l06403"></a><span class="lineno"> 6403</span>  <span class="keywordflow">case</span> 0xAD:</div>
|
||
<div class="line"><a name="l06404"></a><span class="lineno"> 6404</span>  <span class="keywordflow">case</span> 0xAE:</div>
|
||
<div class="line"><a name="l06405"></a><span class="lineno"> 6405</span>  <span class="keywordflow">case</span> 0xAF:</div>
|
||
<div class="line"><a name="l06406"></a><span class="lineno"> 6406</span>  <span class="keywordflow">case</span> 0xB0:</div>
|
||
<div class="line"><a name="l06407"></a><span class="lineno"> 6407</span>  <span class="keywordflow">case</span> 0xB1:</div>
|
||
<div class="line"><a name="l06408"></a><span class="lineno"> 6408</span>  <span class="keywordflow">case</span> 0xB2:</div>
|
||
<div class="line"><a name="l06409"></a><span class="lineno"> 6409</span>  <span class="keywordflow">case</span> 0xB3:</div>
|
||
<div class="line"><a name="l06410"></a><span class="lineno"> 6410</span>  <span class="keywordflow">case</span> 0xB4:</div>
|
||
<div class="line"><a name="l06411"></a><span class="lineno"> 6411</span>  <span class="keywordflow">case</span> 0xB5:</div>
|
||
<div class="line"><a name="l06412"></a><span class="lineno"> 6412</span>  <span class="keywordflow">case</span> 0xB6:</div>
|
||
<div class="line"><a name="l06413"></a><span class="lineno"> 6413</span>  <span class="keywordflow">case</span> 0xB7:</div>
|
||
<div class="line"><a name="l06414"></a><span class="lineno"> 6414</span>  <span class="keywordflow">case</span> 0xB8:</div>
|
||
<div class="line"><a name="l06415"></a><span class="lineno"> 6415</span>  <span class="keywordflow">case</span> 0xB9:</div>
|
||
<div class="line"><a name="l06416"></a><span class="lineno"> 6416</span>  <span class="keywordflow">case</span> 0xBA:</div>
|
||
<div class="line"><a name="l06417"></a><span class="lineno"> 6417</span>  <span class="keywordflow">case</span> 0xBB:</div>
|
||
<div class="line"><a name="l06418"></a><span class="lineno"> 6418</span>  <span class="keywordflow">case</span> 0xBC:</div>
|
||
<div class="line"><a name="l06419"></a><span class="lineno"> 6419</span>  <span class="keywordflow">case</span> 0xBD:</div>
|
||
<div class="line"><a name="l06420"></a><span class="lineno"> 6420</span>  <span class="keywordflow">case</span> 0xBE:</div>
|
||
<div class="line"><a name="l06421"></a><span class="lineno"> 6421</span>  <span class="keywordflow">case</span> 0xBF:</div>
|
||
<div class="line"><a name="l06422"></a><span class="lineno"> 6422</span>  {</div>
|
||
<div class="line"><a name="l06423"></a><span class="lineno"> 6423</span>  <span class="keywordflow">return</span> get_string(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40ac40d516627022a54003ac2b74a82688a">input_format_t::msgpack</a>, <span class="keyword">static_cast<</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">></span>(current) & 0x1Fu, result);</div>
|
||
<div class="line"><a name="l06424"></a><span class="lineno"> 6424</span>  }</div>
|
||
<div class="line"><a name="l06425"></a><span class="lineno"> 6425</span>  </div>
|
||
<div class="line"><a name="l06426"></a><span class="lineno"> 6426</span>  <span class="keywordflow">case</span> 0xD9: <span class="comment">// str 8</span></div>
|
||
<div class="line"><a name="l06427"></a><span class="lineno"> 6427</span>  {</div>
|
||
<div class="line"><a name="l06428"></a><span class="lineno"> 6428</span>  std::uint8_t len;</div>
|
||
<div class="line"><a name="l06429"></a><span class="lineno"> 6429</span>  <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40ac40d516627022a54003ac2b74a82688a">input_format_t::msgpack</a>, len) and get_string(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40ac40d516627022a54003ac2b74a82688a">input_format_t::msgpack</a>, len, result);</div>
|
||
<div class="line"><a name="l06430"></a><span class="lineno"> 6430</span>  }</div>
|
||
<div class="line"><a name="l06431"></a><span class="lineno"> 6431</span>  </div>
|
||
<div class="line"><a name="l06432"></a><span class="lineno"> 6432</span>  <span class="keywordflow">case</span> 0xDA: <span class="comment">// str 16</span></div>
|
||
<div class="line"><a name="l06433"></a><span class="lineno"> 6433</span>  {</div>
|
||
<div class="line"><a name="l06434"></a><span class="lineno"> 6434</span>  std::uint16_t len;</div>
|
||
<div class="line"><a name="l06435"></a><span class="lineno"> 6435</span>  <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40ac40d516627022a54003ac2b74a82688a">input_format_t::msgpack</a>, len) and get_string(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40ac40d516627022a54003ac2b74a82688a">input_format_t::msgpack</a>, len, result);</div>
|
||
<div class="line"><a name="l06436"></a><span class="lineno"> 6436</span>  }</div>
|
||
<div class="line"><a name="l06437"></a><span class="lineno"> 6437</span>  </div>
|
||
<div class="line"><a name="l06438"></a><span class="lineno"> 6438</span>  <span class="keywordflow">case</span> 0xDB: <span class="comment">// str 32</span></div>
|
||
<div class="line"><a name="l06439"></a><span class="lineno"> 6439</span>  {</div>
|
||
<div class="line"><a name="l06440"></a><span class="lineno"> 6440</span>  std::uint32_t len;</div>
|
||
<div class="line"><a name="l06441"></a><span class="lineno"> 6441</span>  <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40ac40d516627022a54003ac2b74a82688a">input_format_t::msgpack</a>, len) and get_string(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40ac40d516627022a54003ac2b74a82688a">input_format_t::msgpack</a>, len, result);</div>
|
||
<div class="line"><a name="l06442"></a><span class="lineno"> 6442</span>  }</div>
|
||
<div class="line"><a name="l06443"></a><span class="lineno"> 6443</span>  </div>
|
||
<div class="line"><a name="l06444"></a><span class="lineno"> 6444</span>  <span class="keywordflow">default</span>:</div>
|
||
<div class="line"><a name="l06445"></a><span class="lineno"> 6445</span>  {</div>
|
||
<div class="line"><a name="l06446"></a><span class="lineno"> 6446</span>  <span class="keyword">auto</span> last_token = get_token_string();</div>
|
||
<div class="line"><a name="l06447"></a><span class="lineno"> 6447</span>  <span class="keywordflow">return</span> sax->parse_error(chars_read, last_token, <a class="code" href="classnlohmann_1_1detail_1_1parse__error.html#a137ea4d27de45d8a844fd13451d40f3d">parse_error::create</a>(113, chars_read, exception_message(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40ac40d516627022a54003ac2b74a82688a">input_format_t::msgpack</a>, <span class="stringliteral">"expected length specification (0xA0-0xBF, 0xD9-0xDB); last byte: 0x"</span> + last_token, <span class="stringliteral">"string"</span>)));</div>
|
||
<div class="line"><a name="l06448"></a><span class="lineno"> 6448</span>  }</div>
|
||
<div class="line"><a name="l06449"></a><span class="lineno"> 6449</span>  }</div>
|
||
<div class="line"><a name="l06450"></a><span class="lineno"> 6450</span>  }</div>
|
||
<div class="line"><a name="l06451"></a><span class="lineno"> 6451</span>  </div>
|
||
<div class="line"><a name="l06456"></a><span class="lineno"> 6456</span>  <span class="keywordtype">bool</span> get_msgpack_array(<span class="keyword">const</span> std::size_t len)</div>
|
||
<div class="line"><a name="l06457"></a><span class="lineno"> 6457</span>  {</div>
|
||
<div class="line"><a name="l06458"></a><span class="lineno"> 6458</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not sax->start_array(len)))</div>
|
||
<div class="line"><a name="l06459"></a><span class="lineno"> 6459</span>  {</div>
|
||
<div class="line"><a name="l06460"></a><span class="lineno"> 6460</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||
<div class="line"><a name="l06461"></a><span class="lineno"> 6461</span>  }</div>
|
||
<div class="line"><a name="l06462"></a><span class="lineno"> 6462</span>  </div>
|
||
<div class="line"><a name="l06463"></a><span class="lineno"> 6463</span>  <span class="keywordflow">for</span> (std::size_t i = 0; i < len; ++i)</div>
|
||
<div class="line"><a name="l06464"></a><span class="lineno"> 6464</span>  {</div>
|
||
<div class="line"><a name="l06465"></a><span class="lineno"> 6465</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not parse_msgpack_internal()))</div>
|
||
<div class="line"><a name="l06466"></a><span class="lineno"> 6466</span>  {</div>
|
||
<div class="line"><a name="l06467"></a><span class="lineno"> 6467</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||
<div class="line"><a name="l06468"></a><span class="lineno"> 6468</span>  }</div>
|
||
<div class="line"><a name="l06469"></a><span class="lineno"> 6469</span>  }</div>
|
||
<div class="line"><a name="l06470"></a><span class="lineno"> 6470</span>  </div>
|
||
<div class="line"><a name="l06471"></a><span class="lineno"> 6471</span>  <span class="keywordflow">return</span> sax->end_array();</div>
|
||
<div class="line"><a name="l06472"></a><span class="lineno"> 6472</span>  }</div>
|
||
<div class="line"><a name="l06473"></a><span class="lineno"> 6473</span>  </div>
|
||
<div class="line"><a name="l06478"></a><span class="lineno"> 6478</span>  <span class="keywordtype">bool</span> get_msgpack_object(<span class="keyword">const</span> std::size_t len)</div>
|
||
<div class="line"><a name="l06479"></a><span class="lineno"> 6479</span>  {</div>
|
||
<div class="line"><a name="l06480"></a><span class="lineno"> 6480</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not sax->start_object(len)))</div>
|
||
<div class="line"><a name="l06481"></a><span class="lineno"> 6481</span>  {</div>
|
||
<div class="line"><a name="l06482"></a><span class="lineno"> 6482</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||
<div class="line"><a name="l06483"></a><span class="lineno"> 6483</span>  }</div>
|
||
<div class="line"><a name="l06484"></a><span class="lineno"> 6484</span>  </div>
|
||
<div class="line"><a name="l06485"></a><span class="lineno"> 6485</span>  string_t key;</div>
|
||
<div class="line"><a name="l06486"></a><span class="lineno"> 6486</span>  <span class="keywordflow">for</span> (std::size_t i = 0; i < len; ++i)</div>
|
||
<div class="line"><a name="l06487"></a><span class="lineno"> 6487</span>  {</div>
|
||
<div class="line"><a name="l06488"></a><span class="lineno"> 6488</span>  get();</div>
|
||
<div class="line"><a name="l06489"></a><span class="lineno"> 6489</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not get_msgpack_string(key) or not sax->key(key)))</div>
|
||
<div class="line"><a name="l06490"></a><span class="lineno"> 6490</span>  {</div>
|
||
<div class="line"><a name="l06491"></a><span class="lineno"> 6491</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||
<div class="line"><a name="l06492"></a><span class="lineno"> 6492</span>  }</div>
|
||
<div class="line"><a name="l06493"></a><span class="lineno"> 6493</span>  </div>
|
||
<div class="line"><a name="l06494"></a><span class="lineno"> 6494</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not parse_msgpack_internal()))</div>
|
||
<div class="line"><a name="l06495"></a><span class="lineno"> 6495</span>  {</div>
|
||
<div class="line"><a name="l06496"></a><span class="lineno"> 6496</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||
<div class="line"><a name="l06497"></a><span class="lineno"> 6497</span>  }</div>
|
||
<div class="line"><a name="l06498"></a><span class="lineno"> 6498</span>  key.clear();</div>
|
||
<div class="line"><a name="l06499"></a><span class="lineno"> 6499</span>  }</div>
|
||
<div class="line"><a name="l06500"></a><span class="lineno"> 6500</span>  </div>
|
||
<div class="line"><a name="l06501"></a><span class="lineno"> 6501</span>  <span class="keywordflow">return</span> sax->end_object();</div>
|
||
<div class="line"><a name="l06502"></a><span class="lineno"> 6502</span>  }</div>
|
||
<div class="line"><a name="l06503"></a><span class="lineno"> 6503</span>  </div>
|
||
<div class="line"><a name="l06505"></a><span class="lineno"> 6505</span>  <span class="comment">// UBJSON //</span></div>
|
||
<div class="line"><a name="l06507"></a><span class="lineno"> 6507</span> <span class="comment"></span> </div>
|
||
<div class="line"><a name="l06515"></a><span class="lineno"> 6515</span>  <span class="keywordtype">bool</span> parse_ubjson_internal(<span class="keyword">const</span> <span class="keywordtype">bool</span> get_char = <span class="keyword">true</span>)</div>
|
||
<div class="line"><a name="l06516"></a><span class="lineno"> 6516</span>  {</div>
|
||
<div class="line"><a name="l06517"></a><span class="lineno"> 6517</span>  <span class="keywordflow">return</span> get_ubjson_value(get_char ? get_ignore_noop() : current);</div>
|
||
<div class="line"><a name="l06518"></a><span class="lineno"> 6518</span>  }</div>
|
||
<div class="line"><a name="l06519"></a><span class="lineno"> 6519</span>  </div>
|
||
<div class="line"><a name="l06534"></a><span class="lineno"> 6534</span>  <span class="keywordtype">bool</span> get_ubjson_string(string_t& result, <span class="keyword">const</span> <span class="keywordtype">bool</span> get_char = <span class="keyword">true</span>)</div>
|
||
<div class="line"><a name="l06535"></a><span class="lineno"> 6535</span>  {</div>
|
||
<div class="line"><a name="l06536"></a><span class="lineno"> 6536</span>  <span class="keywordflow">if</span> (get_char)</div>
|
||
<div class="line"><a name="l06537"></a><span class="lineno"> 6537</span>  {</div>
|
||
<div class="line"><a name="l06538"></a><span class="lineno"> 6538</span>  get(); <span class="comment">// TODO(niels): may we ignore N here?</span></div>
|
||
<div class="line"><a name="l06539"></a><span class="lineno"> 6539</span>  }</div>
|
||
<div class="line"><a name="l06540"></a><span class="lineno"> 6540</span>  </div>
|
||
<div class="line"><a name="l06541"></a><span class="lineno"> 6541</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not unexpect_eof(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a4537f20910e85437f6d07701864084e8">input_format_t::ubjson</a>, <span class="stringliteral">"value"</span>)))</div>
|
||
<div class="line"><a name="l06542"></a><span class="lineno"> 6542</span>  {</div>
|
||
<div class="line"><a name="l06543"></a><span class="lineno"> 6543</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||
<div class="line"><a name="l06544"></a><span class="lineno"> 6544</span>  }</div>
|
||
<div class="line"><a name="l06545"></a><span class="lineno"> 6545</span>  </div>
|
||
<div class="line"><a name="l06546"></a><span class="lineno"> 6546</span>  <span class="keywordflow">switch</span> (current)</div>
|
||
<div class="line"><a name="l06547"></a><span class="lineno"> 6547</span>  {</div>
|
||
<div class="line"><a name="l06548"></a><span class="lineno"> 6548</span>  <span class="keywordflow">case</span> <span class="charliteral">'U'</span>:</div>
|
||
<div class="line"><a name="l06549"></a><span class="lineno"> 6549</span>  {</div>
|
||
<div class="line"><a name="l06550"></a><span class="lineno"> 6550</span>  std::uint8_t len;</div>
|
||
<div class="line"><a name="l06551"></a><span class="lineno"> 6551</span>  <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a4537f20910e85437f6d07701864084e8">input_format_t::ubjson</a>, len) and get_string(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a4537f20910e85437f6d07701864084e8">input_format_t::ubjson</a>, len, result);</div>
|
||
<div class="line"><a name="l06552"></a><span class="lineno"> 6552</span>  }</div>
|
||
<div class="line"><a name="l06553"></a><span class="lineno"> 6553</span>  </div>
|
||
<div class="line"><a name="l06554"></a><span class="lineno"> 6554</span>  <span class="keywordflow">case</span> <span class="charliteral">'i'</span>:</div>
|
||
<div class="line"><a name="l06555"></a><span class="lineno"> 6555</span>  {</div>
|
||
<div class="line"><a name="l06556"></a><span class="lineno"> 6556</span>  std::int8_t len;</div>
|
||
<div class="line"><a name="l06557"></a><span class="lineno"> 6557</span>  <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a4537f20910e85437f6d07701864084e8">input_format_t::ubjson</a>, len) and get_string(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a4537f20910e85437f6d07701864084e8">input_format_t::ubjson</a>, len, result);</div>
|
||
<div class="line"><a name="l06558"></a><span class="lineno"> 6558</span>  }</div>
|
||
<div class="line"><a name="l06559"></a><span class="lineno"> 6559</span>  </div>
|
||
<div class="line"><a name="l06560"></a><span class="lineno"> 6560</span>  <span class="keywordflow">case</span> <span class="charliteral">'I'</span>:</div>
|
||
<div class="line"><a name="l06561"></a><span class="lineno"> 6561</span>  {</div>
|
||
<div class="line"><a name="l06562"></a><span class="lineno"> 6562</span>  std::int16_t len;</div>
|
||
<div class="line"><a name="l06563"></a><span class="lineno"> 6563</span>  <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a4537f20910e85437f6d07701864084e8">input_format_t::ubjson</a>, len) and get_string(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a4537f20910e85437f6d07701864084e8">input_format_t::ubjson</a>, len, result);</div>
|
||
<div class="line"><a name="l06564"></a><span class="lineno"> 6564</span>  }</div>
|
||
<div class="line"><a name="l06565"></a><span class="lineno"> 6565</span>  </div>
|
||
<div class="line"><a name="l06566"></a><span class="lineno"> 6566</span>  <span class="keywordflow">case</span> <span class="charliteral">'l'</span>:</div>
|
||
<div class="line"><a name="l06567"></a><span class="lineno"> 6567</span>  {</div>
|
||
<div class="line"><a name="l06568"></a><span class="lineno"> 6568</span>  std::int32_t len;</div>
|
||
<div class="line"><a name="l06569"></a><span class="lineno"> 6569</span>  <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a4537f20910e85437f6d07701864084e8">input_format_t::ubjson</a>, len) and get_string(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a4537f20910e85437f6d07701864084e8">input_format_t::ubjson</a>, len, result);</div>
|
||
<div class="line"><a name="l06570"></a><span class="lineno"> 6570</span>  }</div>
|
||
<div class="line"><a name="l06571"></a><span class="lineno"> 6571</span>  </div>
|
||
<div class="line"><a name="l06572"></a><span class="lineno"> 6572</span>  <span class="keywordflow">case</span> <span class="charliteral">'L'</span>:</div>
|
||
<div class="line"><a name="l06573"></a><span class="lineno"> 6573</span>  {</div>
|
||
<div class="line"><a name="l06574"></a><span class="lineno"> 6574</span>  std::int64_t len;</div>
|
||
<div class="line"><a name="l06575"></a><span class="lineno"> 6575</span>  <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a4537f20910e85437f6d07701864084e8">input_format_t::ubjson</a>, len) and get_string(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a4537f20910e85437f6d07701864084e8">input_format_t::ubjson</a>, len, result);</div>
|
||
<div class="line"><a name="l06576"></a><span class="lineno"> 6576</span>  }</div>
|
||
<div class="line"><a name="l06577"></a><span class="lineno"> 6577</span>  </div>
|
||
<div class="line"><a name="l06578"></a><span class="lineno"> 6578</span>  <span class="keywordflow">default</span>:</div>
|
||
<div class="line"><a name="l06579"></a><span class="lineno"> 6579</span>  <span class="keyword">auto</span> last_token = get_token_string();</div>
|
||
<div class="line"><a name="l06580"></a><span class="lineno"> 6580</span>  <span class="keywordflow">return</span> sax->parse_error(chars_read, last_token, <a class="code" href="classnlohmann_1_1detail_1_1parse__error.html#a137ea4d27de45d8a844fd13451d40f3d">parse_error::create</a>(113, chars_read, exception_message(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a4537f20910e85437f6d07701864084e8">input_format_t::ubjson</a>, <span class="stringliteral">"expected length type specification (U, i, I, l, L); last byte: 0x"</span> + last_token, <span class="stringliteral">"string"</span>)));</div>
|
||
<div class="line"><a name="l06581"></a><span class="lineno"> 6581</span>  }</div>
|
||
<div class="line"><a name="l06582"></a><span class="lineno"> 6582</span>  }</div>
|
||
<div class="line"><a name="l06583"></a><span class="lineno"> 6583</span>  </div>
|
||
<div class="line"><a name="l06588"></a><span class="lineno"> 6588</span>  <span class="keywordtype">bool</span> get_ubjson_size_value(std::size_t& result)</div>
|
||
<div class="line"><a name="l06589"></a><span class="lineno"> 6589</span>  {</div>
|
||
<div class="line"><a name="l06590"></a><span class="lineno"> 6590</span>  <span class="keywordflow">switch</span> (get_ignore_noop())</div>
|
||
<div class="line"><a name="l06591"></a><span class="lineno"> 6591</span>  {</div>
|
||
<div class="line"><a name="l06592"></a><span class="lineno"> 6592</span>  <span class="keywordflow">case</span> <span class="charliteral">'U'</span>:</div>
|
||
<div class="line"><a name="l06593"></a><span class="lineno"> 6593</span>  {</div>
|
||
<div class="line"><a name="l06594"></a><span class="lineno"> 6594</span>  std::uint8_t number;</div>
|
||
<div class="line"><a name="l06595"></a><span class="lineno"> 6595</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a4537f20910e85437f6d07701864084e8">input_format_t::ubjson</a>, number)))</div>
|
||
<div class="line"><a name="l06596"></a><span class="lineno"> 6596</span>  {</div>
|
||
<div class="line"><a name="l06597"></a><span class="lineno"> 6597</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||
<div class="line"><a name="l06598"></a><span class="lineno"> 6598</span>  }</div>
|
||
<div class="line"><a name="l06599"></a><span class="lineno"> 6599</span>  result = <span class="keyword">static_cast<</span>std::size_t<span class="keyword">></span>(number);</div>
|
||
<div class="line"><a name="l06600"></a><span class="lineno"> 6600</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
||
<div class="line"><a name="l06601"></a><span class="lineno"> 6601</span>  }</div>
|
||
<div class="line"><a name="l06602"></a><span class="lineno"> 6602</span>  </div>
|
||
<div class="line"><a name="l06603"></a><span class="lineno"> 6603</span>  <span class="keywordflow">case</span> <span class="charliteral">'i'</span>:</div>
|
||
<div class="line"><a name="l06604"></a><span class="lineno"> 6604</span>  {</div>
|
||
<div class="line"><a name="l06605"></a><span class="lineno"> 6605</span>  std::int8_t number;</div>
|
||
<div class="line"><a name="l06606"></a><span class="lineno"> 6606</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a4537f20910e85437f6d07701864084e8">input_format_t::ubjson</a>, number)))</div>
|
||
<div class="line"><a name="l06607"></a><span class="lineno"> 6607</span>  {</div>
|
||
<div class="line"><a name="l06608"></a><span class="lineno"> 6608</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||
<div class="line"><a name="l06609"></a><span class="lineno"> 6609</span>  }</div>
|
||
<div class="line"><a name="l06610"></a><span class="lineno"> 6610</span>  result = <span class="keyword">static_cast<</span>std::size_t<span class="keyword">></span>(number);</div>
|
||
<div class="line"><a name="l06611"></a><span class="lineno"> 6611</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
||
<div class="line"><a name="l06612"></a><span class="lineno"> 6612</span>  }</div>
|
||
<div class="line"><a name="l06613"></a><span class="lineno"> 6613</span>  </div>
|
||
<div class="line"><a name="l06614"></a><span class="lineno"> 6614</span>  <span class="keywordflow">case</span> <span class="charliteral">'I'</span>:</div>
|
||
<div class="line"><a name="l06615"></a><span class="lineno"> 6615</span>  {</div>
|
||
<div class="line"><a name="l06616"></a><span class="lineno"> 6616</span>  std::int16_t number;</div>
|
||
<div class="line"><a name="l06617"></a><span class="lineno"> 6617</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a4537f20910e85437f6d07701864084e8">input_format_t::ubjson</a>, number)))</div>
|
||
<div class="line"><a name="l06618"></a><span class="lineno"> 6618</span>  {</div>
|
||
<div class="line"><a name="l06619"></a><span class="lineno"> 6619</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||
<div class="line"><a name="l06620"></a><span class="lineno"> 6620</span>  }</div>
|
||
<div class="line"><a name="l06621"></a><span class="lineno"> 6621</span>  result = <span class="keyword">static_cast<</span>std::size_t<span class="keyword">></span>(number);</div>
|
||
<div class="line"><a name="l06622"></a><span class="lineno"> 6622</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
||
<div class="line"><a name="l06623"></a><span class="lineno"> 6623</span>  }</div>
|
||
<div class="line"><a name="l06624"></a><span class="lineno"> 6624</span>  </div>
|
||
<div class="line"><a name="l06625"></a><span class="lineno"> 6625</span>  <span class="keywordflow">case</span> <span class="charliteral">'l'</span>:</div>
|
||
<div class="line"><a name="l06626"></a><span class="lineno"> 6626</span>  {</div>
|
||
<div class="line"><a name="l06627"></a><span class="lineno"> 6627</span>  std::int32_t number;</div>
|
||
<div class="line"><a name="l06628"></a><span class="lineno"> 6628</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a4537f20910e85437f6d07701864084e8">input_format_t::ubjson</a>, number)))</div>
|
||
<div class="line"><a name="l06629"></a><span class="lineno"> 6629</span>  {</div>
|
||
<div class="line"><a name="l06630"></a><span class="lineno"> 6630</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||
<div class="line"><a name="l06631"></a><span class="lineno"> 6631</span>  }</div>
|
||
<div class="line"><a name="l06632"></a><span class="lineno"> 6632</span>  result = <span class="keyword">static_cast<</span>std::size_t<span class="keyword">></span>(number);</div>
|
||
<div class="line"><a name="l06633"></a><span class="lineno"> 6633</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
||
<div class="line"><a name="l06634"></a><span class="lineno"> 6634</span>  }</div>
|
||
<div class="line"><a name="l06635"></a><span class="lineno"> 6635</span>  </div>
|
||
<div class="line"><a name="l06636"></a><span class="lineno"> 6636</span>  <span class="keywordflow">case</span> <span class="charliteral">'L'</span>:</div>
|
||
<div class="line"><a name="l06637"></a><span class="lineno"> 6637</span>  {</div>
|
||
<div class="line"><a name="l06638"></a><span class="lineno"> 6638</span>  std::int64_t number;</div>
|
||
<div class="line"><a name="l06639"></a><span class="lineno"> 6639</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a4537f20910e85437f6d07701864084e8">input_format_t::ubjson</a>, number)))</div>
|
||
<div class="line"><a name="l06640"></a><span class="lineno"> 6640</span>  {</div>
|
||
<div class="line"><a name="l06641"></a><span class="lineno"> 6641</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||
<div class="line"><a name="l06642"></a><span class="lineno"> 6642</span>  }</div>
|
||
<div class="line"><a name="l06643"></a><span class="lineno"> 6643</span>  result = <span class="keyword">static_cast<</span>std::size_t<span class="keyword">></span>(number);</div>
|
||
<div class="line"><a name="l06644"></a><span class="lineno"> 6644</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
||
<div class="line"><a name="l06645"></a><span class="lineno"> 6645</span>  }</div>
|
||
<div class="line"><a name="l06646"></a><span class="lineno"> 6646</span>  </div>
|
||
<div class="line"><a name="l06647"></a><span class="lineno"> 6647</span>  <span class="keywordflow">default</span>:</div>
|
||
<div class="line"><a name="l06648"></a><span class="lineno"> 6648</span>  {</div>
|
||
<div class="line"><a name="l06649"></a><span class="lineno"> 6649</span>  <span class="keyword">auto</span> last_token = get_token_string();</div>
|
||
<div class="line"><a name="l06650"></a><span class="lineno"> 6650</span>  <span class="keywordflow">return</span> sax->parse_error(chars_read, last_token, <a class="code" href="classnlohmann_1_1detail_1_1parse__error.html#a137ea4d27de45d8a844fd13451d40f3d">parse_error::create</a>(113, chars_read, exception_message(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a4537f20910e85437f6d07701864084e8">input_format_t::ubjson</a>, <span class="stringliteral">"expected length type specification (U, i, I, l, L) after '#'; last byte: 0x"</span> + last_token, <span class="stringliteral">"size"</span>)));</div>
|
||
<div class="line"><a name="l06651"></a><span class="lineno"> 6651</span>  }</div>
|
||
<div class="line"><a name="l06652"></a><span class="lineno"> 6652</span>  }</div>
|
||
<div class="line"><a name="l06653"></a><span class="lineno"> 6653</span>  }</div>
|
||
<div class="line"><a name="l06654"></a><span class="lineno"> 6654</span>  </div>
|
||
<div class="line"><a name="l06665"></a><span class="lineno"> 6665</span>  <span class="keywordtype">bool</span> get_ubjson_size_type(std::pair<std::size_t, int>& result)</div>
|
||
<div class="line"><a name="l06666"></a><span class="lineno"> 6666</span>  {</div>
|
||
<div class="line"><a name="l06667"></a><span class="lineno"> 6667</span>  result.first = string_t::npos; <span class="comment">// size</span></div>
|
||
<div class="line"><a name="l06668"></a><span class="lineno"> 6668</span>  result.second = 0; <span class="comment">// type</span></div>
|
||
<div class="line"><a name="l06669"></a><span class="lineno"> 6669</span>  </div>
|
||
<div class="line"><a name="l06670"></a><span class="lineno"> 6670</span>  get_ignore_noop();</div>
|
||
<div class="line"><a name="l06671"></a><span class="lineno"> 6671</span>  </div>
|
||
<div class="line"><a name="l06672"></a><span class="lineno"> 6672</span>  <span class="keywordflow">if</span> (current == <span class="charliteral">'$'</span>)</div>
|
||
<div class="line"><a name="l06673"></a><span class="lineno"> 6673</span>  {</div>
|
||
<div class="line"><a name="l06674"></a><span class="lineno"> 6674</span>  result.second = get(); <span class="comment">// must not ignore 'N', because 'N' maybe the type</span></div>
|
||
<div class="line"><a name="l06675"></a><span class="lineno"> 6675</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not unexpect_eof(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a4537f20910e85437f6d07701864084e8">input_format_t::ubjson</a>, <span class="stringliteral">"type"</span>)))</div>
|
||
<div class="line"><a name="l06676"></a><span class="lineno"> 6676</span>  {</div>
|
||
<div class="line"><a name="l06677"></a><span class="lineno"> 6677</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||
<div class="line"><a name="l06678"></a><span class="lineno"> 6678</span>  }</div>
|
||
<div class="line"><a name="l06679"></a><span class="lineno"> 6679</span>  </div>
|
||
<div class="line"><a name="l06680"></a><span class="lineno"> 6680</span>  get_ignore_noop();</div>
|
||
<div class="line"><a name="l06681"></a><span class="lineno"> 6681</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(current != <span class="charliteral">'#'</span>))</div>
|
||
<div class="line"><a name="l06682"></a><span class="lineno"> 6682</span>  {</div>
|
||
<div class="line"><a name="l06683"></a><span class="lineno"> 6683</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not unexpect_eof(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a4537f20910e85437f6d07701864084e8">input_format_t::ubjson</a>, <span class="stringliteral">"value"</span>)))</div>
|
||
<div class="line"><a name="l06684"></a><span class="lineno"> 6684</span>  {</div>
|
||
<div class="line"><a name="l06685"></a><span class="lineno"> 6685</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||
<div class="line"><a name="l06686"></a><span class="lineno"> 6686</span>  }</div>
|
||
<div class="line"><a name="l06687"></a><span class="lineno"> 6687</span>  <span class="keyword">auto</span> last_token = get_token_string();</div>
|
||
<div class="line"><a name="l06688"></a><span class="lineno"> 6688</span>  <span class="keywordflow">return</span> sax->parse_error(chars_read, last_token, <a class="code" href="classnlohmann_1_1detail_1_1parse__error.html#a137ea4d27de45d8a844fd13451d40f3d">parse_error::create</a>(112, chars_read, exception_message(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a4537f20910e85437f6d07701864084e8">input_format_t::ubjson</a>, <span class="stringliteral">"expected '#' after type information; last byte: 0x"</span> + last_token, <span class="stringliteral">"size"</span>)));</div>
|
||
<div class="line"><a name="l06689"></a><span class="lineno"> 6689</span>  }</div>
|
||
<div class="line"><a name="l06690"></a><span class="lineno"> 6690</span>  </div>
|
||
<div class="line"><a name="l06691"></a><span class="lineno"> 6691</span>  <span class="keywordflow">return</span> get_ubjson_size_value(result.first);</div>
|
||
<div class="line"><a name="l06692"></a><span class="lineno"> 6692</span>  }</div>
|
||
<div class="line"><a name="l06693"></a><span class="lineno"> 6693</span>  </div>
|
||
<div class="line"><a name="l06694"></a><span class="lineno"> 6694</span>  <span class="keywordflow">if</span> (current == <span class="charliteral">'#'</span>)</div>
|
||
<div class="line"><a name="l06695"></a><span class="lineno"> 6695</span>  {</div>
|
||
<div class="line"><a name="l06696"></a><span class="lineno"> 6696</span>  <span class="keywordflow">return</span> get_ubjson_size_value(result.first);</div>
|
||
<div class="line"><a name="l06697"></a><span class="lineno"> 6697</span>  }</div>
|
||
<div class="line"><a name="l06698"></a><span class="lineno"> 6698</span>  </div>
|
||
<div class="line"><a name="l06699"></a><span class="lineno"> 6699</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
||
<div class="line"><a name="l06700"></a><span class="lineno"> 6700</span>  }</div>
|
||
<div class="line"><a name="l06701"></a><span class="lineno"> 6701</span>  </div>
|
||
<div class="line"><a name="l06706"></a><span class="lineno"> 6706</span>  <span class="keywordtype">bool</span> get_ubjson_value(<span class="keyword">const</span> <span class="keywordtype">int</span> prefix)</div>
|
||
<div class="line"><a name="l06707"></a><span class="lineno"> 6707</span>  {</div>
|
||
<div class="line"><a name="l06708"></a><span class="lineno"> 6708</span>  <span class="keywordflow">switch</span> (prefix)</div>
|
||
<div class="line"><a name="l06709"></a><span class="lineno"> 6709</span>  {</div>
|
||
<div class="line"><a name="l06710"></a><span class="lineno"> 6710</span>  <span class="keywordflow">case</span> std::char_traits<char>::eof(): <span class="comment">// EOF</span></div>
|
||
<div class="line"><a name="l06711"></a><span class="lineno"> 6711</span>  return unexpect_eof(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40">input_format_t</a>::<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a4537f20910e85437f6d07701864084e8">ubjson</a>, <span class="stringliteral">"value"</span>);</div>
|
||
<div class="line"><a name="l06712"></a><span class="lineno"> 6712</span>  </div>
|
||
<div class="line"><a name="l06713"></a><span class="lineno"> 6713</span>  <span class="keywordflow">case</span> <span class="charliteral">'T'</span>: <span class="comment">// true</span></div>
|
||
<div class="line"><a name="l06714"></a><span class="lineno"> 6714</span>  <span class="keywordflow">return</span> sax->boolean(<span class="keyword">true</span>);</div>
|
||
<div class="line"><a name="l06715"></a><span class="lineno"> 6715</span>  <span class="keywordflow">case</span> <span class="charliteral">'F'</span>: <span class="comment">// false</span></div>
|
||
<div class="line"><a name="l06716"></a><span class="lineno"> 6716</span>  <span class="keywordflow">return</span> sax->boolean(<span class="keyword">false</span>);</div>
|
||
<div class="line"><a name="l06717"></a><span class="lineno"> 6717</span>  </div>
|
||
<div class="line"><a name="l06718"></a><span class="lineno"> 6718</span>  <span class="keywordflow">case</span> <span class="charliteral">'Z'</span>: <span class="comment">// null</span></div>
|
||
<div class="line"><a name="l06719"></a><span class="lineno"> 6719</span>  <span class="keywordflow">return</span> sax->null();</div>
|
||
<div class="line"><a name="l06720"></a><span class="lineno"> 6720</span>  </div>
|
||
<div class="line"><a name="l06721"></a><span class="lineno"> 6721</span>  <span class="keywordflow">case</span> <span class="charliteral">'U'</span>:</div>
|
||
<div class="line"><a name="l06722"></a><span class="lineno"> 6722</span>  {</div>
|
||
<div class="line"><a name="l06723"></a><span class="lineno"> 6723</span>  std::uint8_t number;</div>
|
||
<div class="line"><a name="l06724"></a><span class="lineno"> 6724</span>  <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a4537f20910e85437f6d07701864084e8">input_format_t::ubjson</a>, number) and sax->number_unsigned(number);</div>
|
||
<div class="line"><a name="l06725"></a><span class="lineno"> 6725</span>  }</div>
|
||
<div class="line"><a name="l06726"></a><span class="lineno"> 6726</span>  </div>
|
||
<div class="line"><a name="l06727"></a><span class="lineno"> 6727</span>  <span class="keywordflow">case</span> <span class="charliteral">'i'</span>:</div>
|
||
<div class="line"><a name="l06728"></a><span class="lineno"> 6728</span>  {</div>
|
||
<div class="line"><a name="l06729"></a><span class="lineno"> 6729</span>  std::int8_t number;</div>
|
||
<div class="line"><a name="l06730"></a><span class="lineno"> 6730</span>  <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a4537f20910e85437f6d07701864084e8">input_format_t::ubjson</a>, number) and sax->number_integer(number);</div>
|
||
<div class="line"><a name="l06731"></a><span class="lineno"> 6731</span>  }</div>
|
||
<div class="line"><a name="l06732"></a><span class="lineno"> 6732</span>  </div>
|
||
<div class="line"><a name="l06733"></a><span class="lineno"> 6733</span>  <span class="keywordflow">case</span> <span class="charliteral">'I'</span>:</div>
|
||
<div class="line"><a name="l06734"></a><span class="lineno"> 6734</span>  {</div>
|
||
<div class="line"><a name="l06735"></a><span class="lineno"> 6735</span>  std::int16_t number;</div>
|
||
<div class="line"><a name="l06736"></a><span class="lineno"> 6736</span>  <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a4537f20910e85437f6d07701864084e8">input_format_t::ubjson</a>, number) and sax->number_integer(number);</div>
|
||
<div class="line"><a name="l06737"></a><span class="lineno"> 6737</span>  }</div>
|
||
<div class="line"><a name="l06738"></a><span class="lineno"> 6738</span>  </div>
|
||
<div class="line"><a name="l06739"></a><span class="lineno"> 6739</span>  <span class="keywordflow">case</span> <span class="charliteral">'l'</span>:</div>
|
||
<div class="line"><a name="l06740"></a><span class="lineno"> 6740</span>  {</div>
|
||
<div class="line"><a name="l06741"></a><span class="lineno"> 6741</span>  std::int32_t number;</div>
|
||
<div class="line"><a name="l06742"></a><span class="lineno"> 6742</span>  <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a4537f20910e85437f6d07701864084e8">input_format_t::ubjson</a>, number) and sax->number_integer(number);</div>
|
||
<div class="line"><a name="l06743"></a><span class="lineno"> 6743</span>  }</div>
|
||
<div class="line"><a name="l06744"></a><span class="lineno"> 6744</span>  </div>
|
||
<div class="line"><a name="l06745"></a><span class="lineno"> 6745</span>  <span class="keywordflow">case</span> <span class="charliteral">'L'</span>:</div>
|
||
<div class="line"><a name="l06746"></a><span class="lineno"> 6746</span>  {</div>
|
||
<div class="line"><a name="l06747"></a><span class="lineno"> 6747</span>  std::int64_t number;</div>
|
||
<div class="line"><a name="l06748"></a><span class="lineno"> 6748</span>  <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a4537f20910e85437f6d07701864084e8">input_format_t::ubjson</a>, number) and sax->number_integer(number);</div>
|
||
<div class="line"><a name="l06749"></a><span class="lineno"> 6749</span>  }</div>
|
||
<div class="line"><a name="l06750"></a><span class="lineno"> 6750</span>  </div>
|
||
<div class="line"><a name="l06751"></a><span class="lineno"> 6751</span>  <span class="keywordflow">case</span> <span class="charliteral">'d'</span>:</div>
|
||
<div class="line"><a name="l06752"></a><span class="lineno"> 6752</span>  {</div>
|
||
<div class="line"><a name="l06753"></a><span class="lineno"> 6753</span>  <span class="keywordtype">float</span> number;</div>
|
||
<div class="line"><a name="l06754"></a><span class="lineno"> 6754</span>  <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a4537f20910e85437f6d07701864084e8">input_format_t::ubjson</a>, number) and sax->number_float(<span class="keyword">static_cast<</span>number_float_t<span class="keyword">></span>(number), <span class="stringliteral">""</span>);</div>
|
||
<div class="line"><a name="l06755"></a><span class="lineno"> 6755</span>  }</div>
|
||
<div class="line"><a name="l06756"></a><span class="lineno"> 6756</span>  </div>
|
||
<div class="line"><a name="l06757"></a><span class="lineno"> 6757</span>  <span class="keywordflow">case</span> <span class="charliteral">'D'</span>:</div>
|
||
<div class="line"><a name="l06758"></a><span class="lineno"> 6758</span>  {</div>
|
||
<div class="line"><a name="l06759"></a><span class="lineno"> 6759</span>  <span class="keywordtype">double</span> number;</div>
|
||
<div class="line"><a name="l06760"></a><span class="lineno"> 6760</span>  <span class="keywordflow">return</span> get_number(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a4537f20910e85437f6d07701864084e8">input_format_t::ubjson</a>, number) and sax->number_float(<span class="keyword">static_cast<</span>number_float_t<span class="keyword">></span>(number), <span class="stringliteral">""</span>);</div>
|
||
<div class="line"><a name="l06761"></a><span class="lineno"> 6761</span>  }</div>
|
||
<div class="line"><a name="l06762"></a><span class="lineno"> 6762</span>  </div>
|
||
<div class="line"><a name="l06763"></a><span class="lineno"> 6763</span>  <span class="keywordflow">case</span> <span class="charliteral">'C'</span>: <span class="comment">// char</span></div>
|
||
<div class="line"><a name="l06764"></a><span class="lineno"> 6764</span>  {</div>
|
||
<div class="line"><a name="l06765"></a><span class="lineno"> 6765</span>  get();</div>
|
||
<div class="line"><a name="l06766"></a><span class="lineno"> 6766</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not unexpect_eof(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a4537f20910e85437f6d07701864084e8">input_format_t::ubjson</a>, <span class="stringliteral">"char"</span>)))</div>
|
||
<div class="line"><a name="l06767"></a><span class="lineno"> 6767</span>  {</div>
|
||
<div class="line"><a name="l06768"></a><span class="lineno"> 6768</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||
<div class="line"><a name="l06769"></a><span class="lineno"> 6769</span>  }</div>
|
||
<div class="line"><a name="l06770"></a><span class="lineno"> 6770</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(current > 127))</div>
|
||
<div class="line"><a name="l06771"></a><span class="lineno"> 6771</span>  {</div>
|
||
<div class="line"><a name="l06772"></a><span class="lineno"> 6772</span>  <span class="keyword">auto</span> last_token = get_token_string();</div>
|
||
<div class="line"><a name="l06773"></a><span class="lineno"> 6773</span>  <span class="keywordflow">return</span> sax->parse_error(chars_read, last_token, <a class="code" href="classnlohmann_1_1detail_1_1parse__error.html#a137ea4d27de45d8a844fd13451d40f3d">parse_error::create</a>(113, chars_read, exception_message(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a4537f20910e85437f6d07701864084e8">input_format_t::ubjson</a>, <span class="stringliteral">"byte after 'C' must be in range 0x00..0x7F; last byte: 0x"</span> + last_token, <span class="stringliteral">"char"</span>)));</div>
|
||
<div class="line"><a name="l06774"></a><span class="lineno"> 6774</span>  }</div>
|
||
<div class="line"><a name="l06775"></a><span class="lineno"> 6775</span>  string_t s(1, <span class="keyword">static_cast<</span><span class="keywordtype">char</span><span class="keyword">></span>(current));</div>
|
||
<div class="line"><a name="l06776"></a><span class="lineno"> 6776</span>  <span class="keywordflow">return</span> sax->string(s);</div>
|
||
<div class="line"><a name="l06777"></a><span class="lineno"> 6777</span>  }</div>
|
||
<div class="line"><a name="l06778"></a><span class="lineno"> 6778</span>  </div>
|
||
<div class="line"><a name="l06779"></a><span class="lineno"> 6779</span>  <span class="keywordflow">case</span> <span class="charliteral">'S'</span>: <span class="comment">// string</span></div>
|
||
<div class="line"><a name="l06780"></a><span class="lineno"> 6780</span>  {</div>
|
||
<div class="line"><a name="l06781"></a><span class="lineno"> 6781</span>  string_t s;</div>
|
||
<div class="line"><a name="l06782"></a><span class="lineno"> 6782</span>  <span class="keywordflow">return</span> get_ubjson_string(s) and sax->string(s);</div>
|
||
<div class="line"><a name="l06783"></a><span class="lineno"> 6783</span>  }</div>
|
||
<div class="line"><a name="l06784"></a><span class="lineno"> 6784</span>  </div>
|
||
<div class="line"><a name="l06785"></a><span class="lineno"> 6785</span>  <span class="keywordflow">case</span> <span class="charliteral">'['</span>: <span class="comment">// array</span></div>
|
||
<div class="line"><a name="l06786"></a><span class="lineno"> 6786</span>  <span class="keywordflow">return</span> get_ubjson_array();</div>
|
||
<div class="line"><a name="l06787"></a><span class="lineno"> 6787</span>  </div>
|
||
<div class="line"><a name="l06788"></a><span class="lineno"> 6788</span>  <span class="keywordflow">case</span> <span class="charliteral">'{'</span>: <span class="comment">// object</span></div>
|
||
<div class="line"><a name="l06789"></a><span class="lineno"> 6789</span>  <span class="keywordflow">return</span> get_ubjson_object();</div>
|
||
<div class="line"><a name="l06790"></a><span class="lineno"> 6790</span>  </div>
|
||
<div class="line"><a name="l06791"></a><span class="lineno"> 6791</span>  <span class="keywordflow">default</span>: <span class="comment">// anything else</span></div>
|
||
<div class="line"><a name="l06792"></a><span class="lineno"> 6792</span>  {</div>
|
||
<div class="line"><a name="l06793"></a><span class="lineno"> 6793</span>  <span class="keyword">auto</span> last_token = get_token_string();</div>
|
||
<div class="line"><a name="l06794"></a><span class="lineno"> 6794</span>  <span class="keywordflow">return</span> sax->parse_error(chars_read, last_token, <a class="code" href="classnlohmann_1_1detail_1_1parse__error.html#a137ea4d27de45d8a844fd13451d40f3d">parse_error::create</a>(112, chars_read, exception_message(<a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a4537f20910e85437f6d07701864084e8">input_format_t::ubjson</a>, <span class="stringliteral">"invalid byte: 0x"</span> + last_token, <span class="stringliteral">"value"</span>)));</div>
|
||
<div class="line"><a name="l06795"></a><span class="lineno"> 6795</span>  }</div>
|
||
<div class="line"><a name="l06796"></a><span class="lineno"> 6796</span>  }</div>
|
||
<div class="line"><a name="l06797"></a><span class="lineno"> 6797</span>  }</div>
|
||
<div class="line"><a name="l06798"></a><span class="lineno"> 6798</span>  </div>
|
||
<div class="line"><a name="l06802"></a><span class="lineno"> 6802</span>  <span class="keywordtype">bool</span> get_ubjson_array()</div>
|
||
<div class="line"><a name="l06803"></a><span class="lineno"> 6803</span>  {</div>
|
||
<div class="line"><a name="l06804"></a><span class="lineno"> 6804</span>  std::pair<std::size_t, int> size_and_type;</div>
|
||
<div class="line"><a name="l06805"></a><span class="lineno"> 6805</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not get_ubjson_size_type(size_and_type)))</div>
|
||
<div class="line"><a name="l06806"></a><span class="lineno"> 6806</span>  {</div>
|
||
<div class="line"><a name="l06807"></a><span class="lineno"> 6807</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||
<div class="line"><a name="l06808"></a><span class="lineno"> 6808</span>  }</div>
|
||
<div class="line"><a name="l06809"></a><span class="lineno"> 6809</span>  </div>
|
||
<div class="line"><a name="l06810"></a><span class="lineno"> 6810</span>  <span class="keywordflow">if</span> (size_and_type.first != string_t::npos)</div>
|
||
<div class="line"><a name="l06811"></a><span class="lineno"> 6811</span>  {</div>
|
||
<div class="line"><a name="l06812"></a><span class="lineno"> 6812</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not sax->start_array(size_and_type.first)))</div>
|
||
<div class="line"><a name="l06813"></a><span class="lineno"> 6813</span>  {</div>
|
||
<div class="line"><a name="l06814"></a><span class="lineno"> 6814</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||
<div class="line"><a name="l06815"></a><span class="lineno"> 6815</span>  }</div>
|
||
<div class="line"><a name="l06816"></a><span class="lineno"> 6816</span>  </div>
|
||
<div class="line"><a name="l06817"></a><span class="lineno"> 6817</span>  <span class="keywordflow">if</span> (size_and_type.second != 0)</div>
|
||
<div class="line"><a name="l06818"></a><span class="lineno"> 6818</span>  {</div>
|
||
<div class="line"><a name="l06819"></a><span class="lineno"> 6819</span>  <span class="keywordflow">if</span> (size_and_type.second != <span class="charliteral">'N'</span>)</div>
|
||
<div class="line"><a name="l06820"></a><span class="lineno"> 6820</span>  {</div>
|
||
<div class="line"><a name="l06821"></a><span class="lineno"> 6821</span>  <span class="keywordflow">for</span> (std::size_t i = 0; i < size_and_type.first; ++i)</div>
|
||
<div class="line"><a name="l06822"></a><span class="lineno"> 6822</span>  {</div>
|
||
<div class="line"><a name="l06823"></a><span class="lineno"> 6823</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not get_ubjson_value(size_and_type.second)))</div>
|
||
<div class="line"><a name="l06824"></a><span class="lineno"> 6824</span>  {</div>
|
||
<div class="line"><a name="l06825"></a><span class="lineno"> 6825</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||
<div class="line"><a name="l06826"></a><span class="lineno"> 6826</span>  }</div>
|
||
<div class="line"><a name="l06827"></a><span class="lineno"> 6827</span>  }</div>
|
||
<div class="line"><a name="l06828"></a><span class="lineno"> 6828</span>  }</div>
|
||
<div class="line"><a name="l06829"></a><span class="lineno"> 6829</span>  }</div>
|
||
<div class="line"><a name="l06830"></a><span class="lineno"> 6830</span>  <span class="keywordflow">else</span></div>
|
||
<div class="line"><a name="l06831"></a><span class="lineno"> 6831</span>  {</div>
|
||
<div class="line"><a name="l06832"></a><span class="lineno"> 6832</span>  <span class="keywordflow">for</span> (std::size_t i = 0; i < size_and_type.first; ++i)</div>
|
||
<div class="line"><a name="l06833"></a><span class="lineno"> 6833</span>  {</div>
|
||
<div class="line"><a name="l06834"></a><span class="lineno"> 6834</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not parse_ubjson_internal()))</div>
|
||
<div class="line"><a name="l06835"></a><span class="lineno"> 6835</span>  {</div>
|
||
<div class="line"><a name="l06836"></a><span class="lineno"> 6836</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||
<div class="line"><a name="l06837"></a><span class="lineno"> 6837</span>  }</div>
|
||
<div class="line"><a name="l06838"></a><span class="lineno"> 6838</span>  }</div>
|
||
<div class="line"><a name="l06839"></a><span class="lineno"> 6839</span>  }</div>
|
||
<div class="line"><a name="l06840"></a><span class="lineno"> 6840</span>  }</div>
|
||
<div class="line"><a name="l06841"></a><span class="lineno"> 6841</span>  <span class="keywordflow">else</span></div>
|
||
<div class="line"><a name="l06842"></a><span class="lineno"> 6842</span>  {</div>
|
||
<div class="line"><a name="l06843"></a><span class="lineno"> 6843</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not sax->start_array(std::size_t(-1))))</div>
|
||
<div class="line"><a name="l06844"></a><span class="lineno"> 6844</span>  {</div>
|
||
<div class="line"><a name="l06845"></a><span class="lineno"> 6845</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||
<div class="line"><a name="l06846"></a><span class="lineno"> 6846</span>  }</div>
|
||
<div class="line"><a name="l06847"></a><span class="lineno"> 6847</span>  </div>
|
||
<div class="line"><a name="l06848"></a><span class="lineno"> 6848</span>  <span class="keywordflow">while</span> (current != <span class="charliteral">']'</span>)</div>
|
||
<div class="line"><a name="l06849"></a><span class="lineno"> 6849</span>  {</div>
|
||
<div class="line"><a name="l06850"></a><span class="lineno"> 6850</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not parse_ubjson_internal(<span class="keyword">false</span>)))</div>
|
||
<div class="line"><a name="l06851"></a><span class="lineno"> 6851</span>  {</div>
|
||
<div class="line"><a name="l06852"></a><span class="lineno"> 6852</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||
<div class="line"><a name="l06853"></a><span class="lineno"> 6853</span>  }</div>
|
||
<div class="line"><a name="l06854"></a><span class="lineno"> 6854</span>  get_ignore_noop();</div>
|
||
<div class="line"><a name="l06855"></a><span class="lineno"> 6855</span>  }</div>
|
||
<div class="line"><a name="l06856"></a><span class="lineno"> 6856</span>  }</div>
|
||
<div class="line"><a name="l06857"></a><span class="lineno"> 6857</span>  </div>
|
||
<div class="line"><a name="l06858"></a><span class="lineno"> 6858</span>  <span class="keywordflow">return</span> sax->end_array();</div>
|
||
<div class="line"><a name="l06859"></a><span class="lineno"> 6859</span>  }</div>
|
||
<div class="line"><a name="l06860"></a><span class="lineno"> 6860</span>  </div>
|
||
<div class="line"><a name="l06864"></a><span class="lineno"> 6864</span>  <span class="keywordtype">bool</span> get_ubjson_object()</div>
|
||
<div class="line"><a name="l06865"></a><span class="lineno"> 6865</span>  {</div>
|
||
<div class="line"><a name="l06866"></a><span class="lineno"> 6866</span>  std::pair<std::size_t, int> size_and_type;</div>
|
||
<div class="line"><a name="l06867"></a><span class="lineno"> 6867</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not get_ubjson_size_type(size_and_type)))</div>
|
||
<div class="line"><a name="l06868"></a><span class="lineno"> 6868</span>  {</div>
|
||
<div class="line"><a name="l06869"></a><span class="lineno"> 6869</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||
<div class="line"><a name="l06870"></a><span class="lineno"> 6870</span>  }</div>
|
||
<div class="line"><a name="l06871"></a><span class="lineno"> 6871</span>  </div>
|
||
<div class="line"><a name="l06872"></a><span class="lineno"> 6872</span>  string_t key;</div>
|
||
<div class="line"><a name="l06873"></a><span class="lineno"> 6873</span>  <span class="keywordflow">if</span> (size_and_type.first != string_t::npos)</div>
|
||
<div class="line"><a name="l06874"></a><span class="lineno"> 6874</span>  {</div>
|
||
<div class="line"><a name="l06875"></a><span class="lineno"> 6875</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not sax->start_object(size_and_type.first)))</div>
|
||
<div class="line"><a name="l06876"></a><span class="lineno"> 6876</span>  {</div>
|
||
<div class="line"><a name="l06877"></a><span class="lineno"> 6877</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||
<div class="line"><a name="l06878"></a><span class="lineno"> 6878</span>  }</div>
|
||
<div class="line"><a name="l06879"></a><span class="lineno"> 6879</span>  </div>
|
||
<div class="line"><a name="l06880"></a><span class="lineno"> 6880</span>  <span class="keywordflow">if</span> (size_and_type.second != 0)</div>
|
||
<div class="line"><a name="l06881"></a><span class="lineno"> 6881</span>  {</div>
|
||
<div class="line"><a name="l06882"></a><span class="lineno"> 6882</span>  <span class="keywordflow">for</span> (std::size_t i = 0; i < size_and_type.first; ++i)</div>
|
||
<div class="line"><a name="l06883"></a><span class="lineno"> 6883</span>  {</div>
|
||
<div class="line"><a name="l06884"></a><span class="lineno"> 6884</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not get_ubjson_string(key) or not sax->key(key)))</div>
|
||
<div class="line"><a name="l06885"></a><span class="lineno"> 6885</span>  {</div>
|
||
<div class="line"><a name="l06886"></a><span class="lineno"> 6886</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||
<div class="line"><a name="l06887"></a><span class="lineno"> 6887</span>  }</div>
|
||
<div class="line"><a name="l06888"></a><span class="lineno"> 6888</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not get_ubjson_value(size_and_type.second)))</div>
|
||
<div class="line"><a name="l06889"></a><span class="lineno"> 6889</span>  {</div>
|
||
<div class="line"><a name="l06890"></a><span class="lineno"> 6890</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||
<div class="line"><a name="l06891"></a><span class="lineno"> 6891</span>  }</div>
|
||
<div class="line"><a name="l06892"></a><span class="lineno"> 6892</span>  key.clear();</div>
|
||
<div class="line"><a name="l06893"></a><span class="lineno"> 6893</span>  }</div>
|
||
<div class="line"><a name="l06894"></a><span class="lineno"> 6894</span>  }</div>
|
||
<div class="line"><a name="l06895"></a><span class="lineno"> 6895</span>  <span class="keywordflow">else</span></div>
|
||
<div class="line"><a name="l06896"></a><span class="lineno"> 6896</span>  {</div>
|
||
<div class="line"><a name="l06897"></a><span class="lineno"> 6897</span>  <span class="keywordflow">for</span> (std::size_t i = 0; i < size_and_type.first; ++i)</div>
|
||
<div class="line"><a name="l06898"></a><span class="lineno"> 6898</span>  {</div>
|
||
<div class="line"><a name="l06899"></a><span class="lineno"> 6899</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not get_ubjson_string(key) or not sax->key(key)))</div>
|
||
<div class="line"><a name="l06900"></a><span class="lineno"> 6900</span>  {</div>
|
||
<div class="line"><a name="l06901"></a><span class="lineno"> 6901</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||
<div class="line"><a name="l06902"></a><span class="lineno"> 6902</span>  }</div>
|
||
<div class="line"><a name="l06903"></a><span class="lineno"> 6903</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not parse_ubjson_internal()))</div>
|
||
<div class="line"><a name="l06904"></a><span class="lineno"> 6904</span>  {</div>
|
||
<div class="line"><a name="l06905"></a><span class="lineno"> 6905</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||
<div class="line"><a name="l06906"></a><span class="lineno"> 6906</span>  }</div>
|
||
<div class="line"><a name="l06907"></a><span class="lineno"> 6907</span>  key.clear();</div>
|
||
<div class="line"><a name="l06908"></a><span class="lineno"> 6908</span>  }</div>
|
||
<div class="line"><a name="l06909"></a><span class="lineno"> 6909</span>  }</div>
|
||
<div class="line"><a name="l06910"></a><span class="lineno"> 6910</span>  }</div>
|
||
<div class="line"><a name="l06911"></a><span class="lineno"> 6911</span>  <span class="keywordflow">else</span></div>
|
||
<div class="line"><a name="l06912"></a><span class="lineno"> 6912</span>  {</div>
|
||
<div class="line"><a name="l06913"></a><span class="lineno"> 6913</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not sax->start_object(std::size_t(-1))))</div>
|
||
<div class="line"><a name="l06914"></a><span class="lineno"> 6914</span>  {</div>
|
||
<div class="line"><a name="l06915"></a><span class="lineno"> 6915</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||
<div class="line"><a name="l06916"></a><span class="lineno"> 6916</span>  }</div>
|
||
<div class="line"><a name="l06917"></a><span class="lineno"> 6917</span>  </div>
|
||
<div class="line"><a name="l06918"></a><span class="lineno"> 6918</span>  <span class="keywordflow">while</span> (current != <span class="charliteral">'}'</span>)</div>
|
||
<div class="line"><a name="l06919"></a><span class="lineno"> 6919</span>  {</div>
|
||
<div class="line"><a name="l06920"></a><span class="lineno"> 6920</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not get_ubjson_string(key, <span class="keyword">false</span>) or not sax->key(key)))</div>
|
||
<div class="line"><a name="l06921"></a><span class="lineno"> 6921</span>  {</div>
|
||
<div class="line"><a name="l06922"></a><span class="lineno"> 6922</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||
<div class="line"><a name="l06923"></a><span class="lineno"> 6923</span>  }</div>
|
||
<div class="line"><a name="l06924"></a><span class="lineno"> 6924</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not parse_ubjson_internal()))</div>
|
||
<div class="line"><a name="l06925"></a><span class="lineno"> 6925</span>  {</div>
|
||
<div class="line"><a name="l06926"></a><span class="lineno"> 6926</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||
<div class="line"><a name="l06927"></a><span class="lineno"> 6927</span>  }</div>
|
||
<div class="line"><a name="l06928"></a><span class="lineno"> 6928</span>  get_ignore_noop();</div>
|
||
<div class="line"><a name="l06929"></a><span class="lineno"> 6929</span>  key.clear();</div>
|
||
<div class="line"><a name="l06930"></a><span class="lineno"> 6930</span>  }</div>
|
||
<div class="line"><a name="l06931"></a><span class="lineno"> 6931</span>  }</div>
|
||
<div class="line"><a name="l06932"></a><span class="lineno"> 6932</span>  </div>
|
||
<div class="line"><a name="l06933"></a><span class="lineno"> 6933</span>  <span class="keywordflow">return</span> sax->end_object();</div>
|
||
<div class="line"><a name="l06934"></a><span class="lineno"> 6934</span>  }</div>
|
||
<div class="line"><a name="l06935"></a><span class="lineno"> 6935</span>  </div>
|
||
<div class="line"><a name="l06937"></a><span class="lineno"> 6937</span>  <span class="comment">// Utility functions //</span></div>
|
||
<div class="line"><a name="l06939"></a><span class="lineno"> 6939</span> <span class="comment"></span> </div>
|
||
<div class="line"><a name="l06949"></a><span class="lineno"> 6949</span>  <span class="keywordtype">int</span> get()</div>
|
||
<div class="line"><a name="l06950"></a><span class="lineno"> 6950</span>  {</div>
|
||
<div class="line"><a name="l06951"></a><span class="lineno"> 6951</span>  ++chars_read;</div>
|
||
<div class="line"><a name="l06952"></a><span class="lineno"> 6952</span>  <span class="keywordflow">return</span> current = ia->get_character();</div>
|
||
<div class="line"><a name="l06953"></a><span class="lineno"> 6953</span>  }</div>
|
||
<div class="line"><a name="l06954"></a><span class="lineno"> 6954</span>  </div>
|
||
<div class="line"><a name="l06958"></a><span class="lineno"> 6958</span>  <span class="keywordtype">int</span> get_ignore_noop()</div>
|
||
<div class="line"><a name="l06959"></a><span class="lineno"> 6959</span>  {</div>
|
||
<div class="line"><a name="l06960"></a><span class="lineno"> 6960</span>  <span class="keywordflow">do</span></div>
|
||
<div class="line"><a name="l06961"></a><span class="lineno"> 6961</span>  {</div>
|
||
<div class="line"><a name="l06962"></a><span class="lineno"> 6962</span>  get();</div>
|
||
<div class="line"><a name="l06963"></a><span class="lineno"> 6963</span>  }</div>
|
||
<div class="line"><a name="l06964"></a><span class="lineno"> 6964</span>  <span class="keywordflow">while</span> (current == <span class="charliteral">'N'</span>);</div>
|
||
<div class="line"><a name="l06965"></a><span class="lineno"> 6965</span>  </div>
|
||
<div class="line"><a name="l06966"></a><span class="lineno"> 6966</span>  <span class="keywordflow">return</span> current;</div>
|
||
<div class="line"><a name="l06967"></a><span class="lineno"> 6967</span>  }</div>
|
||
<div class="line"><a name="l06968"></a><span class="lineno"> 6968</span>  </div>
|
||
<div class="line"><a name="l06969"></a><span class="lineno"> 6969</span>  <span class="comment">/*</span></div>
|
||
<div class="line"><a name="l06970"></a><span class="lineno"> 6970</span> <span class="comment"> @brief read a number from the input</span></div>
|
||
<div class="line"><a name="l06971"></a><span class="lineno"> 6971</span> <span class="comment"></span> </div>
|
||
<div class="line"><a name="l06972"></a><span class="lineno"> 6972</span> <span class="comment"> @tparam NumberType the type of the number</span></div>
|
||
<div class="line"><a name="l06973"></a><span class="lineno"> 6973</span> <span class="comment"> @param[in] format the current format (for diagnostics)</span></div>
|
||
<div class="line"><a name="l06974"></a><span class="lineno"> 6974</span> <span class="comment"> @param[out] result number of type @a NumberType</span></div>
|
||
<div class="line"><a name="l06975"></a><span class="lineno"> 6975</span> <span class="comment"></span> </div>
|
||
<div class="line"><a name="l06976"></a><span class="lineno"> 6976</span> <span class="comment"> @return whether conversion completed</span></div>
|
||
<div class="line"><a name="l06977"></a><span class="lineno"> 6977</span> <span class="comment"></span> </div>
|
||
<div class="line"><a name="l06978"></a><span class="lineno"> 6978</span> <span class="comment"> @note This function needs to respect the system's endianess, because</span></div>
|
||
<div class="line"><a name="l06979"></a><span class="lineno"> 6979</span> <span class="comment"> bytes in CBOR, MessagePack, and UBJSON are stored in network order</span></div>
|
||
<div class="line"><a name="l06980"></a><span class="lineno"> 6980</span> <span class="comment"> (big endian) and therefore need reordering on little endian systems.</span></div>
|
||
<div class="line"><a name="l06981"></a><span class="lineno"> 6981</span> <span class="comment"> */</span></div>
|
||
<div class="line"><a name="l06982"></a><span class="lineno"> 6982</span>  <span class="keyword">template</span><<span class="keyword">typename</span> NumberType, <span class="keywordtype">bool</span> InputIsLittleEndian = false></div>
|
||
<div class="line"><a name="l06983"></a><span class="lineno"> 6983</span>  <span class="keywordtype">bool</span> get_number(<span class="keyword">const</span> <a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40">input_format_t</a> format, NumberType& result)</div>
|
||
<div class="line"><a name="l06984"></a><span class="lineno"> 6984</span>  {</div>
|
||
<div class="line"><a name="l06985"></a><span class="lineno"> 6985</span>  <span class="comment">// step 1: read input into array with system's byte order</span></div>
|
||
<div class="line"><a name="l06986"></a><span class="lineno"> 6986</span>  std::array<std::uint8_t, <span class="keyword">sizeof</span>(NumberType)> vec;</div>
|
||
<div class="line"><a name="l06987"></a><span class="lineno"> 6987</span>  <span class="keywordflow">for</span> (std::size_t i = 0; i < <span class="keyword">sizeof</span>(NumberType); ++i)</div>
|
||
<div class="line"><a name="l06988"></a><span class="lineno"> 6988</span>  {</div>
|
||
<div class="line"><a name="l06989"></a><span class="lineno"> 6989</span>  get();</div>
|
||
<div class="line"><a name="l06990"></a><span class="lineno"> 6990</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not unexpect_eof(format, <span class="stringliteral">"number"</span>)))</div>
|
||
<div class="line"><a name="l06991"></a><span class="lineno"> 6991</span>  {</div>
|
||
<div class="line"><a name="l06992"></a><span class="lineno"> 6992</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||
<div class="line"><a name="l06993"></a><span class="lineno"> 6993</span>  }</div>
|
||
<div class="line"><a name="l06994"></a><span class="lineno"> 6994</span>  </div>
|
||
<div class="line"><a name="l06995"></a><span class="lineno"> 6995</span>  <span class="comment">// reverse byte order prior to conversion if necessary</span></div>
|
||
<div class="line"><a name="l06996"></a><span class="lineno"> 6996</span>  <span class="keywordflow">if</span> (is_little_endian != InputIsLittleEndian)</div>
|
||
<div class="line"><a name="l06997"></a><span class="lineno"> 6997</span>  {</div>
|
||
<div class="line"><a name="l06998"></a><span class="lineno"> 6998</span>  vec[<span class="keyword">sizeof</span>(NumberType) - i - 1] = <span class="keyword">static_cast<</span>std::uint8_t<span class="keyword">></span>(current);</div>
|
||
<div class="line"><a name="l06999"></a><span class="lineno"> 6999</span>  }</div>
|
||
<div class="line"><a name="l07000"></a><span class="lineno"> 7000</span>  <span class="keywordflow">else</span></div>
|
||
<div class="line"><a name="l07001"></a><span class="lineno"> 7001</span>  {</div>
|
||
<div class="line"><a name="l07002"></a><span class="lineno"> 7002</span>  vec[i] = <span class="keyword">static_cast<</span>std::uint8_t<span class="keyword">></span>(current); <span class="comment">// LCOV_EXCL_LINE</span></div>
|
||
<div class="line"><a name="l07003"></a><span class="lineno"> 7003</span>  }</div>
|
||
<div class="line"><a name="l07004"></a><span class="lineno"> 7004</span>  }</div>
|
||
<div class="line"><a name="l07005"></a><span class="lineno"> 7005</span>  </div>
|
||
<div class="line"><a name="l07006"></a><span class="lineno"> 7006</span>  <span class="comment">// step 2: convert array into number of type T and return</span></div>
|
||
<div class="line"><a name="l07007"></a><span class="lineno"> 7007</span>  std::memcpy(&result, vec.data(), <span class="keyword">sizeof</span>(NumberType));</div>
|
||
<div class="line"><a name="l07008"></a><span class="lineno"> 7008</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
||
<div class="line"><a name="l07009"></a><span class="lineno"> 7009</span>  }</div>
|
||
<div class="line"><a name="l07010"></a><span class="lineno"> 7010</span>  </div>
|
||
<div class="line"><a name="l07025"></a><span class="lineno"> 7025</span>  <span class="keyword">template</span><<span class="keyword">typename</span> NumberType></div>
|
||
<div class="line"><a name="l07026"></a><span class="lineno"> 7026</span>  <span class="keywordtype">bool</span> get_string(<span class="keyword">const</span> <a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40">input_format_t</a> format,</div>
|
||
<div class="line"><a name="l07027"></a><span class="lineno"> 7027</span>  <span class="keyword">const</span> NumberType len,</div>
|
||
<div class="line"><a name="l07028"></a><span class="lineno"> 7028</span>  string_t& result)</div>
|
||
<div class="line"><a name="l07029"></a><span class="lineno"> 7029</span>  {</div>
|
||
<div class="line"><a name="l07030"></a><span class="lineno"> 7030</span>  <span class="keywordtype">bool</span> success = <span class="keyword">true</span>;</div>
|
||
<div class="line"><a name="l07031"></a><span class="lineno"> 7031</span>  std::generate_n(std::back_inserter(result), len, [<span class="keyword">this</span>, &success, &format]()</div>
|
||
<div class="line"><a name="l07032"></a><span class="lineno"> 7032</span>  {</div>
|
||
<div class="line"><a name="l07033"></a><span class="lineno"> 7033</span>  get();</div>
|
||
<div class="line"><a name="l07034"></a><span class="lineno"> 7034</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not unexpect_eof(format, <span class="stringliteral">"string"</span>)))</div>
|
||
<div class="line"><a name="l07035"></a><span class="lineno"> 7035</span>  {</div>
|
||
<div class="line"><a name="l07036"></a><span class="lineno"> 7036</span>  success = <span class="keyword">false</span>;</div>
|
||
<div class="line"><a name="l07037"></a><span class="lineno"> 7037</span>  }</div>
|
||
<div class="line"><a name="l07038"></a><span class="lineno"> 7038</span>  <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><span class="keywordtype">char</span><span class="keyword">></span>(current);</div>
|
||
<div class="line"><a name="l07039"></a><span class="lineno"> 7039</span>  });</div>
|
||
<div class="line"><a name="l07040"></a><span class="lineno"> 7040</span>  <span class="keywordflow">return</span> success;</div>
|
||
<div class="line"><a name="l07041"></a><span class="lineno"> 7041</span>  }</div>
|
||
<div class="line"><a name="l07042"></a><span class="lineno"> 7042</span>  </div>
|
||
<div class="line"><a name="l07048"></a><span class="lineno"> 7048</span>  <a class="code" href="json_8hpp.html#a5338981b5ad9027c9e54b1c5597f4344">JSON_HEDLEY_NON_NULL</a>(3)</div>
|
||
<div class="line"><a name="l07049"></a><span class="lineno"> 7049</span>  bool unexpect_eof(const <a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40">input_format_t</a> format, const <span class="keywordtype">char</span>* context)<span class="keyword"> const</span></div>
|
||
<div class="line"><a name="l07050"></a><span class="lineno"> 7050</span> <span class="keyword"> </span>{</div>
|
||
<div class="line"><a name="l07051"></a><span class="lineno"> 7051</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(current == std::char_traits<char>::eof()))</div>
|
||
<div class="line"><a name="l07052"></a><span class="lineno"> 7052</span>  {</div>
|
||
<div class="line"><a name="l07053"></a><span class="lineno"> 7053</span>  <span class="keywordflow">return</span> sax->parse_error(chars_read, <span class="stringliteral">"<end of file>"</span>,</div>
|
||
<div class="line"><a name="l07054"></a><span class="lineno"> 7054</span>  <a class="code" href="classnlohmann_1_1detail_1_1parse__error.html#a137ea4d27de45d8a844fd13451d40f3d">parse_error::create</a>(110, chars_read, exception_message(format, <span class="stringliteral">"unexpected end of input"</span>, context)));</div>
|
||
<div class="line"><a name="l07055"></a><span class="lineno"> 7055</span>  }</div>
|
||
<div class="line"><a name="l07056"></a><span class="lineno"> 7056</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
||
<div class="line"><a name="l07057"></a><span class="lineno"> 7057</span>  }</div>
|
||
<div class="line"><a name="l07058"></a><span class="lineno"> 7058</span>  </div>
|
||
<div class="line"><a name="l07062"></a><span class="lineno"> 7062</span>  std::string get_token_string()<span class="keyword"> const</span></div>
|
||
<div class="line"><a name="l07063"></a><span class="lineno"> 7063</span> <span class="keyword"> </span>{</div>
|
||
<div class="line"><a name="l07064"></a><span class="lineno"> 7064</span>  std::array<char, 3> cr{{}};</div>
|
||
<div class="line"><a name="l07065"></a><span class="lineno"> 7065</span>  (std::snprintf)(cr.data(), cr.size(), <span class="stringliteral">"%.2hhX"</span>, <span class="keyword">static_cast<</span><span class="keywordtype">unsigned</span> <span class="keywordtype">char</span><span class="keyword">></span>(current));</div>
|
||
<div class="line"><a name="l07066"></a><span class="lineno"> 7066</span>  <span class="keywordflow">return</span> std::string{cr.data()};</div>
|
||
<div class="line"><a name="l07067"></a><span class="lineno"> 7067</span>  }</div>
|
||
<div class="line"><a name="l07068"></a><span class="lineno"> 7068</span>  </div>
|
||
<div class="line"><a name="l07075"></a><span class="lineno"> 7075</span>  std::string exception_message(<span class="keyword">const</span> <a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40">input_format_t</a> format,</div>
|
||
<div class="line"><a name="l07076"></a><span class="lineno"> 7076</span>  <span class="keyword">const</span> std::string& detail,</div>
|
||
<div class="line"><a name="l07077"></a><span class="lineno"> 7077</span>  <span class="keyword">const</span> std::string& context)<span class="keyword"> const</span></div>
|
||
<div class="line"><a name="l07078"></a><span class="lineno"> 7078</span> <span class="keyword"> </span>{</div>
|
||
<div class="line"><a name="l07079"></a><span class="lineno"> 7079</span>  std::string error_msg = <span class="stringliteral">"syntax error while parsing "</span>;</div>
|
||
<div class="line"><a name="l07080"></a><span class="lineno"> 7080</span>  </div>
|
||
<div class="line"><a name="l07081"></a><span class="lineno"> 7081</span>  <span class="keywordflow">switch</span> (format)</div>
|
||
<div class="line"><a name="l07082"></a><span class="lineno"> 7082</span>  {</div>
|
||
<div class="line"><a name="l07083"></a><span class="lineno"> 7083</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40aaf9de350d652f0c9055ddab514bd23ea">input_format_t::cbor</a>:</div>
|
||
<div class="line"><a name="l07084"></a><span class="lineno"> 7084</span>  error_msg += <span class="stringliteral">"CBOR"</span>;</div>
|
||
<div class="line"><a name="l07085"></a><span class="lineno"> 7085</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l07086"></a><span class="lineno"> 7086</span>  </div>
|
||
<div class="line"><a name="l07087"></a><span class="lineno"> 7087</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40ac40d516627022a54003ac2b74a82688a">input_format_t::msgpack</a>:</div>
|
||
<div class="line"><a name="l07088"></a><span class="lineno"> 7088</span>  error_msg += <span class="stringliteral">"MessagePack"</span>;</div>
|
||
<div class="line"><a name="l07089"></a><span class="lineno"> 7089</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l07090"></a><span class="lineno"> 7090</span>  </div>
|
||
<div class="line"><a name="l07091"></a><span class="lineno"> 7091</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a4537f20910e85437f6d07701864084e8">input_format_t::ubjson</a>:</div>
|
||
<div class="line"><a name="l07092"></a><span class="lineno"> 7092</span>  error_msg += <span class="stringliteral">"UBJSON"</span>;</div>
|
||
<div class="line"><a name="l07093"></a><span class="lineno"> 7093</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l07094"></a><span class="lineno"> 7094</span>  </div>
|
||
<div class="line"><a name="l07095"></a><span class="lineno"> 7095</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a0b6879b186bfb2b1ec65d2460e4eccd4">input_format_t::bson</a>:</div>
|
||
<div class="line"><a name="l07096"></a><span class="lineno"> 7096</span>  error_msg += <span class="stringliteral">"BSON"</span>;</div>
|
||
<div class="line"><a name="l07097"></a><span class="lineno"> 7097</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l07098"></a><span class="lineno"> 7098</span>  </div>
|
||
<div class="line"><a name="l07099"></a><span class="lineno"> 7099</span>  <span class="keywordflow">default</span>: <span class="comment">// LCOV_EXCL_LINE</span></div>
|
||
<div class="line"><a name="l07100"></a><span class="lineno"> 7100</span>  assert(<span class="keyword">false</span>); <span class="comment">// LCOV_EXCL_LINE</span></div>
|
||
<div class="line"><a name="l07101"></a><span class="lineno"> 7101</span>  }</div>
|
||
<div class="line"><a name="l07102"></a><span class="lineno"> 7102</span>  </div>
|
||
<div class="line"><a name="l07103"></a><span class="lineno"> 7103</span>  <span class="keywordflow">return</span> error_msg + <span class="stringliteral">" "</span> + context + <span class="stringliteral">": "</span> + detail;</div>
|
||
<div class="line"><a name="l07104"></a><span class="lineno"> 7104</span>  }</div>
|
||
<div class="line"><a name="l07105"></a><span class="lineno"> 7105</span>  </div>
|
||
<div class="line"><a name="l07106"></a><span class="lineno"> 7106</span>  <span class="keyword">private</span>:</div>
|
||
<div class="line"><a name="l07108"></a><span class="lineno"> 7108</span>  <a class="code" href="namespacenlohmann_1_1detail.html#ae132f8cd5bb24c5e9b40ad0eafedf1c2">input_adapter_t</a> ia = <span class="keyword">nullptr</span>;</div>
|
||
<div class="line"><a name="l07109"></a><span class="lineno"> 7109</span>  </div>
|
||
<div class="line"><a name="l07111"></a><span class="lineno"> 7111</span>  <span class="keywordtype">int</span> current = std::char_traits<char>::eof();</div>
|
||
<div class="line"><a name="l07112"></a><span class="lineno"> 7112</span>  </div>
|
||
<div class="line"><a name="l07114"></a><span class="lineno"> 7114</span>  std::size_t chars_read = 0;</div>
|
||
<div class="line"><a name="l07115"></a><span class="lineno"> 7115</span>  </div>
|
||
<div class="line"><a name="l07117"></a><span class="lineno"> 7117</span>  <span class="keyword">const</span> <span class="keywordtype">bool</span> is_little_endian = <a class="code" href="classnlohmann_1_1detail_1_1binary__reader.html#a1e31dbfcf9567c8c2d4f0e4eb1b0230a">little_endianess</a>();</div>
|
||
<div class="line"><a name="l07118"></a><span class="lineno"> 7118</span>  </div>
|
||
<div class="line"><a name="l07120"></a><span class="lineno"> 7120</span>  json_sax_t* sax = <span class="keyword">nullptr</span>;</div>
|
||
<div class="line"><a name="l07121"></a><span class="lineno"> 7121</span> };</div>
|
||
<div class="line"><a name="l07122"></a><span class="lineno"> 7122</span> } <span class="comment">// namespace detail</span></div>
|
||
<div class="line"><a name="l07123"></a><span class="lineno"> 7123</span> } <span class="comment">// namespace nlohmann</span></div>
|
||
<div class="line"><a name="l07124"></a><span class="lineno"> 7124</span>  </div>
|
||
<div class="line"><a name="l07125"></a><span class="lineno"> 7125</span> <span class="comment">// #include <nlohmann/detail/input/input_adapters.hpp></span></div>
|
||
<div class="line"><a name="l07126"></a><span class="lineno"> 7126</span>  </div>
|
||
<div class="line"><a name="l07127"></a><span class="lineno"> 7127</span> <span class="comment">// #include <nlohmann/detail/input/lexer.hpp></span></div>
|
||
<div class="line"><a name="l07128"></a><span class="lineno"> 7128</span>  </div>
|
||
<div class="line"><a name="l07129"></a><span class="lineno"> 7129</span>  </div>
|
||
<div class="line"><a name="l07130"></a><span class="lineno"> 7130</span> <span class="preprocessor">#include <array></span> <span class="comment">// array</span></div>
|
||
<div class="line"><a name="l07131"></a><span class="lineno"> 7131</span> <span class="preprocessor">#include <clocale></span> <span class="comment">// localeconv</span></div>
|
||
<div class="line"><a name="l07132"></a><span class="lineno"> 7132</span> <span class="preprocessor">#include <cstddef></span> <span class="comment">// size_t</span></div>
|
||
<div class="line"><a name="l07133"></a><span class="lineno"> 7133</span> <span class="preprocessor">#include <cstdio></span> <span class="comment">// snprintf</span></div>
|
||
<div class="line"><a name="l07134"></a><span class="lineno"> 7134</span> <span class="preprocessor">#include <cstdlib></span> <span class="comment">// strtof, strtod, strtold, strtoll, strtoull</span></div>
|
||
<div class="line"><a name="l07135"></a><span class="lineno"> 7135</span> <span class="preprocessor">#include <initializer_list></span> <span class="comment">// initializer_list</span></div>
|
||
<div class="line"><a name="l07136"></a><span class="lineno"> 7136</span> <span class="preprocessor">#include <string></span> <span class="comment">// char_traits, string</span></div>
|
||
<div class="line"><a name="l07137"></a><span class="lineno"> 7137</span> <span class="preprocessor">#include <utility></span> <span class="comment">// move</span></div>
|
||
<div class="line"><a name="l07138"></a><span class="lineno"> 7138</span> <span class="preprocessor">#include <vector></span> <span class="comment">// vector</span></div>
|
||
<div class="line"><a name="l07139"></a><span class="lineno"> 7139</span>  </div>
|
||
<div class="line"><a name="l07140"></a><span class="lineno"> 7140</span> <span class="comment">// #include <nlohmann/detail/input/input_adapters.hpp></span></div>
|
||
<div class="line"><a name="l07141"></a><span class="lineno"> 7141</span>  </div>
|
||
<div class="line"><a name="l07142"></a><span class="lineno"> 7142</span> <span class="comment">// #include <nlohmann/detail/input/position_t.hpp></span></div>
|
||
<div class="line"><a name="l07143"></a><span class="lineno"> 7143</span>  </div>
|
||
<div class="line"><a name="l07144"></a><span class="lineno"> 7144</span> <span class="comment">// #include <nlohmann/detail/macro_scope.hpp></span></div>
|
||
<div class="line"><a name="l07145"></a><span class="lineno"> 7145</span>  </div>
|
||
<div class="line"><a name="l07146"></a><span class="lineno"> 7146</span>  </div>
|
||
<div class="line"><a name="l07147"></a><span class="lineno"> 7147</span> <span class="keyword">namespace </span><a class="code" href="namespacenlohmann.html">nlohmann</a></div>
|
||
<div class="line"><a name="l07148"></a><span class="lineno"> 7148</span> {</div>
|
||
<div class="line"><a name="l07149"></a><span class="lineno"> 7149</span> <span class="keyword">namespace </span>detail</div>
|
||
<div class="line"><a name="l07150"></a><span class="lineno"> 7150</span> {</div>
|
||
<div class="line"><a name="l07152"></a><span class="lineno"> 7152</span> <span class="comment">// lexer //</span></div>
|
||
<div class="line"><a name="l07154"></a><span class="lineno"> 7154</span> <span class="comment"></span> </div>
|
||
<div class="line"><a name="l07160"></a><span class="lineno"> 7160</span> <span class="keyword">template</span><<span class="keyword">typename</span> BasicJsonType></div>
|
||
<div class="line"><a name="l07161"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1lexer.html"> 7161</a></span> <span class="keyword">class </span><a class="code" href="classnlohmann_1_1detail_1_1lexer.html">lexer</a></div>
|
||
<div class="line"><a name="l07162"></a><span class="lineno"> 7162</span> {</div>
|
||
<div class="line"><a name="l07163"></a><span class="lineno"> 7163</span>  <span class="keyword">using</span> number_integer_t = <span class="keyword">typename</span> BasicJsonType::number_integer_t;</div>
|
||
<div class="line"><a name="l07164"></a><span class="lineno"> 7164</span>  <span class="keyword">using</span> number_unsigned_t = <span class="keyword">typename</span> BasicJsonType::number_unsigned_t;</div>
|
||
<div class="line"><a name="l07165"></a><span class="lineno"> 7165</span>  <span class="keyword">using</span> number_float_t = <span class="keyword">typename</span> BasicJsonType::number_float_t;</div>
|
||
<div class="line"><a name="l07166"></a><span class="lineno"> 7166</span>  <span class="keyword">using</span> string_t = <span class="keyword">typename</span> BasicJsonType::string_t;</div>
|
||
<div class="line"><a name="l07167"></a><span class="lineno"> 7167</span>  </div>
|
||
<div class="line"><a name="l07168"></a><span class="lineno"> 7168</span>  <span class="keyword">public</span>:</div>
|
||
<div class="line"><a name="l07170"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098"> 7170</a></span>  <span class="keyword">enum class</span> <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098">token_type</a></div>
|
||
<div class="line"><a name="l07171"></a><span class="lineno"> 7171</span>  {</div>
|
||
<div class="line"><a name="l07172"></a><span class="lineno"> 7172</span>  <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098a42dd1a73d072bb6bf3f494f22b15db8e">uninitialized</a>, </div>
|
||
<div class="line"><a name="l07173"></a><span class="lineno"> 7173</span>  <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098a85cc1a37b0aaa52de40e72f0ed4e0c0d">literal_true</a>, </div>
|
||
<div class="line"><a name="l07174"></a><span class="lineno"> 7174</span>  <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098afab1694b1b3937a079f4625fe0b6108b">literal_false</a>, </div>
|
||
<div class="line"><a name="l07175"></a><span class="lineno"> 7175</span>  <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098ab7ae4c0e46d86f884677768160b26e9e">literal_null</a>, </div>
|
||
<div class="line"><a name="l07176"></a><span class="lineno"> 7176</span>  <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098a2b490e8bf366b4cbe3ebd99b26ce15ce">value_string</a>, </div>
|
||
<div class="line"><a name="l07177"></a><span class="lineno"> 7177</span>  <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098aaf1f040fcd2f674d2e5893d7a731078f">value_unsigned</a>, </div>
|
||
<div class="line"><a name="l07178"></a><span class="lineno"> 7178</span>  <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098a5064b6655d88a50ae16665cf7751c0ee">value_integer</a>, </div>
|
||
<div class="line"><a name="l07179"></a><span class="lineno"> 7179</span>  <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098a0d2671a6f81efb91e77f6ac3bdb11443">value_float</a>, </div>
|
||
<div class="line"><a name="l07180"></a><span class="lineno"> 7180</span>  <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098a16c226b4425b68560fea322b46dabe01">begin_array</a>, </div>
|
||
<div class="line"><a name="l07181"></a><span class="lineno"> 7181</span>  <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098a9a9ffd53b6869d4eca271b1ed5b57fe8">begin_object</a>, </div>
|
||
<div class="line"><a name="l07182"></a><span class="lineno"> 7182</span>  <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098a2f3e68e7f111a1e5c7728742b3ca2b7f">end_array</a>, </div>
|
||
<div class="line"><a name="l07183"></a><span class="lineno"> 7183</span>  <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098a7d5b4427866814de4d8f132721d59c87">end_object</a>, </div>
|
||
<div class="line"><a name="l07184"></a><span class="lineno"> 7184</span>  <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098acc3c64f8ae08c00de1b33f19a4d2913a">name_separator</a>, </div>
|
||
<div class="line"><a name="l07185"></a><span class="lineno"> 7185</span>  <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098a745373036100d7392ad62c617cab59af">value_separator</a>, </div>
|
||
<div class="line"><a name="l07186"></a><span class="lineno"> 7186</span>  <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098a456e19aeafa334241c7ff3f589547f9d">parse_error</a>, </div>
|
||
<div class="line"><a name="l07187"></a><span class="lineno"> 7187</span>  <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098aca11f56dd477c09e06583dbdcda0985f">end_of_input</a>, </div>
|
||
<div class="line"><a name="l07188"></a><span class="lineno"> 7188</span>  <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098ad2a8e6f6721cccec0b466301dd9495a5">literal_or_value</a> </div>
|
||
<div class="line"><a name="l07189"></a><span class="lineno"> 7189</span>  };</div>
|
||
<div class="line"><a name="l07190"></a><span class="lineno"> 7190</span>  </div>
|
||
<div class="line"><a name="l07192"></a><span class="lineno"> 7192</span>  <a class="code" href="json_8hpp.html#a5f2aaec3b681d0a72f7d6e90b70cdcd1">JSON_HEDLEY_RETURNS_NON_NULL</a></div>
|
||
<div class="line"><a name="l07193"></a><span class="lineno"> 7193</span>  <a class="code" href="json_8hpp.html#a0d17bf1a54fc45a04ced6d3aa86a96e3">JSON_HEDLEY_CONST</a></div>
|
||
<div class="line"><a name="l07194"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1lexer.html#a06f5e2129cffcc72eee84d88e126e3e3"> 7194</a></span>  <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a06f5e2129cffcc72eee84d88e126e3e3">token_type_name</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098">token_type</a> t) noexcept</div>
|
||
<div class="line"><a name="l07195"></a><span class="lineno"> 7195</span>  {</div>
|
||
<div class="line"><a name="l07196"></a><span class="lineno"> 7196</span>  <span class="keywordflow">switch</span> (t)</div>
|
||
<div class="line"><a name="l07197"></a><span class="lineno"> 7197</span>  {</div>
|
||
<div class="line"><a name="l07198"></a><span class="lineno"> 7198</span>  <span class="keywordflow">case</span> <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098a42dd1a73d072bb6bf3f494f22b15db8e">token_type::uninitialized</a>:</div>
|
||
<div class="line"><a name="l07199"></a><span class="lineno"> 7199</span>  <span class="keywordflow">return</span> <span class="stringliteral">"<uninitialized>"</span>;</div>
|
||
<div class="line"><a name="l07200"></a><span class="lineno"> 7200</span>  <span class="keywordflow">case</span> <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098a85cc1a37b0aaa52de40e72f0ed4e0c0d">token_type::literal_true</a>:</div>
|
||
<div class="line"><a name="l07201"></a><span class="lineno"> 7201</span>  <span class="keywordflow">return</span> <span class="stringliteral">"true literal"</span>;</div>
|
||
<div class="line"><a name="l07202"></a><span class="lineno"> 7202</span>  <span class="keywordflow">case</span> <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098afab1694b1b3937a079f4625fe0b6108b">token_type::literal_false</a>:</div>
|
||
<div class="line"><a name="l07203"></a><span class="lineno"> 7203</span>  <span class="keywordflow">return</span> <span class="stringliteral">"false literal"</span>;</div>
|
||
<div class="line"><a name="l07204"></a><span class="lineno"> 7204</span>  <span class="keywordflow">case</span> <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098ab7ae4c0e46d86f884677768160b26e9e">token_type::literal_null</a>:</div>
|
||
<div class="line"><a name="l07205"></a><span class="lineno"> 7205</span>  <span class="keywordflow">return</span> <span class="stringliteral">"null literal"</span>;</div>
|
||
<div class="line"><a name="l07206"></a><span class="lineno"> 7206</span>  <span class="keywordflow">case</span> <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098a2b490e8bf366b4cbe3ebd99b26ce15ce">token_type::value_string</a>:</div>
|
||
<div class="line"><a name="l07207"></a><span class="lineno"> 7207</span>  <span class="keywordflow">return</span> <span class="stringliteral">"string literal"</span>;</div>
|
||
<div class="line"><a name="l07208"></a><span class="lineno"> 7208</span>  <span class="keywordflow">case</span> <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098aaf1f040fcd2f674d2e5893d7a731078f">lexer::token_type::value_unsigned</a>:</div>
|
||
<div class="line"><a name="l07209"></a><span class="lineno"> 7209</span>  <span class="keywordflow">case</span> <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098a5064b6655d88a50ae16665cf7751c0ee">lexer::token_type::value_integer</a>:</div>
|
||
<div class="line"><a name="l07210"></a><span class="lineno"> 7210</span>  <span class="keywordflow">case</span> <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098a0d2671a6f81efb91e77f6ac3bdb11443">lexer::token_type::value_float</a>:</div>
|
||
<div class="line"><a name="l07211"></a><span class="lineno"> 7211</span>  <span class="keywordflow">return</span> <span class="stringliteral">"number literal"</span>;</div>
|
||
<div class="line"><a name="l07212"></a><span class="lineno"> 7212</span>  <span class="keywordflow">case</span> <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098a16c226b4425b68560fea322b46dabe01">token_type::begin_array</a>:</div>
|
||
<div class="line"><a name="l07213"></a><span class="lineno"> 7213</span>  <span class="keywordflow">return</span> <span class="stringliteral">"'['"</span>;</div>
|
||
<div class="line"><a name="l07214"></a><span class="lineno"> 7214</span>  <span class="keywordflow">case</span> <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098a9a9ffd53b6869d4eca271b1ed5b57fe8">token_type::begin_object</a>:</div>
|
||
<div class="line"><a name="l07215"></a><span class="lineno"> 7215</span>  <span class="keywordflow">return</span> <span class="stringliteral">"'{'"</span>;</div>
|
||
<div class="line"><a name="l07216"></a><span class="lineno"> 7216</span>  <span class="keywordflow">case</span> <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098a2f3e68e7f111a1e5c7728742b3ca2b7f">token_type::end_array</a>:</div>
|
||
<div class="line"><a name="l07217"></a><span class="lineno"> 7217</span>  <span class="keywordflow">return</span> <span class="stringliteral">"']'"</span>;</div>
|
||
<div class="line"><a name="l07218"></a><span class="lineno"> 7218</span>  <span class="keywordflow">case</span> <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098a7d5b4427866814de4d8f132721d59c87">token_type::end_object</a>:</div>
|
||
<div class="line"><a name="l07219"></a><span class="lineno"> 7219</span>  <span class="keywordflow">return</span> <span class="stringliteral">"'}'"</span>;</div>
|
||
<div class="line"><a name="l07220"></a><span class="lineno"> 7220</span>  <span class="keywordflow">case</span> <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098acc3c64f8ae08c00de1b33f19a4d2913a">token_type::name_separator</a>:</div>
|
||
<div class="line"><a name="l07221"></a><span class="lineno"> 7221</span>  <span class="keywordflow">return</span> <span class="stringliteral">"':'"</span>;</div>
|
||
<div class="line"><a name="l07222"></a><span class="lineno"> 7222</span>  <span class="keywordflow">case</span> <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098a745373036100d7392ad62c617cab59af">token_type::value_separator</a>:</div>
|
||
<div class="line"><a name="l07223"></a><span class="lineno"> 7223</span>  <span class="keywordflow">return</span> <span class="stringliteral">"','"</span>;</div>
|
||
<div class="line"><a name="l07224"></a><span class="lineno"> 7224</span>  <span class="keywordflow">case</span> <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098a456e19aeafa334241c7ff3f589547f9d">token_type::parse_error</a>:</div>
|
||
<div class="line"><a name="l07225"></a><span class="lineno"> 7225</span>  <span class="keywordflow">return</span> <span class="stringliteral">"<parse error>"</span>;</div>
|
||
<div class="line"><a name="l07226"></a><span class="lineno"> 7226</span>  <span class="keywordflow">case</span> <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098aca11f56dd477c09e06583dbdcda0985f">token_type::end_of_input</a>:</div>
|
||
<div class="line"><a name="l07227"></a><span class="lineno"> 7227</span>  <span class="keywordflow">return</span> <span class="stringliteral">"end of input"</span>;</div>
|
||
<div class="line"><a name="l07228"></a><span class="lineno"> 7228</span>  <span class="keywordflow">case</span> <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098ad2a8e6f6721cccec0b466301dd9495a5">token_type::literal_or_value</a>:</div>
|
||
<div class="line"><a name="l07229"></a><span class="lineno"> 7229</span>  <span class="keywordflow">return</span> <span class="stringliteral">"'[', '{', or a literal"</span>;</div>
|
||
<div class="line"><a name="l07230"></a><span class="lineno"> 7230</span>  <span class="comment">// LCOV_EXCL_START</span></div>
|
||
<div class="line"><a name="l07231"></a><span class="lineno"> 7231</span>  <span class="keywordflow">default</span>: <span class="comment">// catch non-enum values</span></div>
|
||
<div class="line"><a name="l07232"></a><span class="lineno"> 7232</span>  <span class="keywordflow">return</span> <span class="stringliteral">"unknown token"</span>;</div>
|
||
<div class="line"><a name="l07233"></a><span class="lineno"> 7233</span>  <span class="comment">// LCOV_EXCL_STOP</span></div>
|
||
<div class="line"><a name="l07234"></a><span class="lineno"> 7234</span>  }</div>
|
||
<div class="line"><a name="l07235"></a><span class="lineno"> 7235</span>  }</div>
|
||
<div class="line"><a name="l07236"></a><span class="lineno"> 7236</span>  </div>
|
||
<div class="line"><a name="l07237"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1lexer.html#ab6818e0fc05f4a52c65aeb967dd79919"> 7237</a></span>  <span class="keyword">explicit</span> <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#ab6818e0fc05f4a52c65aeb967dd79919">lexer</a>(<a class="code" href="namespacenlohmann_1_1detail.html#ae132f8cd5bb24c5e9b40ad0eafedf1c2">detail::input_adapter_t</a>&& adapter)</div>
|
||
<div class="line"><a name="l07238"></a><span class="lineno"> 7238</span>  : ia(<a class="code" href="namespacestd.html">std</a>::move(adapter)), decimal_point_char(get_decimal_point()) {}</div>
|
||
<div class="line"><a name="l07239"></a><span class="lineno"> 7239</span>  </div>
|
||
<div class="line"><a name="l07240"></a><span class="lineno"> 7240</span>  <span class="comment">// delete because of pointer members</span></div>
|
||
<div class="line"><a name="l07241"></a><span class="lineno"> 7241</span>  <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#ab6818e0fc05f4a52c65aeb967dd79919">lexer</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1lexer.html">lexer</a>&) = <span class="keyword">delete</span>;</div>
|
||
<div class="line"><a name="l07242"></a><span class="lineno"> 7242</span>  <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#ab6818e0fc05f4a52c65aeb967dd79919">lexer</a>(<a class="code" href="classnlohmann_1_1detail_1_1lexer.html">lexer</a>&&) = <span class="keyword">delete</span>;</div>
|
||
<div class="line"><a name="l07243"></a><span class="lineno"> 7243</span>  <a class="code" href="classnlohmann_1_1detail_1_1lexer.html">lexer</a>& <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a33e97dee7c5faf1b36aff5b74a6c8f55">operator=</a>(<a class="code" href="classnlohmann_1_1detail_1_1lexer.html">lexer</a>&) = <span class="keyword">delete</span>;</div>
|
||
<div class="line"><a name="l07244"></a><span class="lineno"> 7244</span>  <a class="code" href="classnlohmann_1_1detail_1_1lexer.html">lexer</a>& <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a33e97dee7c5faf1b36aff5b74a6c8f55">operator=</a>(<a class="code" href="classnlohmann_1_1detail_1_1lexer.html">lexer</a>&&) = <span class="keyword">delete</span>;</div>
|
||
<div class="line"><a name="l07245"></a><span class="lineno"> 7245</span>  <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a2f2ef6f5aca9a0c48fcfb1290f7b2b0d">~lexer</a>() = <span class="keywordflow">default</span>;</div>
|
||
<div class="line"><a name="l07246"></a><span class="lineno"> 7246</span>  </div>
|
||
<div class="line"><a name="l07247"></a><span class="lineno"> 7247</span>  <span class="keyword">private</span>:</div>
|
||
<div class="line"><a name="l07249"></a><span class="lineno"> 7249</span>  <span class="comment">// locales</span></div>
|
||
<div class="line"><a name="l07251"></a><span class="lineno"> 7251</span> <span class="comment"></span> </div>
|
||
<div class="line"><a name="l07253"></a><span class="lineno"> 7253</span>  <a class="code" href="json_8hpp.html#af5c84b7d1a43361bdc14cc6941078000">JSON_HEDLEY_PURE</a></div>
|
||
<div class="line"><a name="l07254"></a><span class="lineno"> 7254</span>  <span class="keyword">static</span> <span class="keywordtype">char</span> get_decimal_point() noexcept</div>
|
||
<div class="line"><a name="l07255"></a><span class="lineno"> 7255</span>  {</div>
|
||
<div class="line"><a name="l07256"></a><span class="lineno"> 7256</span>  <span class="keyword">const</span> <span class="keyword">auto</span> loc = localeconv();</div>
|
||
<div class="line"><a name="l07257"></a><span class="lineno"> 7257</span>  assert(loc != <span class="keyword">nullptr</span>);</div>
|
||
<div class="line"><a name="l07258"></a><span class="lineno"> 7258</span>  <span class="keywordflow">return</span> (loc->decimal_point == <span class="keyword">nullptr</span>) ? <span class="charliteral">'.'</span> : *(loc->decimal_point);</div>
|
||
<div class="line"><a name="l07259"></a><span class="lineno"> 7259</span>  }</div>
|
||
<div class="line"><a name="l07260"></a><span class="lineno"> 7260</span>  </div>
|
||
<div class="line"><a name="l07262"></a><span class="lineno"> 7262</span>  <span class="comment">// scan functions</span></div>
|
||
<div class="line"><a name="l07264"></a><span class="lineno"> 7264</span> <span class="comment"></span> </div>
|
||
<div class="line"><a name="l07280"></a><span class="lineno"> 7280</span>  <span class="keywordtype">int</span> get_codepoint()</div>
|
||
<div class="line"><a name="l07281"></a><span class="lineno"> 7281</span>  {</div>
|
||
<div class="line"><a name="l07282"></a><span class="lineno"> 7282</span>  <span class="comment">// this function only makes sense after reading `\u`</span></div>
|
||
<div class="line"><a name="l07283"></a><span class="lineno"> 7283</span>  assert(current == <span class="charliteral">'u'</span>);</div>
|
||
<div class="line"><a name="l07284"></a><span class="lineno"> 7284</span>  <span class="keywordtype">int</span> codepoint = 0;</div>
|
||
<div class="line"><a name="l07285"></a><span class="lineno"> 7285</span>  </div>
|
||
<div class="line"><a name="l07286"></a><span class="lineno"> 7286</span>  <span class="keyword">const</span> <span class="keyword">auto</span> factors = { 12u, 8u, 4u, 0u };</div>
|
||
<div class="line"><a name="l07287"></a><span class="lineno"> 7287</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> factor : factors)</div>
|
||
<div class="line"><a name="l07288"></a><span class="lineno"> 7288</span>  {</div>
|
||
<div class="line"><a name="l07289"></a><span class="lineno"> 7289</span>  get();</div>
|
||
<div class="line"><a name="l07290"></a><span class="lineno"> 7290</span>  </div>
|
||
<div class="line"><a name="l07291"></a><span class="lineno"> 7291</span>  <span class="keywordflow">if</span> (current >= <span class="charliteral">'0'</span> and current <= <span class="charliteral">'9'</span>)</div>
|
||
<div class="line"><a name="l07292"></a><span class="lineno"> 7292</span>  {</div>
|
||
<div class="line"><a name="l07293"></a><span class="lineno"> 7293</span>  codepoint += <span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>((<span class="keyword">static_cast<</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">></span>(current) - 0x30u) << factor);</div>
|
||
<div class="line"><a name="l07294"></a><span class="lineno"> 7294</span>  }</div>
|
||
<div class="line"><a name="l07295"></a><span class="lineno"> 7295</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (current >= <span class="charliteral">'A'</span> and current <= <span class="charliteral">'F'</span>)</div>
|
||
<div class="line"><a name="l07296"></a><span class="lineno"> 7296</span>  {</div>
|
||
<div class="line"><a name="l07297"></a><span class="lineno"> 7297</span>  codepoint += <span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>((<span class="keyword">static_cast<</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">></span>(current) - 0x37u) << factor);</div>
|
||
<div class="line"><a name="l07298"></a><span class="lineno"> 7298</span>  }</div>
|
||
<div class="line"><a name="l07299"></a><span class="lineno"> 7299</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (current >= <span class="charliteral">'a'</span> and current <= <span class="charliteral">'f'</span>)</div>
|
||
<div class="line"><a name="l07300"></a><span class="lineno"> 7300</span>  {</div>
|
||
<div class="line"><a name="l07301"></a><span class="lineno"> 7301</span>  codepoint += <span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>((<span class="keyword">static_cast<</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">></span>(current) - 0x57u) << factor);</div>
|
||
<div class="line"><a name="l07302"></a><span class="lineno"> 7302</span>  }</div>
|
||
<div class="line"><a name="l07303"></a><span class="lineno"> 7303</span>  <span class="keywordflow">else</span></div>
|
||
<div class="line"><a name="l07304"></a><span class="lineno"> 7304</span>  {</div>
|
||
<div class="line"><a name="l07305"></a><span class="lineno"> 7305</span>  <span class="keywordflow">return</span> -1;</div>
|
||
<div class="line"><a name="l07306"></a><span class="lineno"> 7306</span>  }</div>
|
||
<div class="line"><a name="l07307"></a><span class="lineno"> 7307</span>  }</div>
|
||
<div class="line"><a name="l07308"></a><span class="lineno"> 7308</span>  </div>
|
||
<div class="line"><a name="l07309"></a><span class="lineno"> 7309</span>  assert(0x0000 <= codepoint and codepoint <= 0xFFFF);</div>
|
||
<div class="line"><a name="l07310"></a><span class="lineno"> 7310</span>  <span class="keywordflow">return</span> codepoint;</div>
|
||
<div class="line"><a name="l07311"></a><span class="lineno"> 7311</span>  }</div>
|
||
<div class="line"><a name="l07312"></a><span class="lineno"> 7312</span>  </div>
|
||
<div class="line"><a name="l07328"></a><span class="lineno"> 7328</span>  <span class="keywordtype">bool</span> next_byte_in_range(std::initializer_list<int> ranges)</div>
|
||
<div class="line"><a name="l07329"></a><span class="lineno"> 7329</span>  {</div>
|
||
<div class="line"><a name="l07330"></a><span class="lineno"> 7330</span>  assert(ranges.size() == 2 or ranges.size() == 4 or ranges.size() == 6);</div>
|
||
<div class="line"><a name="l07331"></a><span class="lineno"> 7331</span>  add(current);</div>
|
||
<div class="line"><a name="l07332"></a><span class="lineno"> 7332</span>  </div>
|
||
<div class="line"><a name="l07333"></a><span class="lineno"> 7333</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span> range = ranges.begin(); range != ranges.end(); ++range)</div>
|
||
<div class="line"><a name="l07334"></a><span class="lineno"> 7334</span>  {</div>
|
||
<div class="line"><a name="l07335"></a><span class="lineno"> 7335</span>  get();</div>
|
||
<div class="line"><a name="l07336"></a><span class="lineno"> 7336</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a355f2770653ff7bdd5c74b204b5a3ad0">JSON_HEDLEY_LIKELY</a>(*range <= current and current <= *(++range)))</div>
|
||
<div class="line"><a name="l07337"></a><span class="lineno"> 7337</span>  {</div>
|
||
<div class="line"><a name="l07338"></a><span class="lineno"> 7338</span>  add(current);</div>
|
||
<div class="line"><a name="l07339"></a><span class="lineno"> 7339</span>  }</div>
|
||
<div class="line"><a name="l07340"></a><span class="lineno"> 7340</span>  <span class="keywordflow">else</span></div>
|
||
<div class="line"><a name="l07341"></a><span class="lineno"> 7341</span>  {</div>
|
||
<div class="line"><a name="l07342"></a><span class="lineno"> 7342</span>  error_message = <span class="stringliteral">"invalid string: ill-formed UTF-8 byte"</span>;</div>
|
||
<div class="line"><a name="l07343"></a><span class="lineno"> 7343</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||
<div class="line"><a name="l07344"></a><span class="lineno"> 7344</span>  }</div>
|
||
<div class="line"><a name="l07345"></a><span class="lineno"> 7345</span>  }</div>
|
||
<div class="line"><a name="l07346"></a><span class="lineno"> 7346</span>  </div>
|
||
<div class="line"><a name="l07347"></a><span class="lineno"> 7347</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
||
<div class="line"><a name="l07348"></a><span class="lineno"> 7348</span>  }</div>
|
||
<div class="line"><a name="l07349"></a><span class="lineno"> 7349</span>  </div>
|
||
<div class="line"><a name="l07365"></a><span class="lineno"> 7365</span>  <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098">token_type</a> scan_string()</div>
|
||
<div class="line"><a name="l07366"></a><span class="lineno"> 7366</span>  {</div>
|
||
<div class="line"><a name="l07367"></a><span class="lineno"> 7367</span>  <span class="comment">// reset token_buffer (ignore opening quote)</span></div>
|
||
<div class="line"><a name="l07368"></a><span class="lineno"> 7368</span>  reset();</div>
|
||
<div class="line"><a name="l07369"></a><span class="lineno"> 7369</span>  </div>
|
||
<div class="line"><a name="l07370"></a><span class="lineno"> 7370</span>  <span class="comment">// we entered the function by reading an open quote</span></div>
|
||
<div class="line"><a name="l07371"></a><span class="lineno"> 7371</span>  assert(current == <span class="charliteral">'\"'</span>);</div>
|
||
<div class="line"><a name="l07372"></a><span class="lineno"> 7372</span>  </div>
|
||
<div class="line"><a name="l07373"></a><span class="lineno"> 7373</span>  <span class="keywordflow">while</span> (<span class="keyword">true</span>)</div>
|
||
<div class="line"><a name="l07374"></a><span class="lineno"> 7374</span>  {</div>
|
||
<div class="line"><a name="l07375"></a><span class="lineno"> 7375</span>  <span class="comment">// get next character</span></div>
|
||
<div class="line"><a name="l07376"></a><span class="lineno"> 7376</span>  <span class="keywordflow">switch</span> (get())</div>
|
||
<div class="line"><a name="l07377"></a><span class="lineno"> 7377</span>  {</div>
|
||
<div class="line"><a name="l07378"></a><span class="lineno"> 7378</span>  <span class="comment">// end of file while parsing string</span></div>
|
||
<div class="line"><a name="l07379"></a><span class="lineno"> 7379</span>  <span class="keywordflow">case</span> std::char_traits<char>::eof():</div>
|
||
<div class="line"><a name="l07380"></a><span class="lineno"> 7380</span>  {</div>
|
||
<div class="line"><a name="l07381"></a><span class="lineno"> 7381</span>  error_message = <span class="stringliteral">"invalid string: missing closing quote"</span>;</div>
|
||
<div class="line"><a name="l07382"></a><span class="lineno"> 7382</span>  <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098a456e19aeafa334241c7ff3f589547f9d">token_type::parse_error</a>;</div>
|
||
<div class="line"><a name="l07383"></a><span class="lineno"> 7383</span>  }</div>
|
||
<div class="line"><a name="l07384"></a><span class="lineno"> 7384</span>  </div>
|
||
<div class="line"><a name="l07385"></a><span class="lineno"> 7385</span>  <span class="comment">// closing quote</span></div>
|
||
<div class="line"><a name="l07386"></a><span class="lineno"> 7386</span>  <span class="keywordflow">case</span> <span class="charliteral">'\"'</span>:</div>
|
||
<div class="line"><a name="l07387"></a><span class="lineno"> 7387</span>  {</div>
|
||
<div class="line"><a name="l07388"></a><span class="lineno"> 7388</span>  <span class="keywordflow">return</span> token_type::value_string;</div>
|
||
<div class="line"><a name="l07389"></a><span class="lineno"> 7389</span>  }</div>
|
||
<div class="line"><a name="l07390"></a><span class="lineno"> 7390</span>  </div>
|
||
<div class="line"><a name="l07391"></a><span class="lineno"> 7391</span>  <span class="comment">// escapes</span></div>
|
||
<div class="line"><a name="l07392"></a><span class="lineno"> 7392</span>  <span class="keywordflow">case</span> <span class="charliteral">'\\'</span>:</div>
|
||
<div class="line"><a name="l07393"></a><span class="lineno"> 7393</span>  {</div>
|
||
<div class="line"><a name="l07394"></a><span class="lineno"> 7394</span>  <span class="keywordflow">switch</span> (<a class="code" href="namespacenlohmann_1_1detail.html#acc422c11342b31368f610b6f96fcedc6">get</a>())</div>
|
||
<div class="line"><a name="l07395"></a><span class="lineno"> 7395</span>  {</div>
|
||
<div class="line"><a name="l07396"></a><span class="lineno"> 7396</span>  <span class="comment">// quotation mark</span></div>
|
||
<div class="line"><a name="l07397"></a><span class="lineno"> 7397</span>  <span class="keywordflow">case</span> <span class="charliteral">'\"'</span>:</div>
|
||
<div class="line"><a name="l07398"></a><span class="lineno"> 7398</span>  add(<span class="charliteral">'\"'</span>);</div>
|
||
<div class="line"><a name="l07399"></a><span class="lineno"> 7399</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l07400"></a><span class="lineno"> 7400</span>  <span class="comment">// reverse solidus</span></div>
|
||
<div class="line"><a name="l07401"></a><span class="lineno"> 7401</span>  <span class="keywordflow">case</span> <span class="charliteral">'\\'</span>:</div>
|
||
<div class="line"><a name="l07402"></a><span class="lineno"> 7402</span>  add(<span class="charliteral">'\\'</span>);</div>
|
||
<div class="line"><a name="l07403"></a><span class="lineno"> 7403</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l07404"></a><span class="lineno"> 7404</span>  <span class="comment">// solidus</span></div>
|
||
<div class="line"><a name="l07405"></a><span class="lineno"> 7405</span>  <span class="keywordflow">case</span> <span class="charliteral">'/'</span>:</div>
|
||
<div class="line"><a name="l07406"></a><span class="lineno"> 7406</span>  add(<span class="charliteral">'/'</span>);</div>
|
||
<div class="line"><a name="l07407"></a><span class="lineno"> 7407</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l07408"></a><span class="lineno"> 7408</span>  <span class="comment">// backspace</span></div>
|
||
<div class="line"><a name="l07409"></a><span class="lineno"> 7409</span>  <span class="keywordflow">case</span> <span class="charliteral">'b'</span>:</div>
|
||
<div class="line"><a name="l07410"></a><span class="lineno"> 7410</span>  add(<span class="charliteral">'\b'</span>);</div>
|
||
<div class="line"><a name="l07411"></a><span class="lineno"> 7411</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l07412"></a><span class="lineno"> 7412</span>  <span class="comment">// form feed</span></div>
|
||
<div class="line"><a name="l07413"></a><span class="lineno"> 7413</span>  <span class="keywordflow">case</span> <span class="charliteral">'f'</span>:</div>
|
||
<div class="line"><a name="l07414"></a><span class="lineno"> 7414</span>  add(<span class="charliteral">'\f'</span>);</div>
|
||
<div class="line"><a name="l07415"></a><span class="lineno"> 7415</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l07416"></a><span class="lineno"> 7416</span>  <span class="comment">// line feed</span></div>
|
||
<div class="line"><a name="l07417"></a><span class="lineno"> 7417</span>  <span class="keywordflow">case</span> <span class="charliteral">'n'</span>:</div>
|
||
<div class="line"><a name="l07418"></a><span class="lineno"> 7418</span>  add(<span class="charliteral">'\n'</span>);</div>
|
||
<div class="line"><a name="l07419"></a><span class="lineno"> 7419</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l07420"></a><span class="lineno"> 7420</span>  <span class="comment">// carriage return</span></div>
|
||
<div class="line"><a name="l07421"></a><span class="lineno"> 7421</span>  <span class="keywordflow">case</span> <span class="charliteral">'r'</span>:</div>
|
||
<div class="line"><a name="l07422"></a><span class="lineno"> 7422</span>  add(<span class="charliteral">'\r'</span>);</div>
|
||
<div class="line"><a name="l07423"></a><span class="lineno"> 7423</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l07424"></a><span class="lineno"> 7424</span>  <span class="comment">// tab</span></div>
|
||
<div class="line"><a name="l07425"></a><span class="lineno"> 7425</span>  <span class="keywordflow">case</span> <span class="charliteral">'t'</span>:</div>
|
||
<div class="line"><a name="l07426"></a><span class="lineno"> 7426</span>  add(<span class="charliteral">'\t'</span>);</div>
|
||
<div class="line"><a name="l07427"></a><span class="lineno"> 7427</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l07428"></a><span class="lineno"> 7428</span>  </div>
|
||
<div class="line"><a name="l07429"></a><span class="lineno"> 7429</span>  <span class="comment">// unicode escapes</span></div>
|
||
<div class="line"><a name="l07430"></a><span class="lineno"> 7430</span>  <span class="keywordflow">case</span> <span class="charliteral">'u'</span>:</div>
|
||
<div class="line"><a name="l07431"></a><span class="lineno"> 7431</span>  {</div>
|
||
<div class="line"><a name="l07432"></a><span class="lineno"> 7432</span>  <span class="keyword">const</span> <span class="keywordtype">int</span> codepoint1 = get_codepoint();</div>
|
||
<div class="line"><a name="l07433"></a><span class="lineno"> 7433</span>  <span class="keywordtype">int</span> codepoint = codepoint1; <span class="comment">// start with codepoint1</span></div>
|
||
<div class="line"><a name="l07434"></a><span class="lineno"> 7434</span>  </div>
|
||
<div class="line"><a name="l07435"></a><span class="lineno"> 7435</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(codepoint1 == -1))</div>
|
||
<div class="line"><a name="l07436"></a><span class="lineno"> 7436</span>  {</div>
|
||
<div class="line"><a name="l07437"></a><span class="lineno"> 7437</span>  error_message = <span class="stringliteral">"invalid string: '\\u' must be followed by 4 hex digits"</span>;</div>
|
||
<div class="line"><a name="l07438"></a><span class="lineno"> 7438</span>  <span class="keywordflow">return</span> token_type::parse_error;</div>
|
||
<div class="line"><a name="l07439"></a><span class="lineno"> 7439</span>  }</div>
|
||
<div class="line"><a name="l07440"></a><span class="lineno"> 7440</span>  </div>
|
||
<div class="line"><a name="l07441"></a><span class="lineno"> 7441</span>  <span class="comment">// check if code point is a high surrogate</span></div>
|
||
<div class="line"><a name="l07442"></a><span class="lineno"> 7442</span>  <span class="keywordflow">if</span> (0xD800 <= codepoint1 and codepoint1 <= 0xDBFF)</div>
|
||
<div class="line"><a name="l07443"></a><span class="lineno"> 7443</span>  {</div>
|
||
<div class="line"><a name="l07444"></a><span class="lineno"> 7444</span>  <span class="comment">// expect next \uxxxx entry</span></div>
|
||
<div class="line"><a name="l07445"></a><span class="lineno"> 7445</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a355f2770653ff7bdd5c74b204b5a3ad0">JSON_HEDLEY_LIKELY</a>(<a class="code" href="namespacenlohmann_1_1detail.html#acc422c11342b31368f610b6f96fcedc6">get</a>() == <span class="charliteral">'\\'</span> and <a class="code" href="namespacenlohmann_1_1detail.html#acc422c11342b31368f610b6f96fcedc6">get</a>() == <span class="charliteral">'u'</span>))</div>
|
||
<div class="line"><a name="l07446"></a><span class="lineno"> 7446</span>  {</div>
|
||
<div class="line"><a name="l07447"></a><span class="lineno"> 7447</span>  <span class="keyword">const</span> <span class="keywordtype">int</span> codepoint2 = get_codepoint();</div>
|
||
<div class="line"><a name="l07448"></a><span class="lineno"> 7448</span>  </div>
|
||
<div class="line"><a name="l07449"></a><span class="lineno"> 7449</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(codepoint2 == -1))</div>
|
||
<div class="line"><a name="l07450"></a><span class="lineno"> 7450</span>  {</div>
|
||
<div class="line"><a name="l07451"></a><span class="lineno"> 7451</span>  error_message = <span class="stringliteral">"invalid string: '\\u' must be followed by 4 hex digits"</span>;</div>
|
||
<div class="line"><a name="l07452"></a><span class="lineno"> 7452</span>  <span class="keywordflow">return</span> token_type::parse_error;</div>
|
||
<div class="line"><a name="l07453"></a><span class="lineno"> 7453</span>  }</div>
|
||
<div class="line"><a name="l07454"></a><span class="lineno"> 7454</span>  </div>
|
||
<div class="line"><a name="l07455"></a><span class="lineno"> 7455</span>  <span class="comment">// check if codepoint2 is a low surrogate</span></div>
|
||
<div class="line"><a name="l07456"></a><span class="lineno"> 7456</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a355f2770653ff7bdd5c74b204b5a3ad0">JSON_HEDLEY_LIKELY</a>(0xDC00 <= codepoint2 and codepoint2 <= 0xDFFF))</div>
|
||
<div class="line"><a name="l07457"></a><span class="lineno"> 7457</span>  {</div>
|
||
<div class="line"><a name="l07458"></a><span class="lineno"> 7458</span>  <span class="comment">// overwrite codepoint</span></div>
|
||
<div class="line"><a name="l07459"></a><span class="lineno"> 7459</span>  codepoint = <span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(</div>
|
||
<div class="line"><a name="l07460"></a><span class="lineno"> 7460</span>  <span class="comment">// high surrogate occupies the most significant 22 bits</span></div>
|
||
<div class="line"><a name="l07461"></a><span class="lineno"> 7461</span>  (<span class="keyword">static_cast<</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">></span>(codepoint1) << 10u)</div>
|
||
<div class="line"><a name="l07462"></a><span class="lineno"> 7462</span>  <span class="comment">// low surrogate occupies the least significant 15 bits</span></div>
|
||
<div class="line"><a name="l07463"></a><span class="lineno"> 7463</span>  + <span class="keyword">static_cast<</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">></span>(codepoint2)</div>
|
||
<div class="line"><a name="l07464"></a><span class="lineno"> 7464</span>  <span class="comment">// there is still the 0xD800, 0xDC00 and 0x10000 noise</span></div>
|
||
<div class="line"><a name="l07465"></a><span class="lineno"> 7465</span>  <span class="comment">// in the result so we have to subtract with:</span></div>
|
||
<div class="line"><a name="l07466"></a><span class="lineno"> 7466</span>  <span class="comment">// (0xD800 << 10) + DC00 - 0x10000 = 0x35FDC00</span></div>
|
||
<div class="line"><a name="l07467"></a><span class="lineno"> 7467</span>  - 0x35FDC00u);</div>
|
||
<div class="line"><a name="l07468"></a><span class="lineno"> 7468</span>  }</div>
|
||
<div class="line"><a name="l07469"></a><span class="lineno"> 7469</span>  <span class="keywordflow">else</span></div>
|
||
<div class="line"><a name="l07470"></a><span class="lineno"> 7470</span>  {</div>
|
||
<div class="line"><a name="l07471"></a><span class="lineno"> 7471</span>  error_message = <span class="stringliteral">"invalid string: surrogate U+DC00..U+DFFF must be followed by U+DC00..U+DFFF"</span>;</div>
|
||
<div class="line"><a name="l07472"></a><span class="lineno"> 7472</span>  <span class="keywordflow">return</span> token_type::parse_error;</div>
|
||
<div class="line"><a name="l07473"></a><span class="lineno"> 7473</span>  }</div>
|
||
<div class="line"><a name="l07474"></a><span class="lineno"> 7474</span>  }</div>
|
||
<div class="line"><a name="l07475"></a><span class="lineno"> 7475</span>  <span class="keywordflow">else</span></div>
|
||
<div class="line"><a name="l07476"></a><span class="lineno"> 7476</span>  {</div>
|
||
<div class="line"><a name="l07477"></a><span class="lineno"> 7477</span>  error_message = <span class="stringliteral">"invalid string: surrogate U+DC00..U+DFFF must be followed by U+DC00..U+DFFF"</span>;</div>
|
||
<div class="line"><a name="l07478"></a><span class="lineno"> 7478</span>  <span class="keywordflow">return</span> token_type::parse_error;</div>
|
||
<div class="line"><a name="l07479"></a><span class="lineno"> 7479</span>  }</div>
|
||
<div class="line"><a name="l07480"></a><span class="lineno"> 7480</span>  }</div>
|
||
<div class="line"><a name="l07481"></a><span class="lineno"> 7481</span>  <span class="keywordflow">else</span></div>
|
||
<div class="line"><a name="l07482"></a><span class="lineno"> 7482</span>  {</div>
|
||
<div class="line"><a name="l07483"></a><span class="lineno"> 7483</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(0xDC00 <= codepoint1 and codepoint1 <= 0xDFFF))</div>
|
||
<div class="line"><a name="l07484"></a><span class="lineno"> 7484</span>  {</div>
|
||
<div class="line"><a name="l07485"></a><span class="lineno"> 7485</span>  error_message = <span class="stringliteral">"invalid string: surrogate U+DC00..U+DFFF must follow U+D800..U+DBFF"</span>;</div>
|
||
<div class="line"><a name="l07486"></a><span class="lineno"> 7486</span>  <span class="keywordflow">return</span> token_type::parse_error;</div>
|
||
<div class="line"><a name="l07487"></a><span class="lineno"> 7487</span>  }</div>
|
||
<div class="line"><a name="l07488"></a><span class="lineno"> 7488</span>  }</div>
|
||
<div class="line"><a name="l07489"></a><span class="lineno"> 7489</span>  </div>
|
||
<div class="line"><a name="l07490"></a><span class="lineno"> 7490</span>  <span class="comment">// result of the above calculation yields a proper codepoint</span></div>
|
||
<div class="line"><a name="l07491"></a><span class="lineno"> 7491</span>  assert(0x00 <= codepoint and codepoint <= 0x10FFFF);</div>
|
||
<div class="line"><a name="l07492"></a><span class="lineno"> 7492</span>  </div>
|
||
<div class="line"><a name="l07493"></a><span class="lineno"> 7493</span>  <span class="comment">// translate codepoint into bytes</span></div>
|
||
<div class="line"><a name="l07494"></a><span class="lineno"> 7494</span>  <span class="keywordflow">if</span> (codepoint < 0x80)</div>
|
||
<div class="line"><a name="l07495"></a><span class="lineno"> 7495</span>  {</div>
|
||
<div class="line"><a name="l07496"></a><span class="lineno"> 7496</span>  <span class="comment">// 1-byte characters: 0xxxxxxx (ASCII)</span></div>
|
||
<div class="line"><a name="l07497"></a><span class="lineno"> 7497</span>  add(codepoint);</div>
|
||
<div class="line"><a name="l07498"></a><span class="lineno"> 7498</span>  }</div>
|
||
<div class="line"><a name="l07499"></a><span class="lineno"> 7499</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (codepoint <= 0x7FF)</div>
|
||
<div class="line"><a name="l07500"></a><span class="lineno"> 7500</span>  {</div>
|
||
<div class="line"><a name="l07501"></a><span class="lineno"> 7501</span>  <span class="comment">// 2-byte characters: 110xxxxx 10xxxxxx</span></div>
|
||
<div class="line"><a name="l07502"></a><span class="lineno"> 7502</span>  add(<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(0xC0u | (<span class="keyword">static_cast<</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">></span>(codepoint) >> 6u)));</div>
|
||
<div class="line"><a name="l07503"></a><span class="lineno"> 7503</span>  add(<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(0x80u | (<span class="keyword">static_cast<</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">></span>(codepoint) & 0x3Fu)));</div>
|
||
<div class="line"><a name="l07504"></a><span class="lineno"> 7504</span>  }</div>
|
||
<div class="line"><a name="l07505"></a><span class="lineno"> 7505</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (codepoint <= 0xFFFF)</div>
|
||
<div class="line"><a name="l07506"></a><span class="lineno"> 7506</span>  {</div>
|
||
<div class="line"><a name="l07507"></a><span class="lineno"> 7507</span>  <span class="comment">// 3-byte characters: 1110xxxx 10xxxxxx 10xxxxxx</span></div>
|
||
<div class="line"><a name="l07508"></a><span class="lineno"> 7508</span>  add(<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(0xE0u | (<span class="keyword">static_cast<</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">></span>(codepoint) >> 12u)));</div>
|
||
<div class="line"><a name="l07509"></a><span class="lineno"> 7509</span>  add(<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(0x80u | ((<span class="keyword">static_cast<</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">></span>(codepoint) >> 6u) & 0x3Fu)));</div>
|
||
<div class="line"><a name="l07510"></a><span class="lineno"> 7510</span>  add(<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(0x80u | (<span class="keyword">static_cast<</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">></span>(codepoint) & 0x3Fu)));</div>
|
||
<div class="line"><a name="l07511"></a><span class="lineno"> 7511</span>  }</div>
|
||
<div class="line"><a name="l07512"></a><span class="lineno"> 7512</span>  <span class="keywordflow">else</span></div>
|
||
<div class="line"><a name="l07513"></a><span class="lineno"> 7513</span>  {</div>
|
||
<div class="line"><a name="l07514"></a><span class="lineno"> 7514</span>  <span class="comment">// 4-byte characters: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx</span></div>
|
||
<div class="line"><a name="l07515"></a><span class="lineno"> 7515</span>  add(<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(0xF0u | (<span class="keyword">static_cast<</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">></span>(codepoint) >> 18u)));</div>
|
||
<div class="line"><a name="l07516"></a><span class="lineno"> 7516</span>  add(<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(0x80u | ((<span class="keyword">static_cast<</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">></span>(codepoint) >> 12u) & 0x3Fu)));</div>
|
||
<div class="line"><a name="l07517"></a><span class="lineno"> 7517</span>  add(<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(0x80u | ((<span class="keyword">static_cast<</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">></span>(codepoint) >> 6u) & 0x3Fu)));</div>
|
||
<div class="line"><a name="l07518"></a><span class="lineno"> 7518</span>  add(<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(0x80u | (<span class="keyword">static_cast<</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">></span>(codepoint) & 0x3Fu)));</div>
|
||
<div class="line"><a name="l07519"></a><span class="lineno"> 7519</span>  }</div>
|
||
<div class="line"><a name="l07520"></a><span class="lineno"> 7520</span>  </div>
|
||
<div class="line"><a name="l07521"></a><span class="lineno"> 7521</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l07522"></a><span class="lineno"> 7522</span>  }</div>
|
||
<div class="line"><a name="l07523"></a><span class="lineno"> 7523</span>  </div>
|
||
<div class="line"><a name="l07524"></a><span class="lineno"> 7524</span>  <span class="comment">// other characters after escape</span></div>
|
||
<div class="line"><a name="l07525"></a><span class="lineno"> 7525</span>  <span class="keywordflow">default</span>:</div>
|
||
<div class="line"><a name="l07526"></a><span class="lineno"> 7526</span>  error_message = <span class="stringliteral">"invalid string: forbidden character after backslash"</span>;</div>
|
||
<div class="line"><a name="l07527"></a><span class="lineno"> 7527</span>  <span class="keywordflow">return</span> token_type::parse_error;</div>
|
||
<div class="line"><a name="l07528"></a><span class="lineno"> 7528</span>  }</div>
|
||
<div class="line"><a name="l07529"></a><span class="lineno"> 7529</span>  </div>
|
||
<div class="line"><a name="l07530"></a><span class="lineno"> 7530</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l07531"></a><span class="lineno"> 7531</span>  }</div>
|
||
<div class="line"><a name="l07532"></a><span class="lineno"> 7532</span>  </div>
|
||
<div class="line"><a name="l07533"></a><span class="lineno"> 7533</span>  <span class="comment">// invalid control characters</span></div>
|
||
<div class="line"><a name="l07534"></a><span class="lineno"> 7534</span>  <span class="keywordflow">case</span> 0x00:</div>
|
||
<div class="line"><a name="l07535"></a><span class="lineno"> 7535</span>  {</div>
|
||
<div class="line"><a name="l07536"></a><span class="lineno"> 7536</span>  error_message = <span class="stringliteral">"invalid string: control character U+0000 (NUL) must be escaped to \\u0000"</span>;</div>
|
||
<div class="line"><a name="l07537"></a><span class="lineno"> 7537</span>  <span class="keywordflow">return</span> token_type::parse_error;</div>
|
||
<div class="line"><a name="l07538"></a><span class="lineno"> 7538</span>  }</div>
|
||
<div class="line"><a name="l07539"></a><span class="lineno"> 7539</span>  </div>
|
||
<div class="line"><a name="l07540"></a><span class="lineno"> 7540</span>  <span class="keywordflow">case</span> 0x01:</div>
|
||
<div class="line"><a name="l07541"></a><span class="lineno"> 7541</span>  {</div>
|
||
<div class="line"><a name="l07542"></a><span class="lineno"> 7542</span>  error_message = <span class="stringliteral">"invalid string: control character U+0001 (SOH) must be escaped to \\u0001"</span>;</div>
|
||
<div class="line"><a name="l07543"></a><span class="lineno"> 7543</span>  <span class="keywordflow">return</span> token_type::parse_error;</div>
|
||
<div class="line"><a name="l07544"></a><span class="lineno"> 7544</span>  }</div>
|
||
<div class="line"><a name="l07545"></a><span class="lineno"> 7545</span>  </div>
|
||
<div class="line"><a name="l07546"></a><span class="lineno"> 7546</span>  <span class="keywordflow">case</span> 0x02:</div>
|
||
<div class="line"><a name="l07547"></a><span class="lineno"> 7547</span>  {</div>
|
||
<div class="line"><a name="l07548"></a><span class="lineno"> 7548</span>  error_message = <span class="stringliteral">"invalid string: control character U+0002 (STX) must be escaped to \\u0002"</span>;</div>
|
||
<div class="line"><a name="l07549"></a><span class="lineno"> 7549</span>  <span class="keywordflow">return</span> token_type::parse_error;</div>
|
||
<div class="line"><a name="l07550"></a><span class="lineno"> 7550</span>  }</div>
|
||
<div class="line"><a name="l07551"></a><span class="lineno"> 7551</span>  </div>
|
||
<div class="line"><a name="l07552"></a><span class="lineno"> 7552</span>  <span class="keywordflow">case</span> 0x03:</div>
|
||
<div class="line"><a name="l07553"></a><span class="lineno"> 7553</span>  {</div>
|
||
<div class="line"><a name="l07554"></a><span class="lineno"> 7554</span>  error_message = <span class="stringliteral">"invalid string: control character U+0003 (ETX) must be escaped to \\u0003"</span>;</div>
|
||
<div class="line"><a name="l07555"></a><span class="lineno"> 7555</span>  <span class="keywordflow">return</span> token_type::parse_error;</div>
|
||
<div class="line"><a name="l07556"></a><span class="lineno"> 7556</span>  }</div>
|
||
<div class="line"><a name="l07557"></a><span class="lineno"> 7557</span>  </div>
|
||
<div class="line"><a name="l07558"></a><span class="lineno"> 7558</span>  <span class="keywordflow">case</span> 0x04:</div>
|
||
<div class="line"><a name="l07559"></a><span class="lineno"> 7559</span>  {</div>
|
||
<div class="line"><a name="l07560"></a><span class="lineno"> 7560</span>  error_message = <span class="stringliteral">"invalid string: control character U+0004 (EOT) must be escaped to \\u0004"</span>;</div>
|
||
<div class="line"><a name="l07561"></a><span class="lineno"> 7561</span>  <span class="keywordflow">return</span> token_type::parse_error;</div>
|
||
<div class="line"><a name="l07562"></a><span class="lineno"> 7562</span>  }</div>
|
||
<div class="line"><a name="l07563"></a><span class="lineno"> 7563</span>  </div>
|
||
<div class="line"><a name="l07564"></a><span class="lineno"> 7564</span>  <span class="keywordflow">case</span> 0x05:</div>
|
||
<div class="line"><a name="l07565"></a><span class="lineno"> 7565</span>  {</div>
|
||
<div class="line"><a name="l07566"></a><span class="lineno"> 7566</span>  error_message = <span class="stringliteral">"invalid string: control character U+0005 (ENQ) must be escaped to \\u0005"</span>;</div>
|
||
<div class="line"><a name="l07567"></a><span class="lineno"> 7567</span>  <span class="keywordflow">return</span> token_type::parse_error;</div>
|
||
<div class="line"><a name="l07568"></a><span class="lineno"> 7568</span>  }</div>
|
||
<div class="line"><a name="l07569"></a><span class="lineno"> 7569</span>  </div>
|
||
<div class="line"><a name="l07570"></a><span class="lineno"> 7570</span>  <span class="keywordflow">case</span> 0x06:</div>
|
||
<div class="line"><a name="l07571"></a><span class="lineno"> 7571</span>  {</div>
|
||
<div class="line"><a name="l07572"></a><span class="lineno"> 7572</span>  error_message = <span class="stringliteral">"invalid string: control character U+0006 (ACK) must be escaped to \\u0006"</span>;</div>
|
||
<div class="line"><a name="l07573"></a><span class="lineno"> 7573</span>  <span class="keywordflow">return</span> token_type::parse_error;</div>
|
||
<div class="line"><a name="l07574"></a><span class="lineno"> 7574</span>  }</div>
|
||
<div class="line"><a name="l07575"></a><span class="lineno"> 7575</span>  </div>
|
||
<div class="line"><a name="l07576"></a><span class="lineno"> 7576</span>  <span class="keywordflow">case</span> 0x07:</div>
|
||
<div class="line"><a name="l07577"></a><span class="lineno"> 7577</span>  {</div>
|
||
<div class="line"><a name="l07578"></a><span class="lineno"> 7578</span>  error_message = <span class="stringliteral">"invalid string: control character U+0007 (BEL) must be escaped to \\u0007"</span>;</div>
|
||
<div class="line"><a name="l07579"></a><span class="lineno"> 7579</span>  <span class="keywordflow">return</span> token_type::parse_error;</div>
|
||
<div class="line"><a name="l07580"></a><span class="lineno"> 7580</span>  }</div>
|
||
<div class="line"><a name="l07581"></a><span class="lineno"> 7581</span>  </div>
|
||
<div class="line"><a name="l07582"></a><span class="lineno"> 7582</span>  <span class="keywordflow">case</span> 0x08:</div>
|
||
<div class="line"><a name="l07583"></a><span class="lineno"> 7583</span>  {</div>
|
||
<div class="line"><a name="l07584"></a><span class="lineno"> 7584</span>  error_message = <span class="stringliteral">"invalid string: control character U+0008 (BS) must be escaped to \\u0008 or \\b"</span>;</div>
|
||
<div class="line"><a name="l07585"></a><span class="lineno"> 7585</span>  <span class="keywordflow">return</span> token_type::parse_error;</div>
|
||
<div class="line"><a name="l07586"></a><span class="lineno"> 7586</span>  }</div>
|
||
<div class="line"><a name="l07587"></a><span class="lineno"> 7587</span>  </div>
|
||
<div class="line"><a name="l07588"></a><span class="lineno"> 7588</span>  <span class="keywordflow">case</span> 0x09:</div>
|
||
<div class="line"><a name="l07589"></a><span class="lineno"> 7589</span>  {</div>
|
||
<div class="line"><a name="l07590"></a><span class="lineno"> 7590</span>  error_message = <span class="stringliteral">"invalid string: control character U+0009 (HT) must be escaped to \\u0009 or \\t"</span>;</div>
|
||
<div class="line"><a name="l07591"></a><span class="lineno"> 7591</span>  <span class="keywordflow">return</span> token_type::parse_error;</div>
|
||
<div class="line"><a name="l07592"></a><span class="lineno"> 7592</span>  }</div>
|
||
<div class="line"><a name="l07593"></a><span class="lineno"> 7593</span>  </div>
|
||
<div class="line"><a name="l07594"></a><span class="lineno"> 7594</span>  <span class="keywordflow">case</span> 0x0A:</div>
|
||
<div class="line"><a name="l07595"></a><span class="lineno"> 7595</span>  {</div>
|
||
<div class="line"><a name="l07596"></a><span class="lineno"> 7596</span>  error_message = <span class="stringliteral">"invalid string: control character U+000A (LF) must be escaped to \\u000A or \\n"</span>;</div>
|
||
<div class="line"><a name="l07597"></a><span class="lineno"> 7597</span>  <span class="keywordflow">return</span> token_type::parse_error;</div>
|
||
<div class="line"><a name="l07598"></a><span class="lineno"> 7598</span>  }</div>
|
||
<div class="line"><a name="l07599"></a><span class="lineno"> 7599</span>  </div>
|
||
<div class="line"><a name="l07600"></a><span class="lineno"> 7600</span>  <span class="keywordflow">case</span> 0x0B:</div>
|
||
<div class="line"><a name="l07601"></a><span class="lineno"> 7601</span>  {</div>
|
||
<div class="line"><a name="l07602"></a><span class="lineno"> 7602</span>  error_message = <span class="stringliteral">"invalid string: control character U+000B (VT) must be escaped to \\u000B"</span>;</div>
|
||
<div class="line"><a name="l07603"></a><span class="lineno"> 7603</span>  <span class="keywordflow">return</span> token_type::parse_error;</div>
|
||
<div class="line"><a name="l07604"></a><span class="lineno"> 7604</span>  }</div>
|
||
<div class="line"><a name="l07605"></a><span class="lineno"> 7605</span>  </div>
|
||
<div class="line"><a name="l07606"></a><span class="lineno"> 7606</span>  <span class="keywordflow">case</span> 0x0C:</div>
|
||
<div class="line"><a name="l07607"></a><span class="lineno"> 7607</span>  {</div>
|
||
<div class="line"><a name="l07608"></a><span class="lineno"> 7608</span>  error_message = <span class="stringliteral">"invalid string: control character U+000C (FF) must be escaped to \\u000C or \\f"</span>;</div>
|
||
<div class="line"><a name="l07609"></a><span class="lineno"> 7609</span>  <span class="keywordflow">return</span> token_type::parse_error;</div>
|
||
<div class="line"><a name="l07610"></a><span class="lineno"> 7610</span>  }</div>
|
||
<div class="line"><a name="l07611"></a><span class="lineno"> 7611</span>  </div>
|
||
<div class="line"><a name="l07612"></a><span class="lineno"> 7612</span>  <span class="keywordflow">case</span> 0x0D:</div>
|
||
<div class="line"><a name="l07613"></a><span class="lineno"> 7613</span>  {</div>
|
||
<div class="line"><a name="l07614"></a><span class="lineno"> 7614</span>  error_message = <span class="stringliteral">"invalid string: control character U+000D (CR) must be escaped to \\u000D or \\r"</span>;</div>
|
||
<div class="line"><a name="l07615"></a><span class="lineno"> 7615</span>  <span class="keywordflow">return</span> token_type::parse_error;</div>
|
||
<div class="line"><a name="l07616"></a><span class="lineno"> 7616</span>  }</div>
|
||
<div class="line"><a name="l07617"></a><span class="lineno"> 7617</span>  </div>
|
||
<div class="line"><a name="l07618"></a><span class="lineno"> 7618</span>  <span class="keywordflow">case</span> 0x0E:</div>
|
||
<div class="line"><a name="l07619"></a><span class="lineno"> 7619</span>  {</div>
|
||
<div class="line"><a name="l07620"></a><span class="lineno"> 7620</span>  error_message = <span class="stringliteral">"invalid string: control character U+000E (SO) must be escaped to \\u000E"</span>;</div>
|
||
<div class="line"><a name="l07621"></a><span class="lineno"> 7621</span>  <span class="keywordflow">return</span> token_type::parse_error;</div>
|
||
<div class="line"><a name="l07622"></a><span class="lineno"> 7622</span>  }</div>
|
||
<div class="line"><a name="l07623"></a><span class="lineno"> 7623</span>  </div>
|
||
<div class="line"><a name="l07624"></a><span class="lineno"> 7624</span>  <span class="keywordflow">case</span> 0x0F:</div>
|
||
<div class="line"><a name="l07625"></a><span class="lineno"> 7625</span>  {</div>
|
||
<div class="line"><a name="l07626"></a><span class="lineno"> 7626</span>  error_message = <span class="stringliteral">"invalid string: control character U+000F (SI) must be escaped to \\u000F"</span>;</div>
|
||
<div class="line"><a name="l07627"></a><span class="lineno"> 7627</span>  <span class="keywordflow">return</span> token_type::parse_error;</div>
|
||
<div class="line"><a name="l07628"></a><span class="lineno"> 7628</span>  }</div>
|
||
<div class="line"><a name="l07629"></a><span class="lineno"> 7629</span>  </div>
|
||
<div class="line"><a name="l07630"></a><span class="lineno"> 7630</span>  <span class="keywordflow">case</span> 0x10:</div>
|
||
<div class="line"><a name="l07631"></a><span class="lineno"> 7631</span>  {</div>
|
||
<div class="line"><a name="l07632"></a><span class="lineno"> 7632</span>  error_message = <span class="stringliteral">"invalid string: control character U+0010 (DLE) must be escaped to \\u0010"</span>;</div>
|
||
<div class="line"><a name="l07633"></a><span class="lineno"> 7633</span>  <span class="keywordflow">return</span> token_type::parse_error;</div>
|
||
<div class="line"><a name="l07634"></a><span class="lineno"> 7634</span>  }</div>
|
||
<div class="line"><a name="l07635"></a><span class="lineno"> 7635</span>  </div>
|
||
<div class="line"><a name="l07636"></a><span class="lineno"> 7636</span>  <span class="keywordflow">case</span> 0x11:</div>
|
||
<div class="line"><a name="l07637"></a><span class="lineno"> 7637</span>  {</div>
|
||
<div class="line"><a name="l07638"></a><span class="lineno"> 7638</span>  error_message = <span class="stringliteral">"invalid string: control character U+0011 (DC1) must be escaped to \\u0011"</span>;</div>
|
||
<div class="line"><a name="l07639"></a><span class="lineno"> 7639</span>  <span class="keywordflow">return</span> token_type::parse_error;</div>
|
||
<div class="line"><a name="l07640"></a><span class="lineno"> 7640</span>  }</div>
|
||
<div class="line"><a name="l07641"></a><span class="lineno"> 7641</span>  </div>
|
||
<div class="line"><a name="l07642"></a><span class="lineno"> 7642</span>  <span class="keywordflow">case</span> 0x12:</div>
|
||
<div class="line"><a name="l07643"></a><span class="lineno"> 7643</span>  {</div>
|
||
<div class="line"><a name="l07644"></a><span class="lineno"> 7644</span>  error_message = <span class="stringliteral">"invalid string: control character U+0012 (DC2) must be escaped to \\u0012"</span>;</div>
|
||
<div class="line"><a name="l07645"></a><span class="lineno"> 7645</span>  <span class="keywordflow">return</span> token_type::parse_error;</div>
|
||
<div class="line"><a name="l07646"></a><span class="lineno"> 7646</span>  }</div>
|
||
<div class="line"><a name="l07647"></a><span class="lineno"> 7647</span>  </div>
|
||
<div class="line"><a name="l07648"></a><span class="lineno"> 7648</span>  <span class="keywordflow">case</span> 0x13:</div>
|
||
<div class="line"><a name="l07649"></a><span class="lineno"> 7649</span>  {</div>
|
||
<div class="line"><a name="l07650"></a><span class="lineno"> 7650</span>  error_message = <span class="stringliteral">"invalid string: control character U+0013 (DC3) must be escaped to \\u0013"</span>;</div>
|
||
<div class="line"><a name="l07651"></a><span class="lineno"> 7651</span>  <span class="keywordflow">return</span> token_type::parse_error;</div>
|
||
<div class="line"><a name="l07652"></a><span class="lineno"> 7652</span>  }</div>
|
||
<div class="line"><a name="l07653"></a><span class="lineno"> 7653</span>  </div>
|
||
<div class="line"><a name="l07654"></a><span class="lineno"> 7654</span>  <span class="keywordflow">case</span> 0x14:</div>
|
||
<div class="line"><a name="l07655"></a><span class="lineno"> 7655</span>  {</div>
|
||
<div class="line"><a name="l07656"></a><span class="lineno"> 7656</span>  error_message = <span class="stringliteral">"invalid string: control character U+0014 (DC4) must be escaped to \\u0014"</span>;</div>
|
||
<div class="line"><a name="l07657"></a><span class="lineno"> 7657</span>  <span class="keywordflow">return</span> token_type::parse_error;</div>
|
||
<div class="line"><a name="l07658"></a><span class="lineno"> 7658</span>  }</div>
|
||
<div class="line"><a name="l07659"></a><span class="lineno"> 7659</span>  </div>
|
||
<div class="line"><a name="l07660"></a><span class="lineno"> 7660</span>  <span class="keywordflow">case</span> 0x15:</div>
|
||
<div class="line"><a name="l07661"></a><span class="lineno"> 7661</span>  {</div>
|
||
<div class="line"><a name="l07662"></a><span class="lineno"> 7662</span>  error_message = <span class="stringliteral">"invalid string: control character U+0015 (NAK) must be escaped to \\u0015"</span>;</div>
|
||
<div class="line"><a name="l07663"></a><span class="lineno"> 7663</span>  <span class="keywordflow">return</span> token_type::parse_error;</div>
|
||
<div class="line"><a name="l07664"></a><span class="lineno"> 7664</span>  }</div>
|
||
<div class="line"><a name="l07665"></a><span class="lineno"> 7665</span>  </div>
|
||
<div class="line"><a name="l07666"></a><span class="lineno"> 7666</span>  <span class="keywordflow">case</span> 0x16:</div>
|
||
<div class="line"><a name="l07667"></a><span class="lineno"> 7667</span>  {</div>
|
||
<div class="line"><a name="l07668"></a><span class="lineno"> 7668</span>  error_message = <span class="stringliteral">"invalid string: control character U+0016 (SYN) must be escaped to \\u0016"</span>;</div>
|
||
<div class="line"><a name="l07669"></a><span class="lineno"> 7669</span>  <span class="keywordflow">return</span> token_type::parse_error;</div>
|
||
<div class="line"><a name="l07670"></a><span class="lineno"> 7670</span>  }</div>
|
||
<div class="line"><a name="l07671"></a><span class="lineno"> 7671</span>  </div>
|
||
<div class="line"><a name="l07672"></a><span class="lineno"> 7672</span>  <span class="keywordflow">case</span> 0x17:</div>
|
||
<div class="line"><a name="l07673"></a><span class="lineno"> 7673</span>  {</div>
|
||
<div class="line"><a name="l07674"></a><span class="lineno"> 7674</span>  error_message = <span class="stringliteral">"invalid string: control character U+0017 (ETB) must be escaped to \\u0017"</span>;</div>
|
||
<div class="line"><a name="l07675"></a><span class="lineno"> 7675</span>  <span class="keywordflow">return</span> token_type::parse_error;</div>
|
||
<div class="line"><a name="l07676"></a><span class="lineno"> 7676</span>  }</div>
|
||
<div class="line"><a name="l07677"></a><span class="lineno"> 7677</span>  </div>
|
||
<div class="line"><a name="l07678"></a><span class="lineno"> 7678</span>  <span class="keywordflow">case</span> 0x18:</div>
|
||
<div class="line"><a name="l07679"></a><span class="lineno"> 7679</span>  {</div>
|
||
<div class="line"><a name="l07680"></a><span class="lineno"> 7680</span>  error_message = <span class="stringliteral">"invalid string: control character U+0018 (CAN) must be escaped to \\u0018"</span>;</div>
|
||
<div class="line"><a name="l07681"></a><span class="lineno"> 7681</span>  <span class="keywordflow">return</span> token_type::parse_error;</div>
|
||
<div class="line"><a name="l07682"></a><span class="lineno"> 7682</span>  }</div>
|
||
<div class="line"><a name="l07683"></a><span class="lineno"> 7683</span>  </div>
|
||
<div class="line"><a name="l07684"></a><span class="lineno"> 7684</span>  <span class="keywordflow">case</span> 0x19:</div>
|
||
<div class="line"><a name="l07685"></a><span class="lineno"> 7685</span>  {</div>
|
||
<div class="line"><a name="l07686"></a><span class="lineno"> 7686</span>  error_message = <span class="stringliteral">"invalid string: control character U+0019 (EM) must be escaped to \\u0019"</span>;</div>
|
||
<div class="line"><a name="l07687"></a><span class="lineno"> 7687</span>  <span class="keywordflow">return</span> token_type::parse_error;</div>
|
||
<div class="line"><a name="l07688"></a><span class="lineno"> 7688</span>  }</div>
|
||
<div class="line"><a name="l07689"></a><span class="lineno"> 7689</span>  </div>
|
||
<div class="line"><a name="l07690"></a><span class="lineno"> 7690</span>  <span class="keywordflow">case</span> 0x1A:</div>
|
||
<div class="line"><a name="l07691"></a><span class="lineno"> 7691</span>  {</div>
|
||
<div class="line"><a name="l07692"></a><span class="lineno"> 7692</span>  error_message = <span class="stringliteral">"invalid string: control character U+001A (SUB) must be escaped to \\u001A"</span>;</div>
|
||
<div class="line"><a name="l07693"></a><span class="lineno"> 7693</span>  <span class="keywordflow">return</span> token_type::parse_error;</div>
|
||
<div class="line"><a name="l07694"></a><span class="lineno"> 7694</span>  }</div>
|
||
<div class="line"><a name="l07695"></a><span class="lineno"> 7695</span>  </div>
|
||
<div class="line"><a name="l07696"></a><span class="lineno"> 7696</span>  <span class="keywordflow">case</span> 0x1B:</div>
|
||
<div class="line"><a name="l07697"></a><span class="lineno"> 7697</span>  {</div>
|
||
<div class="line"><a name="l07698"></a><span class="lineno"> 7698</span>  error_message = <span class="stringliteral">"invalid string: control character U+001B (ESC) must be escaped to \\u001B"</span>;</div>
|
||
<div class="line"><a name="l07699"></a><span class="lineno"> 7699</span>  <span class="keywordflow">return</span> token_type::parse_error;</div>
|
||
<div class="line"><a name="l07700"></a><span class="lineno"> 7700</span>  }</div>
|
||
<div class="line"><a name="l07701"></a><span class="lineno"> 7701</span>  </div>
|
||
<div class="line"><a name="l07702"></a><span class="lineno"> 7702</span>  <span class="keywordflow">case</span> 0x1C:</div>
|
||
<div class="line"><a name="l07703"></a><span class="lineno"> 7703</span>  {</div>
|
||
<div class="line"><a name="l07704"></a><span class="lineno"> 7704</span>  error_message = <span class="stringliteral">"invalid string: control character U+001C (FS) must be escaped to \\u001C"</span>;</div>
|
||
<div class="line"><a name="l07705"></a><span class="lineno"> 7705</span>  <span class="keywordflow">return</span> token_type::parse_error;</div>
|
||
<div class="line"><a name="l07706"></a><span class="lineno"> 7706</span>  }</div>
|
||
<div class="line"><a name="l07707"></a><span class="lineno"> 7707</span>  </div>
|
||
<div class="line"><a name="l07708"></a><span class="lineno"> 7708</span>  <span class="keywordflow">case</span> 0x1D:</div>
|
||
<div class="line"><a name="l07709"></a><span class="lineno"> 7709</span>  {</div>
|
||
<div class="line"><a name="l07710"></a><span class="lineno"> 7710</span>  error_message = <span class="stringliteral">"invalid string: control character U+001D (GS) must be escaped to \\u001D"</span>;</div>
|
||
<div class="line"><a name="l07711"></a><span class="lineno"> 7711</span>  <span class="keywordflow">return</span> token_type::parse_error;</div>
|
||
<div class="line"><a name="l07712"></a><span class="lineno"> 7712</span>  }</div>
|
||
<div class="line"><a name="l07713"></a><span class="lineno"> 7713</span>  </div>
|
||
<div class="line"><a name="l07714"></a><span class="lineno"> 7714</span>  <span class="keywordflow">case</span> 0x1E:</div>
|
||
<div class="line"><a name="l07715"></a><span class="lineno"> 7715</span>  {</div>
|
||
<div class="line"><a name="l07716"></a><span class="lineno"> 7716</span>  error_message = <span class="stringliteral">"invalid string: control character U+001E (RS) must be escaped to \\u001E"</span>;</div>
|
||
<div class="line"><a name="l07717"></a><span class="lineno"> 7717</span>  <span class="keywordflow">return</span> token_type::parse_error;</div>
|
||
<div class="line"><a name="l07718"></a><span class="lineno"> 7718</span>  }</div>
|
||
<div class="line"><a name="l07719"></a><span class="lineno"> 7719</span>  </div>
|
||
<div class="line"><a name="l07720"></a><span class="lineno"> 7720</span>  <span class="keywordflow">case</span> 0x1F:</div>
|
||
<div class="line"><a name="l07721"></a><span class="lineno"> 7721</span>  {</div>
|
||
<div class="line"><a name="l07722"></a><span class="lineno"> 7722</span>  error_message = <span class="stringliteral">"invalid string: control character U+001F (US) must be escaped to \\u001F"</span>;</div>
|
||
<div class="line"><a name="l07723"></a><span class="lineno"> 7723</span>  <span class="keywordflow">return</span> token_type::parse_error;</div>
|
||
<div class="line"><a name="l07724"></a><span class="lineno"> 7724</span>  }</div>
|
||
<div class="line"><a name="l07725"></a><span class="lineno"> 7725</span>  </div>
|
||
<div class="line"><a name="l07726"></a><span class="lineno"> 7726</span>  <span class="comment">// U+0020..U+007F (except U+0022 (quote) and U+005C (backspace))</span></div>
|
||
<div class="line"><a name="l07727"></a><span class="lineno"> 7727</span>  <span class="keywordflow">case</span> 0x20:</div>
|
||
<div class="line"><a name="l07728"></a><span class="lineno"> 7728</span>  <span class="keywordflow">case</span> 0x21:</div>
|
||
<div class="line"><a name="l07729"></a><span class="lineno"> 7729</span>  <span class="keywordflow">case</span> 0x23:</div>
|
||
<div class="line"><a name="l07730"></a><span class="lineno"> 7730</span>  <span class="keywordflow">case</span> 0x24:</div>
|
||
<div class="line"><a name="l07731"></a><span class="lineno"> 7731</span>  <span class="keywordflow">case</span> 0x25:</div>
|
||
<div class="line"><a name="l07732"></a><span class="lineno"> 7732</span>  <span class="keywordflow">case</span> 0x26:</div>
|
||
<div class="line"><a name="l07733"></a><span class="lineno"> 7733</span>  <span class="keywordflow">case</span> 0x27:</div>
|
||
<div class="line"><a name="l07734"></a><span class="lineno"> 7734</span>  <span class="keywordflow">case</span> 0x28:</div>
|
||
<div class="line"><a name="l07735"></a><span class="lineno"> 7735</span>  <span class="keywordflow">case</span> 0x29:</div>
|
||
<div class="line"><a name="l07736"></a><span class="lineno"> 7736</span>  <span class="keywordflow">case</span> 0x2A:</div>
|
||
<div class="line"><a name="l07737"></a><span class="lineno"> 7737</span>  <span class="keywordflow">case</span> 0x2B:</div>
|
||
<div class="line"><a name="l07738"></a><span class="lineno"> 7738</span>  <span class="keywordflow">case</span> 0x2C:</div>
|
||
<div class="line"><a name="l07739"></a><span class="lineno"> 7739</span>  <span class="keywordflow">case</span> 0x2D:</div>
|
||
<div class="line"><a name="l07740"></a><span class="lineno"> 7740</span>  <span class="keywordflow">case</span> 0x2E:</div>
|
||
<div class="line"><a name="l07741"></a><span class="lineno"> 7741</span>  <span class="keywordflow">case</span> 0x2F:</div>
|
||
<div class="line"><a name="l07742"></a><span class="lineno"> 7742</span>  <span class="keywordflow">case</span> 0x30:</div>
|
||
<div class="line"><a name="l07743"></a><span class="lineno"> 7743</span>  <span class="keywordflow">case</span> 0x31:</div>
|
||
<div class="line"><a name="l07744"></a><span class="lineno"> 7744</span>  <span class="keywordflow">case</span> 0x32:</div>
|
||
<div class="line"><a name="l07745"></a><span class="lineno"> 7745</span>  <span class="keywordflow">case</span> 0x33:</div>
|
||
<div class="line"><a name="l07746"></a><span class="lineno"> 7746</span>  <span class="keywordflow">case</span> 0x34:</div>
|
||
<div class="line"><a name="l07747"></a><span class="lineno"> 7747</span>  <span class="keywordflow">case</span> 0x35:</div>
|
||
<div class="line"><a name="l07748"></a><span class="lineno"> 7748</span>  <span class="keywordflow">case</span> 0x36:</div>
|
||
<div class="line"><a name="l07749"></a><span class="lineno"> 7749</span>  <span class="keywordflow">case</span> 0x37:</div>
|
||
<div class="line"><a name="l07750"></a><span class="lineno"> 7750</span>  <span class="keywordflow">case</span> 0x38:</div>
|
||
<div class="line"><a name="l07751"></a><span class="lineno"> 7751</span>  <span class="keywordflow">case</span> 0x39:</div>
|
||
<div class="line"><a name="l07752"></a><span class="lineno"> 7752</span>  <span class="keywordflow">case</span> 0x3A:</div>
|
||
<div class="line"><a name="l07753"></a><span class="lineno"> 7753</span>  <span class="keywordflow">case</span> 0x3B:</div>
|
||
<div class="line"><a name="l07754"></a><span class="lineno"> 7754</span>  <span class="keywordflow">case</span> 0x3C:</div>
|
||
<div class="line"><a name="l07755"></a><span class="lineno"> 7755</span>  <span class="keywordflow">case</span> 0x3D:</div>
|
||
<div class="line"><a name="l07756"></a><span class="lineno"> 7756</span>  <span class="keywordflow">case</span> 0x3E:</div>
|
||
<div class="line"><a name="l07757"></a><span class="lineno"> 7757</span>  <span class="keywordflow">case</span> 0x3F:</div>
|
||
<div class="line"><a name="l07758"></a><span class="lineno"> 7758</span>  <span class="keywordflow">case</span> 0x40:</div>
|
||
<div class="line"><a name="l07759"></a><span class="lineno"> 7759</span>  <span class="keywordflow">case</span> 0x41:</div>
|
||
<div class="line"><a name="l07760"></a><span class="lineno"> 7760</span>  <span class="keywordflow">case</span> 0x42:</div>
|
||
<div class="line"><a name="l07761"></a><span class="lineno"> 7761</span>  <span class="keywordflow">case</span> 0x43:</div>
|
||
<div class="line"><a name="l07762"></a><span class="lineno"> 7762</span>  <span class="keywordflow">case</span> 0x44:</div>
|
||
<div class="line"><a name="l07763"></a><span class="lineno"> 7763</span>  <span class="keywordflow">case</span> 0x45:</div>
|
||
<div class="line"><a name="l07764"></a><span class="lineno"> 7764</span>  <span class="keywordflow">case</span> 0x46:</div>
|
||
<div class="line"><a name="l07765"></a><span class="lineno"> 7765</span>  <span class="keywordflow">case</span> 0x47:</div>
|
||
<div class="line"><a name="l07766"></a><span class="lineno"> 7766</span>  <span class="keywordflow">case</span> 0x48:</div>
|
||
<div class="line"><a name="l07767"></a><span class="lineno"> 7767</span>  <span class="keywordflow">case</span> 0x49:</div>
|
||
<div class="line"><a name="l07768"></a><span class="lineno"> 7768</span>  <span class="keywordflow">case</span> 0x4A:</div>
|
||
<div class="line"><a name="l07769"></a><span class="lineno"> 7769</span>  <span class="keywordflow">case</span> 0x4B:</div>
|
||
<div class="line"><a name="l07770"></a><span class="lineno"> 7770</span>  <span class="keywordflow">case</span> 0x4C:</div>
|
||
<div class="line"><a name="l07771"></a><span class="lineno"> 7771</span>  <span class="keywordflow">case</span> 0x4D:</div>
|
||
<div class="line"><a name="l07772"></a><span class="lineno"> 7772</span>  <span class="keywordflow">case</span> 0x4E:</div>
|
||
<div class="line"><a name="l07773"></a><span class="lineno"> 7773</span>  <span class="keywordflow">case</span> 0x4F:</div>
|
||
<div class="line"><a name="l07774"></a><span class="lineno"> 7774</span>  <span class="keywordflow">case</span> 0x50:</div>
|
||
<div class="line"><a name="l07775"></a><span class="lineno"> 7775</span>  <span class="keywordflow">case</span> 0x51:</div>
|
||
<div class="line"><a name="l07776"></a><span class="lineno"> 7776</span>  <span class="keywordflow">case</span> 0x52:</div>
|
||
<div class="line"><a name="l07777"></a><span class="lineno"> 7777</span>  <span class="keywordflow">case</span> 0x53:</div>
|
||
<div class="line"><a name="l07778"></a><span class="lineno"> 7778</span>  <span class="keywordflow">case</span> 0x54:</div>
|
||
<div class="line"><a name="l07779"></a><span class="lineno"> 7779</span>  <span class="keywordflow">case</span> 0x55:</div>
|
||
<div class="line"><a name="l07780"></a><span class="lineno"> 7780</span>  <span class="keywordflow">case</span> 0x56:</div>
|
||
<div class="line"><a name="l07781"></a><span class="lineno"> 7781</span>  <span class="keywordflow">case</span> 0x57:</div>
|
||
<div class="line"><a name="l07782"></a><span class="lineno"> 7782</span>  <span class="keywordflow">case</span> 0x58:</div>
|
||
<div class="line"><a name="l07783"></a><span class="lineno"> 7783</span>  <span class="keywordflow">case</span> 0x59:</div>
|
||
<div class="line"><a name="l07784"></a><span class="lineno"> 7784</span>  <span class="keywordflow">case</span> 0x5A:</div>
|
||
<div class="line"><a name="l07785"></a><span class="lineno"> 7785</span>  <span class="keywordflow">case</span> 0x5B:</div>
|
||
<div class="line"><a name="l07786"></a><span class="lineno"> 7786</span>  <span class="keywordflow">case</span> 0x5D:</div>
|
||
<div class="line"><a name="l07787"></a><span class="lineno"> 7787</span>  <span class="keywordflow">case</span> 0x5E:</div>
|
||
<div class="line"><a name="l07788"></a><span class="lineno"> 7788</span>  <span class="keywordflow">case</span> 0x5F:</div>
|
||
<div class="line"><a name="l07789"></a><span class="lineno"> 7789</span>  <span class="keywordflow">case</span> 0x60:</div>
|
||
<div class="line"><a name="l07790"></a><span class="lineno"> 7790</span>  <span class="keywordflow">case</span> 0x61:</div>
|
||
<div class="line"><a name="l07791"></a><span class="lineno"> 7791</span>  <span class="keywordflow">case</span> 0x62:</div>
|
||
<div class="line"><a name="l07792"></a><span class="lineno"> 7792</span>  <span class="keywordflow">case</span> 0x63:</div>
|
||
<div class="line"><a name="l07793"></a><span class="lineno"> 7793</span>  <span class="keywordflow">case</span> 0x64:</div>
|
||
<div class="line"><a name="l07794"></a><span class="lineno"> 7794</span>  <span class="keywordflow">case</span> 0x65:</div>
|
||
<div class="line"><a name="l07795"></a><span class="lineno"> 7795</span>  <span class="keywordflow">case</span> 0x66:</div>
|
||
<div class="line"><a name="l07796"></a><span class="lineno"> 7796</span>  <span class="keywordflow">case</span> 0x67:</div>
|
||
<div class="line"><a name="l07797"></a><span class="lineno"> 7797</span>  <span class="keywordflow">case</span> 0x68:</div>
|
||
<div class="line"><a name="l07798"></a><span class="lineno"> 7798</span>  <span class="keywordflow">case</span> 0x69:</div>
|
||
<div class="line"><a name="l07799"></a><span class="lineno"> 7799</span>  <span class="keywordflow">case</span> 0x6A:</div>
|
||
<div class="line"><a name="l07800"></a><span class="lineno"> 7800</span>  <span class="keywordflow">case</span> 0x6B:</div>
|
||
<div class="line"><a name="l07801"></a><span class="lineno"> 7801</span>  <span class="keywordflow">case</span> 0x6C:</div>
|
||
<div class="line"><a name="l07802"></a><span class="lineno"> 7802</span>  <span class="keywordflow">case</span> 0x6D:</div>
|
||
<div class="line"><a name="l07803"></a><span class="lineno"> 7803</span>  <span class="keywordflow">case</span> 0x6E:</div>
|
||
<div class="line"><a name="l07804"></a><span class="lineno"> 7804</span>  <span class="keywordflow">case</span> 0x6F:</div>
|
||
<div class="line"><a name="l07805"></a><span class="lineno"> 7805</span>  <span class="keywordflow">case</span> 0x70:</div>
|
||
<div class="line"><a name="l07806"></a><span class="lineno"> 7806</span>  <span class="keywordflow">case</span> 0x71:</div>
|
||
<div class="line"><a name="l07807"></a><span class="lineno"> 7807</span>  <span class="keywordflow">case</span> 0x72:</div>
|
||
<div class="line"><a name="l07808"></a><span class="lineno"> 7808</span>  <span class="keywordflow">case</span> 0x73:</div>
|
||
<div class="line"><a name="l07809"></a><span class="lineno"> 7809</span>  <span class="keywordflow">case</span> 0x74:</div>
|
||
<div class="line"><a name="l07810"></a><span class="lineno"> 7810</span>  <span class="keywordflow">case</span> 0x75:</div>
|
||
<div class="line"><a name="l07811"></a><span class="lineno"> 7811</span>  <span class="keywordflow">case</span> 0x76:</div>
|
||
<div class="line"><a name="l07812"></a><span class="lineno"> 7812</span>  <span class="keywordflow">case</span> 0x77:</div>
|
||
<div class="line"><a name="l07813"></a><span class="lineno"> 7813</span>  <span class="keywordflow">case</span> 0x78:</div>
|
||
<div class="line"><a name="l07814"></a><span class="lineno"> 7814</span>  <span class="keywordflow">case</span> 0x79:</div>
|
||
<div class="line"><a name="l07815"></a><span class="lineno"> 7815</span>  <span class="keywordflow">case</span> 0x7A:</div>
|
||
<div class="line"><a name="l07816"></a><span class="lineno"> 7816</span>  <span class="keywordflow">case</span> 0x7B:</div>
|
||
<div class="line"><a name="l07817"></a><span class="lineno"> 7817</span>  <span class="keywordflow">case</span> 0x7C:</div>
|
||
<div class="line"><a name="l07818"></a><span class="lineno"> 7818</span>  <span class="keywordflow">case</span> 0x7D:</div>
|
||
<div class="line"><a name="l07819"></a><span class="lineno"> 7819</span>  <span class="keywordflow">case</span> 0x7E:</div>
|
||
<div class="line"><a name="l07820"></a><span class="lineno"> 7820</span>  <span class="keywordflow">case</span> 0x7F:</div>
|
||
<div class="line"><a name="l07821"></a><span class="lineno"> 7821</span>  {</div>
|
||
<div class="line"><a name="l07822"></a><span class="lineno"> 7822</span>  add(current);</div>
|
||
<div class="line"><a name="l07823"></a><span class="lineno"> 7823</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l07824"></a><span class="lineno"> 7824</span>  }</div>
|
||
<div class="line"><a name="l07825"></a><span class="lineno"> 7825</span>  </div>
|
||
<div class="line"><a name="l07826"></a><span class="lineno"> 7826</span>  <span class="comment">// U+0080..U+07FF: bytes C2..DF 80..BF</span></div>
|
||
<div class="line"><a name="l07827"></a><span class="lineno"> 7827</span>  <span class="keywordflow">case</span> 0xC2:</div>
|
||
<div class="line"><a name="l07828"></a><span class="lineno"> 7828</span>  <span class="keywordflow">case</span> 0xC3:</div>
|
||
<div class="line"><a name="l07829"></a><span class="lineno"> 7829</span>  <span class="keywordflow">case</span> 0xC4:</div>
|
||
<div class="line"><a name="l07830"></a><span class="lineno"> 7830</span>  <span class="keywordflow">case</span> 0xC5:</div>
|
||
<div class="line"><a name="l07831"></a><span class="lineno"> 7831</span>  <span class="keywordflow">case</span> 0xC6:</div>
|
||
<div class="line"><a name="l07832"></a><span class="lineno"> 7832</span>  <span class="keywordflow">case</span> 0xC7:</div>
|
||
<div class="line"><a name="l07833"></a><span class="lineno"> 7833</span>  <span class="keywordflow">case</span> 0xC8:</div>
|
||
<div class="line"><a name="l07834"></a><span class="lineno"> 7834</span>  <span class="keywordflow">case</span> 0xC9:</div>
|
||
<div class="line"><a name="l07835"></a><span class="lineno"> 7835</span>  <span class="keywordflow">case</span> 0xCA:</div>
|
||
<div class="line"><a name="l07836"></a><span class="lineno"> 7836</span>  <span class="keywordflow">case</span> 0xCB:</div>
|
||
<div class="line"><a name="l07837"></a><span class="lineno"> 7837</span>  <span class="keywordflow">case</span> 0xCC:</div>
|
||
<div class="line"><a name="l07838"></a><span class="lineno"> 7838</span>  <span class="keywordflow">case</span> 0xCD:</div>
|
||
<div class="line"><a name="l07839"></a><span class="lineno"> 7839</span>  <span class="keywordflow">case</span> 0xCE:</div>
|
||
<div class="line"><a name="l07840"></a><span class="lineno"> 7840</span>  <span class="keywordflow">case</span> 0xCF:</div>
|
||
<div class="line"><a name="l07841"></a><span class="lineno"> 7841</span>  <span class="keywordflow">case</span> 0xD0:</div>
|
||
<div class="line"><a name="l07842"></a><span class="lineno"> 7842</span>  <span class="keywordflow">case</span> 0xD1:</div>
|
||
<div class="line"><a name="l07843"></a><span class="lineno"> 7843</span>  <span class="keywordflow">case</span> 0xD2:</div>
|
||
<div class="line"><a name="l07844"></a><span class="lineno"> 7844</span>  <span class="keywordflow">case</span> 0xD3:</div>
|
||
<div class="line"><a name="l07845"></a><span class="lineno"> 7845</span>  <span class="keywordflow">case</span> 0xD4:</div>
|
||
<div class="line"><a name="l07846"></a><span class="lineno"> 7846</span>  <span class="keywordflow">case</span> 0xD5:</div>
|
||
<div class="line"><a name="l07847"></a><span class="lineno"> 7847</span>  <span class="keywordflow">case</span> 0xD6:</div>
|
||
<div class="line"><a name="l07848"></a><span class="lineno"> 7848</span>  <span class="keywordflow">case</span> 0xD7:</div>
|
||
<div class="line"><a name="l07849"></a><span class="lineno"> 7849</span>  <span class="keywordflow">case</span> 0xD8:</div>
|
||
<div class="line"><a name="l07850"></a><span class="lineno"> 7850</span>  <span class="keywordflow">case</span> 0xD9:</div>
|
||
<div class="line"><a name="l07851"></a><span class="lineno"> 7851</span>  <span class="keywordflow">case</span> 0xDA:</div>
|
||
<div class="line"><a name="l07852"></a><span class="lineno"> 7852</span>  <span class="keywordflow">case</span> 0xDB:</div>
|
||
<div class="line"><a name="l07853"></a><span class="lineno"> 7853</span>  <span class="keywordflow">case</span> 0xDC:</div>
|
||
<div class="line"><a name="l07854"></a><span class="lineno"> 7854</span>  <span class="keywordflow">case</span> 0xDD:</div>
|
||
<div class="line"><a name="l07855"></a><span class="lineno"> 7855</span>  <span class="keywordflow">case</span> 0xDE:</div>
|
||
<div class="line"><a name="l07856"></a><span class="lineno"> 7856</span>  <span class="keywordflow">case</span> 0xDF:</div>
|
||
<div class="line"><a name="l07857"></a><span class="lineno"> 7857</span>  {</div>
|
||
<div class="line"><a name="l07858"></a><span class="lineno"> 7858</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not next_byte_in_range({0x80, 0xBF})))</div>
|
||
<div class="line"><a name="l07859"></a><span class="lineno"> 7859</span>  {</div>
|
||
<div class="line"><a name="l07860"></a><span class="lineno"> 7860</span>  <span class="keywordflow">return</span> token_type::parse_error;</div>
|
||
<div class="line"><a name="l07861"></a><span class="lineno"> 7861</span>  }</div>
|
||
<div class="line"><a name="l07862"></a><span class="lineno"> 7862</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l07863"></a><span class="lineno"> 7863</span>  }</div>
|
||
<div class="line"><a name="l07864"></a><span class="lineno"> 7864</span>  </div>
|
||
<div class="line"><a name="l07865"></a><span class="lineno"> 7865</span>  <span class="comment">// U+0800..U+0FFF: bytes E0 A0..BF 80..BF</span></div>
|
||
<div class="line"><a name="l07866"></a><span class="lineno"> 7866</span>  <span class="keywordflow">case</span> 0xE0:</div>
|
||
<div class="line"><a name="l07867"></a><span class="lineno"> 7867</span>  {</div>
|
||
<div class="line"><a name="l07868"></a><span class="lineno"> 7868</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not (next_byte_in_range({0xA0, 0xBF, 0x80, 0xBF}))))</div>
|
||
<div class="line"><a name="l07869"></a><span class="lineno"> 7869</span>  {</div>
|
||
<div class="line"><a name="l07870"></a><span class="lineno"> 7870</span>  <span class="keywordflow">return</span> token_type::parse_error;</div>
|
||
<div class="line"><a name="l07871"></a><span class="lineno"> 7871</span>  }</div>
|
||
<div class="line"><a name="l07872"></a><span class="lineno"> 7872</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l07873"></a><span class="lineno"> 7873</span>  }</div>
|
||
<div class="line"><a name="l07874"></a><span class="lineno"> 7874</span>  </div>
|
||
<div class="line"><a name="l07875"></a><span class="lineno"> 7875</span>  <span class="comment">// U+1000..U+CFFF: bytes E1..EC 80..BF 80..BF</span></div>
|
||
<div class="line"><a name="l07876"></a><span class="lineno"> 7876</span>  <span class="comment">// U+E000..U+FFFF: bytes EE..EF 80..BF 80..BF</span></div>
|
||
<div class="line"><a name="l07877"></a><span class="lineno"> 7877</span>  <span class="keywordflow">case</span> 0xE1:</div>
|
||
<div class="line"><a name="l07878"></a><span class="lineno"> 7878</span>  <span class="keywordflow">case</span> 0xE2:</div>
|
||
<div class="line"><a name="l07879"></a><span class="lineno"> 7879</span>  <span class="keywordflow">case</span> 0xE3:</div>
|
||
<div class="line"><a name="l07880"></a><span class="lineno"> 7880</span>  <span class="keywordflow">case</span> 0xE4:</div>
|
||
<div class="line"><a name="l07881"></a><span class="lineno"> 7881</span>  <span class="keywordflow">case</span> 0xE5:</div>
|
||
<div class="line"><a name="l07882"></a><span class="lineno"> 7882</span>  <span class="keywordflow">case</span> 0xE6:</div>
|
||
<div class="line"><a name="l07883"></a><span class="lineno"> 7883</span>  <span class="keywordflow">case</span> 0xE7:</div>
|
||
<div class="line"><a name="l07884"></a><span class="lineno"> 7884</span>  <span class="keywordflow">case</span> 0xE8:</div>
|
||
<div class="line"><a name="l07885"></a><span class="lineno"> 7885</span>  <span class="keywordflow">case</span> 0xE9:</div>
|
||
<div class="line"><a name="l07886"></a><span class="lineno"> 7886</span>  <span class="keywordflow">case</span> 0xEA:</div>
|
||
<div class="line"><a name="l07887"></a><span class="lineno"> 7887</span>  <span class="keywordflow">case</span> 0xEB:</div>
|
||
<div class="line"><a name="l07888"></a><span class="lineno"> 7888</span>  <span class="keywordflow">case</span> 0xEC:</div>
|
||
<div class="line"><a name="l07889"></a><span class="lineno"> 7889</span>  <span class="keywordflow">case</span> 0xEE:</div>
|
||
<div class="line"><a name="l07890"></a><span class="lineno"> 7890</span>  <span class="keywordflow">case</span> 0xEF:</div>
|
||
<div class="line"><a name="l07891"></a><span class="lineno"> 7891</span>  {</div>
|
||
<div class="line"><a name="l07892"></a><span class="lineno"> 7892</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not (next_byte_in_range({0x80, 0xBF, 0x80, 0xBF}))))</div>
|
||
<div class="line"><a name="l07893"></a><span class="lineno"> 7893</span>  {</div>
|
||
<div class="line"><a name="l07894"></a><span class="lineno"> 7894</span>  <span class="keywordflow">return</span> token_type::parse_error;</div>
|
||
<div class="line"><a name="l07895"></a><span class="lineno"> 7895</span>  }</div>
|
||
<div class="line"><a name="l07896"></a><span class="lineno"> 7896</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l07897"></a><span class="lineno"> 7897</span>  }</div>
|
||
<div class="line"><a name="l07898"></a><span class="lineno"> 7898</span>  </div>
|
||
<div class="line"><a name="l07899"></a><span class="lineno"> 7899</span>  <span class="comment">// U+D000..U+D7FF: bytes ED 80..9F 80..BF</span></div>
|
||
<div class="line"><a name="l07900"></a><span class="lineno"> 7900</span>  <span class="keywordflow">case</span> 0xED:</div>
|
||
<div class="line"><a name="l07901"></a><span class="lineno"> 7901</span>  {</div>
|
||
<div class="line"><a name="l07902"></a><span class="lineno"> 7902</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not (next_byte_in_range({0x80, 0x9F, 0x80, 0xBF}))))</div>
|
||
<div class="line"><a name="l07903"></a><span class="lineno"> 7903</span>  {</div>
|
||
<div class="line"><a name="l07904"></a><span class="lineno"> 7904</span>  <span class="keywordflow">return</span> token_type::parse_error;</div>
|
||
<div class="line"><a name="l07905"></a><span class="lineno"> 7905</span>  }</div>
|
||
<div class="line"><a name="l07906"></a><span class="lineno"> 7906</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l07907"></a><span class="lineno"> 7907</span>  }</div>
|
||
<div class="line"><a name="l07908"></a><span class="lineno"> 7908</span>  </div>
|
||
<div class="line"><a name="l07909"></a><span class="lineno"> 7909</span>  <span class="comment">// U+10000..U+3FFFF F0 90..BF 80..BF 80..BF</span></div>
|
||
<div class="line"><a name="l07910"></a><span class="lineno"> 7910</span>  <span class="keywordflow">case</span> 0xF0:</div>
|
||
<div class="line"><a name="l07911"></a><span class="lineno"> 7911</span>  {</div>
|
||
<div class="line"><a name="l07912"></a><span class="lineno"> 7912</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not (next_byte_in_range({0x90, 0xBF, 0x80, 0xBF, 0x80, 0xBF}))))</div>
|
||
<div class="line"><a name="l07913"></a><span class="lineno"> 7913</span>  {</div>
|
||
<div class="line"><a name="l07914"></a><span class="lineno"> 7914</span>  <span class="keywordflow">return</span> token_type::parse_error;</div>
|
||
<div class="line"><a name="l07915"></a><span class="lineno"> 7915</span>  }</div>
|
||
<div class="line"><a name="l07916"></a><span class="lineno"> 7916</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l07917"></a><span class="lineno"> 7917</span>  }</div>
|
||
<div class="line"><a name="l07918"></a><span class="lineno"> 7918</span>  </div>
|
||
<div class="line"><a name="l07919"></a><span class="lineno"> 7919</span>  <span class="comment">// U+40000..U+FFFFF F1..F3 80..BF 80..BF 80..BF</span></div>
|
||
<div class="line"><a name="l07920"></a><span class="lineno"> 7920</span>  <span class="keywordflow">case</span> 0xF1:</div>
|
||
<div class="line"><a name="l07921"></a><span class="lineno"> 7921</span>  <span class="keywordflow">case</span> 0xF2:</div>
|
||
<div class="line"><a name="l07922"></a><span class="lineno"> 7922</span>  <span class="keywordflow">case</span> 0xF3:</div>
|
||
<div class="line"><a name="l07923"></a><span class="lineno"> 7923</span>  {</div>
|
||
<div class="line"><a name="l07924"></a><span class="lineno"> 7924</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not (next_byte_in_range({0x80, 0xBF, 0x80, 0xBF, 0x80, 0xBF}))))</div>
|
||
<div class="line"><a name="l07925"></a><span class="lineno"> 7925</span>  {</div>
|
||
<div class="line"><a name="l07926"></a><span class="lineno"> 7926</span>  <span class="keywordflow">return</span> token_type::parse_error;</div>
|
||
<div class="line"><a name="l07927"></a><span class="lineno"> 7927</span>  }</div>
|
||
<div class="line"><a name="l07928"></a><span class="lineno"> 7928</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l07929"></a><span class="lineno"> 7929</span>  }</div>
|
||
<div class="line"><a name="l07930"></a><span class="lineno"> 7930</span>  </div>
|
||
<div class="line"><a name="l07931"></a><span class="lineno"> 7931</span>  <span class="comment">// U+100000..U+10FFFF F4 80..8F 80..BF 80..BF</span></div>
|
||
<div class="line"><a name="l07932"></a><span class="lineno"> 7932</span>  <span class="keywordflow">case</span> 0xF4:</div>
|
||
<div class="line"><a name="l07933"></a><span class="lineno"> 7933</span>  {</div>
|
||
<div class="line"><a name="l07934"></a><span class="lineno"> 7934</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not (next_byte_in_range({0x80, 0x8F, 0x80, 0xBF, 0x80, 0xBF}))))</div>
|
||
<div class="line"><a name="l07935"></a><span class="lineno"> 7935</span>  {</div>
|
||
<div class="line"><a name="l07936"></a><span class="lineno"> 7936</span>  <span class="keywordflow">return</span> token_type::parse_error;</div>
|
||
<div class="line"><a name="l07937"></a><span class="lineno"> 7937</span>  }</div>
|
||
<div class="line"><a name="l07938"></a><span class="lineno"> 7938</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l07939"></a><span class="lineno"> 7939</span>  }</div>
|
||
<div class="line"><a name="l07940"></a><span class="lineno"> 7940</span>  </div>
|
||
<div class="line"><a name="l07941"></a><span class="lineno"> 7941</span>  <span class="comment">// remaining bytes (80..C1 and F5..FF) are ill-formed</span></div>
|
||
<div class="line"><a name="l07942"></a><span class="lineno"> 7942</span>  <span class="keywordflow">default</span>:</div>
|
||
<div class="line"><a name="l07943"></a><span class="lineno"> 7943</span>  {</div>
|
||
<div class="line"><a name="l07944"></a><span class="lineno"> 7944</span>  error_message = <span class="stringliteral">"invalid string: ill-formed UTF-8 byte"</span>;</div>
|
||
<div class="line"><a name="l07945"></a><span class="lineno"> 7945</span>  <span class="keywordflow">return</span> token_type::parse_error;</div>
|
||
<div class="line"><a name="l07946"></a><span class="lineno"> 7946</span>  }</div>
|
||
<div class="line"><a name="l07947"></a><span class="lineno"> 7947</span>  }</div>
|
||
<div class="line"><a name="l07948"></a><span class="lineno"> 7948</span>  }</div>
|
||
<div class="line"><a name="l07949"></a><span class="lineno"> 7949</span>  }</div>
|
||
<div class="line"><a name="l07950"></a><span class="lineno"> 7950</span>  </div>
|
||
<div class="line"><a name="l07951"></a><span class="lineno"> 7951</span>  <a class="code" href="json_8hpp.html#a5338981b5ad9027c9e54b1c5597f4344">JSON_HEDLEY_NON_NULL</a>(2)</div>
|
||
<div class="line"><a name="l07952"></a><span class="lineno"> 7952</span>  static <span class="keywordtype">void</span> strtof(<span class="keywordtype">float</span>& f, const <span class="keywordtype">char</span>* str, <span class="keywordtype">char</span>** endptr) noexcept</div>
|
||
<div class="line"><a name="l07953"></a><span class="lineno"> 7953</span>  {</div>
|
||
<div class="line"><a name="l07954"></a><span class="lineno"> 7954</span>  f = std::strtof(str, endptr);</div>
|
||
<div class="line"><a name="l07955"></a><span class="lineno"> 7955</span>  }</div>
|
||
<div class="line"><a name="l07956"></a><span class="lineno"> 7956</span>  </div>
|
||
<div class="line"><a name="l07957"></a><span class="lineno"> 7957</span>  <a class="code" href="json_8hpp.html#a5338981b5ad9027c9e54b1c5597f4344">JSON_HEDLEY_NON_NULL</a>(2)</div>
|
||
<div class="line"><a name="l07958"></a><span class="lineno"> 7958</span>  static <span class="keywordtype">void</span> strtof(<span class="keywordtype">double</span>& f, const <span class="keywordtype">char</span>* str, <span class="keywordtype">char</span>** endptr) noexcept</div>
|
||
<div class="line"><a name="l07959"></a><span class="lineno"> 7959</span>  {</div>
|
||
<div class="line"><a name="l07960"></a><span class="lineno"> 7960</span>  f = std::strtod(str, endptr);</div>
|
||
<div class="line"><a name="l07961"></a><span class="lineno"> 7961</span>  }</div>
|
||
<div class="line"><a name="l07962"></a><span class="lineno"> 7962</span>  </div>
|
||
<div class="line"><a name="l07963"></a><span class="lineno"> 7963</span>  <a class="code" href="json_8hpp.html#a5338981b5ad9027c9e54b1c5597f4344">JSON_HEDLEY_NON_NULL</a>(2)</div>
|
||
<div class="line"><a name="l07964"></a><span class="lineno"> 7964</span>  static <span class="keywordtype">void</span> strtof(<span class="keywordtype">long</span> <span class="keywordtype">double</span>& f, const <span class="keywordtype">char</span>* str, <span class="keywordtype">char</span>** endptr) noexcept</div>
|
||
<div class="line"><a name="l07965"></a><span class="lineno"> 7965</span>  {</div>
|
||
<div class="line"><a name="l07966"></a><span class="lineno"> 7966</span>  f = std::strtold(str, endptr);</div>
|
||
<div class="line"><a name="l07967"></a><span class="lineno"> 7967</span>  }</div>
|
||
<div class="line"><a name="l07968"></a><span class="lineno"> 7968</span>  </div>
|
||
<div class="line"><a name="l08009"></a><span class="lineno"> 8009</span>  token_type scan_number() <span class="comment">// lgtm [cpp/use-of-goto]</span></div>
|
||
<div class="line"><a name="l08010"></a><span class="lineno"> 8010</span>  {</div>
|
||
<div class="line"><a name="l08011"></a><span class="lineno"> 8011</span>  <span class="comment">// reset token_buffer to store the number's bytes</span></div>
|
||
<div class="line"><a name="l08012"></a><span class="lineno"> 8012</span>  reset();</div>
|
||
<div class="line"><a name="l08013"></a><span class="lineno"> 8013</span>  </div>
|
||
<div class="line"><a name="l08014"></a><span class="lineno"> 8014</span>  <span class="comment">// the type of the parsed number; initially set to unsigned; will be</span></div>
|
||
<div class="line"><a name="l08015"></a><span class="lineno"> 8015</span>  <span class="comment">// changed if minus sign, decimal point or exponent is read</span></div>
|
||
<div class="line"><a name="l08016"></a><span class="lineno"> 8016</span>  token_type number_type = token_type::value_unsigned;</div>
|
||
<div class="line"><a name="l08017"></a><span class="lineno"> 8017</span>  </div>
|
||
<div class="line"><a name="l08018"></a><span class="lineno"> 8018</span>  <span class="comment">// state (init): we just found out we need to scan a number</span></div>
|
||
<div class="line"><a name="l08019"></a><span class="lineno"> 8019</span>  <span class="keywordflow">switch</span> (current)</div>
|
||
<div class="line"><a name="l08020"></a><span class="lineno"> 8020</span>  {</div>
|
||
<div class="line"><a name="l08021"></a><span class="lineno"> 8021</span>  <span class="keywordflow">case</span> <span class="charliteral">'-'</span>:</div>
|
||
<div class="line"><a name="l08022"></a><span class="lineno"> 8022</span>  {</div>
|
||
<div class="line"><a name="l08023"></a><span class="lineno"> 8023</span>  add(current);</div>
|
||
<div class="line"><a name="l08024"></a><span class="lineno"> 8024</span>  <span class="keywordflow">goto</span> scan_number_minus;</div>
|
||
<div class="line"><a name="l08025"></a><span class="lineno"> 8025</span>  }</div>
|
||
<div class="line"><a name="l08026"></a><span class="lineno"> 8026</span>  </div>
|
||
<div class="line"><a name="l08027"></a><span class="lineno"> 8027</span>  <span class="keywordflow">case</span> <span class="charliteral">'0'</span>:</div>
|
||
<div class="line"><a name="l08028"></a><span class="lineno"> 8028</span>  {</div>
|
||
<div class="line"><a name="l08029"></a><span class="lineno"> 8029</span>  add(current);</div>
|
||
<div class="line"><a name="l08030"></a><span class="lineno"> 8030</span>  <span class="keywordflow">goto</span> scan_number_zero;</div>
|
||
<div class="line"><a name="l08031"></a><span class="lineno"> 8031</span>  }</div>
|
||
<div class="line"><a name="l08032"></a><span class="lineno"> 8032</span>  </div>
|
||
<div class="line"><a name="l08033"></a><span class="lineno"> 8033</span>  <span class="keywordflow">case</span> <span class="charliteral">'1'</span>:</div>
|
||
<div class="line"><a name="l08034"></a><span class="lineno"> 8034</span>  <span class="keywordflow">case</span> <span class="charliteral">'2'</span>:</div>
|
||
<div class="line"><a name="l08035"></a><span class="lineno"> 8035</span>  <span class="keywordflow">case</span> <span class="charliteral">'3'</span>:</div>
|
||
<div class="line"><a name="l08036"></a><span class="lineno"> 8036</span>  <span class="keywordflow">case</span> <span class="charliteral">'4'</span>:</div>
|
||
<div class="line"><a name="l08037"></a><span class="lineno"> 8037</span>  <span class="keywordflow">case</span> <span class="charliteral">'5'</span>:</div>
|
||
<div class="line"><a name="l08038"></a><span class="lineno"> 8038</span>  <span class="keywordflow">case</span> <span class="charliteral">'6'</span>:</div>
|
||
<div class="line"><a name="l08039"></a><span class="lineno"> 8039</span>  <span class="keywordflow">case</span> <span class="charliteral">'7'</span>:</div>
|
||
<div class="line"><a name="l08040"></a><span class="lineno"> 8040</span>  <span class="keywordflow">case</span> <span class="charliteral">'8'</span>:</div>
|
||
<div class="line"><a name="l08041"></a><span class="lineno"> 8041</span>  <span class="keywordflow">case</span> <span class="charliteral">'9'</span>:</div>
|
||
<div class="line"><a name="l08042"></a><span class="lineno"> 8042</span>  {</div>
|
||
<div class="line"><a name="l08043"></a><span class="lineno"> 8043</span>  add(current);</div>
|
||
<div class="line"><a name="l08044"></a><span class="lineno"> 8044</span>  <span class="keywordflow">goto</span> scan_number_any1;</div>
|
||
<div class="line"><a name="l08045"></a><span class="lineno"> 8045</span>  }</div>
|
||
<div class="line"><a name="l08046"></a><span class="lineno"> 8046</span>  </div>
|
||
<div class="line"><a name="l08047"></a><span class="lineno"> 8047</span>  <span class="comment">// all other characters are rejected outside scan_number()</span></div>
|
||
<div class="line"><a name="l08048"></a><span class="lineno"> 8048</span>  <span class="keywordflow">default</span>: <span class="comment">// LCOV_EXCL_LINE</span></div>
|
||
<div class="line"><a name="l08049"></a><span class="lineno"> 8049</span>  assert(<span class="keyword">false</span>); <span class="comment">// LCOV_EXCL_LINE</span></div>
|
||
<div class="line"><a name="l08050"></a><span class="lineno"> 8050</span>  }</div>
|
||
<div class="line"><a name="l08051"></a><span class="lineno"> 8051</span>  </div>
|
||
<div class="line"><a name="l08052"></a><span class="lineno"> 8052</span> scan_number_minus:</div>
|
||
<div class="line"><a name="l08053"></a><span class="lineno"> 8053</span>  <span class="comment">// state: we just parsed a leading minus sign</span></div>
|
||
<div class="line"><a name="l08054"></a><span class="lineno"> 8054</span>  number_type = token_type::value_integer;</div>
|
||
<div class="line"><a name="l08055"></a><span class="lineno"> 8055</span>  <span class="keywordflow">switch</span> (<a class="code" href="namespacenlohmann_1_1detail.html#acc422c11342b31368f610b6f96fcedc6">get</a>())</div>
|
||
<div class="line"><a name="l08056"></a><span class="lineno"> 8056</span>  {</div>
|
||
<div class="line"><a name="l08057"></a><span class="lineno"> 8057</span>  <span class="keywordflow">case</span> <span class="charliteral">'0'</span>:</div>
|
||
<div class="line"><a name="l08058"></a><span class="lineno"> 8058</span>  {</div>
|
||
<div class="line"><a name="l08059"></a><span class="lineno"> 8059</span>  add(current);</div>
|
||
<div class="line"><a name="l08060"></a><span class="lineno"> 8060</span>  <span class="keywordflow">goto</span> scan_number_zero;</div>
|
||
<div class="line"><a name="l08061"></a><span class="lineno"> 8061</span>  }</div>
|
||
<div class="line"><a name="l08062"></a><span class="lineno"> 8062</span>  </div>
|
||
<div class="line"><a name="l08063"></a><span class="lineno"> 8063</span>  <span class="keywordflow">case</span> <span class="charliteral">'1'</span>:</div>
|
||
<div class="line"><a name="l08064"></a><span class="lineno"> 8064</span>  <span class="keywordflow">case</span> <span class="charliteral">'2'</span>:</div>
|
||
<div class="line"><a name="l08065"></a><span class="lineno"> 8065</span>  <span class="keywordflow">case</span> <span class="charliteral">'3'</span>:</div>
|
||
<div class="line"><a name="l08066"></a><span class="lineno"> 8066</span>  <span class="keywordflow">case</span> <span class="charliteral">'4'</span>:</div>
|
||
<div class="line"><a name="l08067"></a><span class="lineno"> 8067</span>  <span class="keywordflow">case</span> <span class="charliteral">'5'</span>:</div>
|
||
<div class="line"><a name="l08068"></a><span class="lineno"> 8068</span>  <span class="keywordflow">case</span> <span class="charliteral">'6'</span>:</div>
|
||
<div class="line"><a name="l08069"></a><span class="lineno"> 8069</span>  <span class="keywordflow">case</span> <span class="charliteral">'7'</span>:</div>
|
||
<div class="line"><a name="l08070"></a><span class="lineno"> 8070</span>  <span class="keywordflow">case</span> <span class="charliteral">'8'</span>:</div>
|
||
<div class="line"><a name="l08071"></a><span class="lineno"> 8071</span>  <span class="keywordflow">case</span> <span class="charliteral">'9'</span>:</div>
|
||
<div class="line"><a name="l08072"></a><span class="lineno"> 8072</span>  {</div>
|
||
<div class="line"><a name="l08073"></a><span class="lineno"> 8073</span>  add(current);</div>
|
||
<div class="line"><a name="l08074"></a><span class="lineno"> 8074</span>  <span class="keywordflow">goto</span> scan_number_any1;</div>
|
||
<div class="line"><a name="l08075"></a><span class="lineno"> 8075</span>  }</div>
|
||
<div class="line"><a name="l08076"></a><span class="lineno"> 8076</span>  </div>
|
||
<div class="line"><a name="l08077"></a><span class="lineno"> 8077</span>  <span class="keywordflow">default</span>:</div>
|
||
<div class="line"><a name="l08078"></a><span class="lineno"> 8078</span>  {</div>
|
||
<div class="line"><a name="l08079"></a><span class="lineno"> 8079</span>  error_message = <span class="stringliteral">"invalid number; expected digit after '-'"</span>;</div>
|
||
<div class="line"><a name="l08080"></a><span class="lineno"> 8080</span>  <span class="keywordflow">return</span> token_type::parse_error;</div>
|
||
<div class="line"><a name="l08081"></a><span class="lineno"> 8081</span>  }</div>
|
||
<div class="line"><a name="l08082"></a><span class="lineno"> 8082</span>  }</div>
|
||
<div class="line"><a name="l08083"></a><span class="lineno"> 8083</span>  </div>
|
||
<div class="line"><a name="l08084"></a><span class="lineno"> 8084</span> scan_number_zero:</div>
|
||
<div class="line"><a name="l08085"></a><span class="lineno"> 8085</span>  <span class="comment">// state: we just parse a zero (maybe with a leading minus sign)</span></div>
|
||
<div class="line"><a name="l08086"></a><span class="lineno"> 8086</span>  <span class="keywordflow">switch</span> (<a class="code" href="namespacenlohmann_1_1detail.html#acc422c11342b31368f610b6f96fcedc6">get</a>())</div>
|
||
<div class="line"><a name="l08087"></a><span class="lineno"> 8087</span>  {</div>
|
||
<div class="line"><a name="l08088"></a><span class="lineno"> 8088</span>  <span class="keywordflow">case</span> <span class="charliteral">'.'</span>:</div>
|
||
<div class="line"><a name="l08089"></a><span class="lineno"> 8089</span>  {</div>
|
||
<div class="line"><a name="l08090"></a><span class="lineno"> 8090</span>  add(decimal_point_char);</div>
|
||
<div class="line"><a name="l08091"></a><span class="lineno"> 8091</span>  <span class="keywordflow">goto</span> scan_number_decimal1;</div>
|
||
<div class="line"><a name="l08092"></a><span class="lineno"> 8092</span>  }</div>
|
||
<div class="line"><a name="l08093"></a><span class="lineno"> 8093</span>  </div>
|
||
<div class="line"><a name="l08094"></a><span class="lineno"> 8094</span>  <span class="keywordflow">case</span> <span class="charliteral">'e'</span>:</div>
|
||
<div class="line"><a name="l08095"></a><span class="lineno"> 8095</span>  <span class="keywordflow">case</span> <span class="charliteral">'E'</span>:</div>
|
||
<div class="line"><a name="l08096"></a><span class="lineno"> 8096</span>  {</div>
|
||
<div class="line"><a name="l08097"></a><span class="lineno"> 8097</span>  add(current);</div>
|
||
<div class="line"><a name="l08098"></a><span class="lineno"> 8098</span>  <span class="keywordflow">goto</span> scan_number_exponent;</div>
|
||
<div class="line"><a name="l08099"></a><span class="lineno"> 8099</span>  }</div>
|
||
<div class="line"><a name="l08100"></a><span class="lineno"> 8100</span>  </div>
|
||
<div class="line"><a name="l08101"></a><span class="lineno"> 8101</span>  <span class="keywordflow">default</span>:</div>
|
||
<div class="line"><a name="l08102"></a><span class="lineno"> 8102</span>  <span class="keywordflow">goto</span> scan_number_done;</div>
|
||
<div class="line"><a name="l08103"></a><span class="lineno"> 8103</span>  }</div>
|
||
<div class="line"><a name="l08104"></a><span class="lineno"> 8104</span>  </div>
|
||
<div class="line"><a name="l08105"></a><span class="lineno"> 8105</span> scan_number_any1:</div>
|
||
<div class="line"><a name="l08106"></a><span class="lineno"> 8106</span>  <span class="comment">// state: we just parsed a number 0-9 (maybe with a leading minus sign)</span></div>
|
||
<div class="line"><a name="l08107"></a><span class="lineno"> 8107</span>  <span class="keywordflow">switch</span> (<a class="code" href="namespacenlohmann_1_1detail.html#acc422c11342b31368f610b6f96fcedc6">get</a>())</div>
|
||
<div class="line"><a name="l08108"></a><span class="lineno"> 8108</span>  {</div>
|
||
<div class="line"><a name="l08109"></a><span class="lineno"> 8109</span>  <span class="keywordflow">case</span> <span class="charliteral">'0'</span>:</div>
|
||
<div class="line"><a name="l08110"></a><span class="lineno"> 8110</span>  <span class="keywordflow">case</span> <span class="charliteral">'1'</span>:</div>
|
||
<div class="line"><a name="l08111"></a><span class="lineno"> 8111</span>  <span class="keywordflow">case</span> <span class="charliteral">'2'</span>:</div>
|
||
<div class="line"><a name="l08112"></a><span class="lineno"> 8112</span>  <span class="keywordflow">case</span> <span class="charliteral">'3'</span>:</div>
|
||
<div class="line"><a name="l08113"></a><span class="lineno"> 8113</span>  <span class="keywordflow">case</span> <span class="charliteral">'4'</span>:</div>
|
||
<div class="line"><a name="l08114"></a><span class="lineno"> 8114</span>  <span class="keywordflow">case</span> <span class="charliteral">'5'</span>:</div>
|
||
<div class="line"><a name="l08115"></a><span class="lineno"> 8115</span>  <span class="keywordflow">case</span> <span class="charliteral">'6'</span>:</div>
|
||
<div class="line"><a name="l08116"></a><span class="lineno"> 8116</span>  <span class="keywordflow">case</span> <span class="charliteral">'7'</span>:</div>
|
||
<div class="line"><a name="l08117"></a><span class="lineno"> 8117</span>  <span class="keywordflow">case</span> <span class="charliteral">'8'</span>:</div>
|
||
<div class="line"><a name="l08118"></a><span class="lineno"> 8118</span>  <span class="keywordflow">case</span> <span class="charliteral">'9'</span>:</div>
|
||
<div class="line"><a name="l08119"></a><span class="lineno"> 8119</span>  {</div>
|
||
<div class="line"><a name="l08120"></a><span class="lineno"> 8120</span>  add(current);</div>
|
||
<div class="line"><a name="l08121"></a><span class="lineno"> 8121</span>  <span class="keywordflow">goto</span> scan_number_any1;</div>
|
||
<div class="line"><a name="l08122"></a><span class="lineno"> 8122</span>  }</div>
|
||
<div class="line"><a name="l08123"></a><span class="lineno"> 8123</span>  </div>
|
||
<div class="line"><a name="l08124"></a><span class="lineno"> 8124</span>  <span class="keywordflow">case</span> <span class="charliteral">'.'</span>:</div>
|
||
<div class="line"><a name="l08125"></a><span class="lineno"> 8125</span>  {</div>
|
||
<div class="line"><a name="l08126"></a><span class="lineno"> 8126</span>  add(decimal_point_char);</div>
|
||
<div class="line"><a name="l08127"></a><span class="lineno"> 8127</span>  <span class="keywordflow">goto</span> scan_number_decimal1;</div>
|
||
<div class="line"><a name="l08128"></a><span class="lineno"> 8128</span>  }</div>
|
||
<div class="line"><a name="l08129"></a><span class="lineno"> 8129</span>  </div>
|
||
<div class="line"><a name="l08130"></a><span class="lineno"> 8130</span>  <span class="keywordflow">case</span> <span class="charliteral">'e'</span>:</div>
|
||
<div class="line"><a name="l08131"></a><span class="lineno"> 8131</span>  <span class="keywordflow">case</span> <span class="charliteral">'E'</span>:</div>
|
||
<div class="line"><a name="l08132"></a><span class="lineno"> 8132</span>  {</div>
|
||
<div class="line"><a name="l08133"></a><span class="lineno"> 8133</span>  add(current);</div>
|
||
<div class="line"><a name="l08134"></a><span class="lineno"> 8134</span>  <span class="keywordflow">goto</span> scan_number_exponent;</div>
|
||
<div class="line"><a name="l08135"></a><span class="lineno"> 8135</span>  }</div>
|
||
<div class="line"><a name="l08136"></a><span class="lineno"> 8136</span>  </div>
|
||
<div class="line"><a name="l08137"></a><span class="lineno"> 8137</span>  <span class="keywordflow">default</span>:</div>
|
||
<div class="line"><a name="l08138"></a><span class="lineno"> 8138</span>  <span class="keywordflow">goto</span> scan_number_done;</div>
|
||
<div class="line"><a name="l08139"></a><span class="lineno"> 8139</span>  }</div>
|
||
<div class="line"><a name="l08140"></a><span class="lineno"> 8140</span>  </div>
|
||
<div class="line"><a name="l08141"></a><span class="lineno"> 8141</span> scan_number_decimal1:</div>
|
||
<div class="line"><a name="l08142"></a><span class="lineno"> 8142</span>  <span class="comment">// state: we just parsed a decimal point</span></div>
|
||
<div class="line"><a name="l08143"></a><span class="lineno"> 8143</span>  number_type = token_type::value_float;</div>
|
||
<div class="line"><a name="l08144"></a><span class="lineno"> 8144</span>  <span class="keywordflow">switch</span> (<a class="code" href="namespacenlohmann_1_1detail.html#acc422c11342b31368f610b6f96fcedc6">get</a>())</div>
|
||
<div class="line"><a name="l08145"></a><span class="lineno"> 8145</span>  {</div>
|
||
<div class="line"><a name="l08146"></a><span class="lineno"> 8146</span>  <span class="keywordflow">case</span> <span class="charliteral">'0'</span>:</div>
|
||
<div class="line"><a name="l08147"></a><span class="lineno"> 8147</span>  <span class="keywordflow">case</span> <span class="charliteral">'1'</span>:</div>
|
||
<div class="line"><a name="l08148"></a><span class="lineno"> 8148</span>  <span class="keywordflow">case</span> <span class="charliteral">'2'</span>:</div>
|
||
<div class="line"><a name="l08149"></a><span class="lineno"> 8149</span>  <span class="keywordflow">case</span> <span class="charliteral">'3'</span>:</div>
|
||
<div class="line"><a name="l08150"></a><span class="lineno"> 8150</span>  <span class="keywordflow">case</span> <span class="charliteral">'4'</span>:</div>
|
||
<div class="line"><a name="l08151"></a><span class="lineno"> 8151</span>  <span class="keywordflow">case</span> <span class="charliteral">'5'</span>:</div>
|
||
<div class="line"><a name="l08152"></a><span class="lineno"> 8152</span>  <span class="keywordflow">case</span> <span class="charliteral">'6'</span>:</div>
|
||
<div class="line"><a name="l08153"></a><span class="lineno"> 8153</span>  <span class="keywordflow">case</span> <span class="charliteral">'7'</span>:</div>
|
||
<div class="line"><a name="l08154"></a><span class="lineno"> 8154</span>  <span class="keywordflow">case</span> <span class="charliteral">'8'</span>:</div>
|
||
<div class="line"><a name="l08155"></a><span class="lineno"> 8155</span>  <span class="keywordflow">case</span> <span class="charliteral">'9'</span>:</div>
|
||
<div class="line"><a name="l08156"></a><span class="lineno"> 8156</span>  {</div>
|
||
<div class="line"><a name="l08157"></a><span class="lineno"> 8157</span>  add(current);</div>
|
||
<div class="line"><a name="l08158"></a><span class="lineno"> 8158</span>  <span class="keywordflow">goto</span> scan_number_decimal2;</div>
|
||
<div class="line"><a name="l08159"></a><span class="lineno"> 8159</span>  }</div>
|
||
<div class="line"><a name="l08160"></a><span class="lineno"> 8160</span>  </div>
|
||
<div class="line"><a name="l08161"></a><span class="lineno"> 8161</span>  <span class="keywordflow">default</span>:</div>
|
||
<div class="line"><a name="l08162"></a><span class="lineno"> 8162</span>  {</div>
|
||
<div class="line"><a name="l08163"></a><span class="lineno"> 8163</span>  error_message = <span class="stringliteral">"invalid number; expected digit after '.'"</span>;</div>
|
||
<div class="line"><a name="l08164"></a><span class="lineno"> 8164</span>  <span class="keywordflow">return</span> token_type::parse_error;</div>
|
||
<div class="line"><a name="l08165"></a><span class="lineno"> 8165</span>  }</div>
|
||
<div class="line"><a name="l08166"></a><span class="lineno"> 8166</span>  }</div>
|
||
<div class="line"><a name="l08167"></a><span class="lineno"> 8167</span>  </div>
|
||
<div class="line"><a name="l08168"></a><span class="lineno"> 8168</span> scan_number_decimal2:</div>
|
||
<div class="line"><a name="l08169"></a><span class="lineno"> 8169</span>  <span class="comment">// we just parsed at least one number after a decimal point</span></div>
|
||
<div class="line"><a name="l08170"></a><span class="lineno"> 8170</span>  <span class="keywordflow">switch</span> (<a class="code" href="namespacenlohmann_1_1detail.html#acc422c11342b31368f610b6f96fcedc6">get</a>())</div>
|
||
<div class="line"><a name="l08171"></a><span class="lineno"> 8171</span>  {</div>
|
||
<div class="line"><a name="l08172"></a><span class="lineno"> 8172</span>  <span class="keywordflow">case</span> <span class="charliteral">'0'</span>:</div>
|
||
<div class="line"><a name="l08173"></a><span class="lineno"> 8173</span>  <span class="keywordflow">case</span> <span class="charliteral">'1'</span>:</div>
|
||
<div class="line"><a name="l08174"></a><span class="lineno"> 8174</span>  <span class="keywordflow">case</span> <span class="charliteral">'2'</span>:</div>
|
||
<div class="line"><a name="l08175"></a><span class="lineno"> 8175</span>  <span class="keywordflow">case</span> <span class="charliteral">'3'</span>:</div>
|
||
<div class="line"><a name="l08176"></a><span class="lineno"> 8176</span>  <span class="keywordflow">case</span> <span class="charliteral">'4'</span>:</div>
|
||
<div class="line"><a name="l08177"></a><span class="lineno"> 8177</span>  <span class="keywordflow">case</span> <span class="charliteral">'5'</span>:</div>
|
||
<div class="line"><a name="l08178"></a><span class="lineno"> 8178</span>  <span class="keywordflow">case</span> <span class="charliteral">'6'</span>:</div>
|
||
<div class="line"><a name="l08179"></a><span class="lineno"> 8179</span>  <span class="keywordflow">case</span> <span class="charliteral">'7'</span>:</div>
|
||
<div class="line"><a name="l08180"></a><span class="lineno"> 8180</span>  <span class="keywordflow">case</span> <span class="charliteral">'8'</span>:</div>
|
||
<div class="line"><a name="l08181"></a><span class="lineno"> 8181</span>  <span class="keywordflow">case</span> <span class="charliteral">'9'</span>:</div>
|
||
<div class="line"><a name="l08182"></a><span class="lineno"> 8182</span>  {</div>
|
||
<div class="line"><a name="l08183"></a><span class="lineno"> 8183</span>  add(current);</div>
|
||
<div class="line"><a name="l08184"></a><span class="lineno"> 8184</span>  <span class="keywordflow">goto</span> scan_number_decimal2;</div>
|
||
<div class="line"><a name="l08185"></a><span class="lineno"> 8185</span>  }</div>
|
||
<div class="line"><a name="l08186"></a><span class="lineno"> 8186</span>  </div>
|
||
<div class="line"><a name="l08187"></a><span class="lineno"> 8187</span>  <span class="keywordflow">case</span> <span class="charliteral">'e'</span>:</div>
|
||
<div class="line"><a name="l08188"></a><span class="lineno"> 8188</span>  <span class="keywordflow">case</span> <span class="charliteral">'E'</span>:</div>
|
||
<div class="line"><a name="l08189"></a><span class="lineno"> 8189</span>  {</div>
|
||
<div class="line"><a name="l08190"></a><span class="lineno"> 8190</span>  add(current);</div>
|
||
<div class="line"><a name="l08191"></a><span class="lineno"> 8191</span>  <span class="keywordflow">goto</span> scan_number_exponent;</div>
|
||
<div class="line"><a name="l08192"></a><span class="lineno"> 8192</span>  }</div>
|
||
<div class="line"><a name="l08193"></a><span class="lineno"> 8193</span>  </div>
|
||
<div class="line"><a name="l08194"></a><span class="lineno"> 8194</span>  <span class="keywordflow">default</span>:</div>
|
||
<div class="line"><a name="l08195"></a><span class="lineno"> 8195</span>  <span class="keywordflow">goto</span> scan_number_done;</div>
|
||
<div class="line"><a name="l08196"></a><span class="lineno"> 8196</span>  }</div>
|
||
<div class="line"><a name="l08197"></a><span class="lineno"> 8197</span>  </div>
|
||
<div class="line"><a name="l08198"></a><span class="lineno"> 8198</span> scan_number_exponent:</div>
|
||
<div class="line"><a name="l08199"></a><span class="lineno"> 8199</span>  <span class="comment">// we just parsed an exponent</span></div>
|
||
<div class="line"><a name="l08200"></a><span class="lineno"> 8200</span>  number_type = token_type::value_float;</div>
|
||
<div class="line"><a name="l08201"></a><span class="lineno"> 8201</span>  <span class="keywordflow">switch</span> (<a class="code" href="namespacenlohmann_1_1detail.html#acc422c11342b31368f610b6f96fcedc6">get</a>())</div>
|
||
<div class="line"><a name="l08202"></a><span class="lineno"> 8202</span>  {</div>
|
||
<div class="line"><a name="l08203"></a><span class="lineno"> 8203</span>  <span class="keywordflow">case</span> <span class="charliteral">'+'</span>:</div>
|
||
<div class="line"><a name="l08204"></a><span class="lineno"> 8204</span>  <span class="keywordflow">case</span> <span class="charliteral">'-'</span>:</div>
|
||
<div class="line"><a name="l08205"></a><span class="lineno"> 8205</span>  {</div>
|
||
<div class="line"><a name="l08206"></a><span class="lineno"> 8206</span>  add(current);</div>
|
||
<div class="line"><a name="l08207"></a><span class="lineno"> 8207</span>  <span class="keywordflow">goto</span> scan_number_sign;</div>
|
||
<div class="line"><a name="l08208"></a><span class="lineno"> 8208</span>  }</div>
|
||
<div class="line"><a name="l08209"></a><span class="lineno"> 8209</span>  </div>
|
||
<div class="line"><a name="l08210"></a><span class="lineno"> 8210</span>  <span class="keywordflow">case</span> <span class="charliteral">'0'</span>:</div>
|
||
<div class="line"><a name="l08211"></a><span class="lineno"> 8211</span>  <span class="keywordflow">case</span> <span class="charliteral">'1'</span>:</div>
|
||
<div class="line"><a name="l08212"></a><span class="lineno"> 8212</span>  <span class="keywordflow">case</span> <span class="charliteral">'2'</span>:</div>
|
||
<div class="line"><a name="l08213"></a><span class="lineno"> 8213</span>  <span class="keywordflow">case</span> <span class="charliteral">'3'</span>:</div>
|
||
<div class="line"><a name="l08214"></a><span class="lineno"> 8214</span>  <span class="keywordflow">case</span> <span class="charliteral">'4'</span>:</div>
|
||
<div class="line"><a name="l08215"></a><span class="lineno"> 8215</span>  <span class="keywordflow">case</span> <span class="charliteral">'5'</span>:</div>
|
||
<div class="line"><a name="l08216"></a><span class="lineno"> 8216</span>  <span class="keywordflow">case</span> <span class="charliteral">'6'</span>:</div>
|
||
<div class="line"><a name="l08217"></a><span class="lineno"> 8217</span>  <span class="keywordflow">case</span> <span class="charliteral">'7'</span>:</div>
|
||
<div class="line"><a name="l08218"></a><span class="lineno"> 8218</span>  <span class="keywordflow">case</span> <span class="charliteral">'8'</span>:</div>
|
||
<div class="line"><a name="l08219"></a><span class="lineno"> 8219</span>  <span class="keywordflow">case</span> <span class="charliteral">'9'</span>:</div>
|
||
<div class="line"><a name="l08220"></a><span class="lineno"> 8220</span>  {</div>
|
||
<div class="line"><a name="l08221"></a><span class="lineno"> 8221</span>  add(current);</div>
|
||
<div class="line"><a name="l08222"></a><span class="lineno"> 8222</span>  <span class="keywordflow">goto</span> scan_number_any2;</div>
|
||
<div class="line"><a name="l08223"></a><span class="lineno"> 8223</span>  }</div>
|
||
<div class="line"><a name="l08224"></a><span class="lineno"> 8224</span>  </div>
|
||
<div class="line"><a name="l08225"></a><span class="lineno"> 8225</span>  <span class="keywordflow">default</span>:</div>
|
||
<div class="line"><a name="l08226"></a><span class="lineno"> 8226</span>  {</div>
|
||
<div class="line"><a name="l08227"></a><span class="lineno"> 8227</span>  error_message =</div>
|
||
<div class="line"><a name="l08228"></a><span class="lineno"> 8228</span>  <span class="stringliteral">"invalid number; expected '+', '-', or digit after exponent"</span>;</div>
|
||
<div class="line"><a name="l08229"></a><span class="lineno"> 8229</span>  <span class="keywordflow">return</span> token_type::parse_error;</div>
|
||
<div class="line"><a name="l08230"></a><span class="lineno"> 8230</span>  }</div>
|
||
<div class="line"><a name="l08231"></a><span class="lineno"> 8231</span>  }</div>
|
||
<div class="line"><a name="l08232"></a><span class="lineno"> 8232</span>  </div>
|
||
<div class="line"><a name="l08233"></a><span class="lineno"> 8233</span> scan_number_sign:</div>
|
||
<div class="line"><a name="l08234"></a><span class="lineno"> 8234</span>  <span class="comment">// we just parsed an exponent sign</span></div>
|
||
<div class="line"><a name="l08235"></a><span class="lineno"> 8235</span>  <span class="keywordflow">switch</span> (<a class="code" href="namespacenlohmann_1_1detail.html#acc422c11342b31368f610b6f96fcedc6">get</a>())</div>
|
||
<div class="line"><a name="l08236"></a><span class="lineno"> 8236</span>  {</div>
|
||
<div class="line"><a name="l08237"></a><span class="lineno"> 8237</span>  <span class="keywordflow">case</span> <span class="charliteral">'0'</span>:</div>
|
||
<div class="line"><a name="l08238"></a><span class="lineno"> 8238</span>  <span class="keywordflow">case</span> <span class="charliteral">'1'</span>:</div>
|
||
<div class="line"><a name="l08239"></a><span class="lineno"> 8239</span>  <span class="keywordflow">case</span> <span class="charliteral">'2'</span>:</div>
|
||
<div class="line"><a name="l08240"></a><span class="lineno"> 8240</span>  <span class="keywordflow">case</span> <span class="charliteral">'3'</span>:</div>
|
||
<div class="line"><a name="l08241"></a><span class="lineno"> 8241</span>  <span class="keywordflow">case</span> <span class="charliteral">'4'</span>:</div>
|
||
<div class="line"><a name="l08242"></a><span class="lineno"> 8242</span>  <span class="keywordflow">case</span> <span class="charliteral">'5'</span>:</div>
|
||
<div class="line"><a name="l08243"></a><span class="lineno"> 8243</span>  <span class="keywordflow">case</span> <span class="charliteral">'6'</span>:</div>
|
||
<div class="line"><a name="l08244"></a><span class="lineno"> 8244</span>  <span class="keywordflow">case</span> <span class="charliteral">'7'</span>:</div>
|
||
<div class="line"><a name="l08245"></a><span class="lineno"> 8245</span>  <span class="keywordflow">case</span> <span class="charliteral">'8'</span>:</div>
|
||
<div class="line"><a name="l08246"></a><span class="lineno"> 8246</span>  <span class="keywordflow">case</span> <span class="charliteral">'9'</span>:</div>
|
||
<div class="line"><a name="l08247"></a><span class="lineno"> 8247</span>  {</div>
|
||
<div class="line"><a name="l08248"></a><span class="lineno"> 8248</span>  add(current);</div>
|
||
<div class="line"><a name="l08249"></a><span class="lineno"> 8249</span>  <span class="keywordflow">goto</span> scan_number_any2;</div>
|
||
<div class="line"><a name="l08250"></a><span class="lineno"> 8250</span>  }</div>
|
||
<div class="line"><a name="l08251"></a><span class="lineno"> 8251</span>  </div>
|
||
<div class="line"><a name="l08252"></a><span class="lineno"> 8252</span>  <span class="keywordflow">default</span>:</div>
|
||
<div class="line"><a name="l08253"></a><span class="lineno"> 8253</span>  {</div>
|
||
<div class="line"><a name="l08254"></a><span class="lineno"> 8254</span>  error_message = <span class="stringliteral">"invalid number; expected digit after exponent sign"</span>;</div>
|
||
<div class="line"><a name="l08255"></a><span class="lineno"> 8255</span>  <span class="keywordflow">return</span> token_type::parse_error;</div>
|
||
<div class="line"><a name="l08256"></a><span class="lineno"> 8256</span>  }</div>
|
||
<div class="line"><a name="l08257"></a><span class="lineno"> 8257</span>  }</div>
|
||
<div class="line"><a name="l08258"></a><span class="lineno"> 8258</span>  </div>
|
||
<div class="line"><a name="l08259"></a><span class="lineno"> 8259</span> scan_number_any2:</div>
|
||
<div class="line"><a name="l08260"></a><span class="lineno"> 8260</span>  <span class="comment">// we just parsed a number after the exponent or exponent sign</span></div>
|
||
<div class="line"><a name="l08261"></a><span class="lineno"> 8261</span>  <span class="keywordflow">switch</span> (<a class="code" href="namespacenlohmann_1_1detail.html#acc422c11342b31368f610b6f96fcedc6">get</a>())</div>
|
||
<div class="line"><a name="l08262"></a><span class="lineno"> 8262</span>  {</div>
|
||
<div class="line"><a name="l08263"></a><span class="lineno"> 8263</span>  <span class="keywordflow">case</span> <span class="charliteral">'0'</span>:</div>
|
||
<div class="line"><a name="l08264"></a><span class="lineno"> 8264</span>  <span class="keywordflow">case</span> <span class="charliteral">'1'</span>:</div>
|
||
<div class="line"><a name="l08265"></a><span class="lineno"> 8265</span>  <span class="keywordflow">case</span> <span class="charliteral">'2'</span>:</div>
|
||
<div class="line"><a name="l08266"></a><span class="lineno"> 8266</span>  <span class="keywordflow">case</span> <span class="charliteral">'3'</span>:</div>
|
||
<div class="line"><a name="l08267"></a><span class="lineno"> 8267</span>  <span class="keywordflow">case</span> <span class="charliteral">'4'</span>:</div>
|
||
<div class="line"><a name="l08268"></a><span class="lineno"> 8268</span>  <span class="keywordflow">case</span> <span class="charliteral">'5'</span>:</div>
|
||
<div class="line"><a name="l08269"></a><span class="lineno"> 8269</span>  <span class="keywordflow">case</span> <span class="charliteral">'6'</span>:</div>
|
||
<div class="line"><a name="l08270"></a><span class="lineno"> 8270</span>  <span class="keywordflow">case</span> <span class="charliteral">'7'</span>:</div>
|
||
<div class="line"><a name="l08271"></a><span class="lineno"> 8271</span>  <span class="keywordflow">case</span> <span class="charliteral">'8'</span>:</div>
|
||
<div class="line"><a name="l08272"></a><span class="lineno"> 8272</span>  <span class="keywordflow">case</span> <span class="charliteral">'9'</span>:</div>
|
||
<div class="line"><a name="l08273"></a><span class="lineno"> 8273</span>  {</div>
|
||
<div class="line"><a name="l08274"></a><span class="lineno"> 8274</span>  add(current);</div>
|
||
<div class="line"><a name="l08275"></a><span class="lineno"> 8275</span>  <span class="keywordflow">goto</span> scan_number_any2;</div>
|
||
<div class="line"><a name="l08276"></a><span class="lineno"> 8276</span>  }</div>
|
||
<div class="line"><a name="l08277"></a><span class="lineno"> 8277</span>  </div>
|
||
<div class="line"><a name="l08278"></a><span class="lineno"> 8278</span>  <span class="keywordflow">default</span>:</div>
|
||
<div class="line"><a name="l08279"></a><span class="lineno"> 8279</span>  <span class="keywordflow">goto</span> scan_number_done;</div>
|
||
<div class="line"><a name="l08280"></a><span class="lineno"> 8280</span>  }</div>
|
||
<div class="line"><a name="l08281"></a><span class="lineno"> 8281</span>  </div>
|
||
<div class="line"><a name="l08282"></a><span class="lineno"> 8282</span> scan_number_done:</div>
|
||
<div class="line"><a name="l08283"></a><span class="lineno"> 8283</span>  <span class="comment">// unget the character after the number (we only read it to know that</span></div>
|
||
<div class="line"><a name="l08284"></a><span class="lineno"> 8284</span>  <span class="comment">// we are done scanning a number)</span></div>
|
||
<div class="line"><a name="l08285"></a><span class="lineno"> 8285</span>  unget();</div>
|
||
<div class="line"><a name="l08286"></a><span class="lineno"> 8286</span>  </div>
|
||
<div class="line"><a name="l08287"></a><span class="lineno"> 8287</span>  <span class="keywordtype">char</span>* endptr = <span class="keyword">nullptr</span>;</div>
|
||
<div class="line"><a name="l08288"></a><span class="lineno"> 8288</span>  errno = 0;</div>
|
||
<div class="line"><a name="l08289"></a><span class="lineno"> 8289</span>  </div>
|
||
<div class="line"><a name="l08290"></a><span class="lineno"> 8290</span>  <span class="comment">// try to parse integers first and fall back to floats</span></div>
|
||
<div class="line"><a name="l08291"></a><span class="lineno"> 8291</span>  <span class="keywordflow">if</span> (number_type == token_type::value_unsigned)</div>
|
||
<div class="line"><a name="l08292"></a><span class="lineno"> 8292</span>  {</div>
|
||
<div class="line"><a name="l08293"></a><span class="lineno"> 8293</span>  <span class="keyword">const</span> <span class="keyword">auto</span> x = std::strtoull(token_buffer.data(), &endptr, 10);</div>
|
||
<div class="line"><a name="l08294"></a><span class="lineno"> 8294</span>  </div>
|
||
<div class="line"><a name="l08295"></a><span class="lineno"> 8295</span>  <span class="comment">// we checked the number format before</span></div>
|
||
<div class="line"><a name="l08296"></a><span class="lineno"> 8296</span>  assert(endptr == token_buffer.data() + token_buffer.size());</div>
|
||
<div class="line"><a name="l08297"></a><span class="lineno"> 8297</span>  </div>
|
||
<div class="line"><a name="l08298"></a><span class="lineno"> 8298</span>  <span class="keywordflow">if</span> (errno == 0)</div>
|
||
<div class="line"><a name="l08299"></a><span class="lineno"> 8299</span>  {</div>
|
||
<div class="line"><a name="l08300"></a><span class="lineno"> 8300</span>  value_unsigned = <span class="keyword">static_cast<</span>number_unsigned_t<span class="keyword">></span>(x);</div>
|
||
<div class="line"><a name="l08301"></a><span class="lineno"> 8301</span>  <span class="keywordflow">if</span> (value_unsigned == x)</div>
|
||
<div class="line"><a name="l08302"></a><span class="lineno"> 8302</span>  {</div>
|
||
<div class="line"><a name="l08303"></a><span class="lineno"> 8303</span>  <span class="keywordflow">return</span> token_type::value_unsigned;</div>
|
||
<div class="line"><a name="l08304"></a><span class="lineno"> 8304</span>  }</div>
|
||
<div class="line"><a name="l08305"></a><span class="lineno"> 8305</span>  }</div>
|
||
<div class="line"><a name="l08306"></a><span class="lineno"> 8306</span>  }</div>
|
||
<div class="line"><a name="l08307"></a><span class="lineno"> 8307</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (number_type == token_type::value_integer)</div>
|
||
<div class="line"><a name="l08308"></a><span class="lineno"> 8308</span>  {</div>
|
||
<div class="line"><a name="l08309"></a><span class="lineno"> 8309</span>  <span class="keyword">const</span> <span class="keyword">auto</span> x = std::strtoll(token_buffer.data(), &endptr, 10);</div>
|
||
<div class="line"><a name="l08310"></a><span class="lineno"> 8310</span>  </div>
|
||
<div class="line"><a name="l08311"></a><span class="lineno"> 8311</span>  <span class="comment">// we checked the number format before</span></div>
|
||
<div class="line"><a name="l08312"></a><span class="lineno"> 8312</span>  assert(endptr == token_buffer.data() + token_buffer.size());</div>
|
||
<div class="line"><a name="l08313"></a><span class="lineno"> 8313</span>  </div>
|
||
<div class="line"><a name="l08314"></a><span class="lineno"> 8314</span>  <span class="keywordflow">if</span> (errno == 0)</div>
|
||
<div class="line"><a name="l08315"></a><span class="lineno"> 8315</span>  {</div>
|
||
<div class="line"><a name="l08316"></a><span class="lineno"> 8316</span>  value_integer = <span class="keyword">static_cast<</span>number_integer_t<span class="keyword">></span>(x);</div>
|
||
<div class="line"><a name="l08317"></a><span class="lineno"> 8317</span>  <span class="keywordflow">if</span> (value_integer == x)</div>
|
||
<div class="line"><a name="l08318"></a><span class="lineno"> 8318</span>  {</div>
|
||
<div class="line"><a name="l08319"></a><span class="lineno"> 8319</span>  <span class="keywordflow">return</span> token_type::value_integer;</div>
|
||
<div class="line"><a name="l08320"></a><span class="lineno"> 8320</span>  }</div>
|
||
<div class="line"><a name="l08321"></a><span class="lineno"> 8321</span>  }</div>
|
||
<div class="line"><a name="l08322"></a><span class="lineno"> 8322</span>  }</div>
|
||
<div class="line"><a name="l08323"></a><span class="lineno"> 8323</span>  </div>
|
||
<div class="line"><a name="l08324"></a><span class="lineno"> 8324</span>  <span class="comment">// this code is reached if we parse a floating-point number or if an</span></div>
|
||
<div class="line"><a name="l08325"></a><span class="lineno"> 8325</span>  <span class="comment">// integer conversion above failed</span></div>
|
||
<div class="line"><a name="l08326"></a><span class="lineno"> 8326</span>  strtof(value_float, token_buffer.data(), &endptr);</div>
|
||
<div class="line"><a name="l08327"></a><span class="lineno"> 8327</span>  </div>
|
||
<div class="line"><a name="l08328"></a><span class="lineno"> 8328</span>  <span class="comment">// we checked the number format before</span></div>
|
||
<div class="line"><a name="l08329"></a><span class="lineno"> 8329</span>  assert(endptr == token_buffer.data() + token_buffer.size());</div>
|
||
<div class="line"><a name="l08330"></a><span class="lineno"> 8330</span>  </div>
|
||
<div class="line"><a name="l08331"></a><span class="lineno"> 8331</span>  <span class="keywordflow">return</span> token_type::value_float;</div>
|
||
<div class="line"><a name="l08332"></a><span class="lineno"> 8332</span>  }</div>
|
||
<div class="line"><a name="l08333"></a><span class="lineno"> 8333</span>  </div>
|
||
<div class="line"><a name="l08339"></a><span class="lineno"> 8339</span>  <a class="code" href="json_8hpp.html#a5338981b5ad9027c9e54b1c5597f4344">JSON_HEDLEY_NON_NULL</a>(2)</div>
|
||
<div class="line"><a name="l08340"></a><span class="lineno"> 8340</span>  token_type scan_literal(const <span class="keywordtype">char</span>* literal_text, const <a class="code" href="namespacestd.html">std</a>::<span class="keywordtype">size_t</span> length,</div>
|
||
<div class="line"><a name="l08341"></a><span class="lineno"> 8341</span>  token_type return_type)</div>
|
||
<div class="line"><a name="l08342"></a><span class="lineno"> 8342</span>  {</div>
|
||
<div class="line"><a name="l08343"></a><span class="lineno"> 8343</span>  assert(current == literal_text[0]);</div>
|
||
<div class="line"><a name="l08344"></a><span class="lineno"> 8344</span>  <span class="keywordflow">for</span> (std::size_t i = 1; i < length; ++i)</div>
|
||
<div class="line"><a name="l08345"></a><span class="lineno"> 8345</span>  {</div>
|
||
<div class="line"><a name="l08346"></a><span class="lineno"> 8346</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(<a class="code" href="namespacenlohmann_1_1detail.html#acc422c11342b31368f610b6f96fcedc6">get</a>() != literal_text[i]))</div>
|
||
<div class="line"><a name="l08347"></a><span class="lineno"> 8347</span>  {</div>
|
||
<div class="line"><a name="l08348"></a><span class="lineno"> 8348</span>  error_message = <span class="stringliteral">"invalid literal"</span>;</div>
|
||
<div class="line"><a name="l08349"></a><span class="lineno"> 8349</span>  <span class="keywordflow">return</span> token_type::parse_error;</div>
|
||
<div class="line"><a name="l08350"></a><span class="lineno"> 8350</span>  }</div>
|
||
<div class="line"><a name="l08351"></a><span class="lineno"> 8351</span>  }</div>
|
||
<div class="line"><a name="l08352"></a><span class="lineno"> 8352</span>  <span class="keywordflow">return</span> return_type;</div>
|
||
<div class="line"><a name="l08353"></a><span class="lineno"> 8353</span>  }</div>
|
||
<div class="line"><a name="l08354"></a><span class="lineno"> 8354</span>  </div>
|
||
<div class="line"><a name="l08356"></a><span class="lineno"> 8356</span>  <span class="comment">// input management</span></div>
|
||
<div class="line"><a name="l08358"></a><span class="lineno"> 8358</span> <span class="comment"></span> </div>
|
||
<div class="line"><a name="l08360"></a><span class="lineno"> 8360</span>  <span class="keywordtype">void</span> reset() noexcept</div>
|
||
<div class="line"><a name="l08361"></a><span class="lineno"> 8361</span>  {</div>
|
||
<div class="line"><a name="l08362"></a><span class="lineno"> 8362</span>  token_buffer.clear();</div>
|
||
<div class="line"><a name="l08363"></a><span class="lineno"> 8363</span>  token_string.clear();</div>
|
||
<div class="line"><a name="l08364"></a><span class="lineno"> 8364</span>  token_string.push_back(std::char_traits<char>::to_char_type(current));</div>
|
||
<div class="line"><a name="l08365"></a><span class="lineno"> 8365</span>  }</div>
|
||
<div class="line"><a name="l08366"></a><span class="lineno"> 8366</span>  </div>
|
||
<div class="line"><a name="l08367"></a><span class="lineno"> 8367</span>  <span class="comment">/*</span></div>
|
||
<div class="line"><a name="l08368"></a><span class="lineno"> 8368</span> <span class="comment"> @brief get next character from the input</span></div>
|
||
<div class="line"><a name="l08369"></a><span class="lineno"> 8369</span> <span class="comment"></span> </div>
|
||
<div class="line"><a name="l08370"></a><span class="lineno"> 8370</span> <span class="comment"> This function provides the interface to the used input adapter. It does</span></div>
|
||
<div class="line"><a name="l08371"></a><span class="lineno"> 8371</span> <span class="comment"> not throw in case the input reached EOF, but returns a</span></div>
|
||
<div class="line"><a name="l08372"></a><span class="lineno"> 8372</span> <span class="comment"> `std::char_traits<char>::eof()` in that case. Stores the scanned characters</span></div>
|
||
<div class="line"><a name="l08373"></a><span class="lineno"> 8373</span> <span class="comment"> for use in error messages.</span></div>
|
||
<div class="line"><a name="l08374"></a><span class="lineno"> 8374</span> <span class="comment"></span> </div>
|
||
<div class="line"><a name="l08375"></a><span class="lineno"> 8375</span> <span class="comment"> @return character read from the input</span></div>
|
||
<div class="line"><a name="l08376"></a><span class="lineno"> 8376</span> <span class="comment"> */</span></div>
|
||
<div class="line"><a name="l08377"></a><span class="lineno"> 8377</span>  std::char_traits<char>::int_type <a class="code" href="namespacenlohmann_1_1detail.html#acc422c11342b31368f610b6f96fcedc6">get</a>()</div>
|
||
<div class="line"><a name="l08378"></a><span class="lineno"> 8378</span>  {</div>
|
||
<div class="line"><a name="l08379"></a><span class="lineno"> 8379</span>  ++position.chars_read_total;</div>
|
||
<div class="line"><a name="l08380"></a><span class="lineno"> 8380</span>  ++position.chars_read_current_line;</div>
|
||
<div class="line"><a name="l08381"></a><span class="lineno"> 8381</span>  </div>
|
||
<div class="line"><a name="l08382"></a><span class="lineno"> 8382</span>  <span class="keywordflow">if</span> (next_unget)</div>
|
||
<div class="line"><a name="l08383"></a><span class="lineno"> 8383</span>  {</div>
|
||
<div class="line"><a name="l08384"></a><span class="lineno"> 8384</span>  <span class="comment">// just reset the next_unget variable and work with current</span></div>
|
||
<div class="line"><a name="l08385"></a><span class="lineno"> 8385</span>  next_unget = <span class="keyword">false</span>;</div>
|
||
<div class="line"><a name="l08386"></a><span class="lineno"> 8386</span>  }</div>
|
||
<div class="line"><a name="l08387"></a><span class="lineno"> 8387</span>  <span class="keywordflow">else</span></div>
|
||
<div class="line"><a name="l08388"></a><span class="lineno"> 8388</span>  {</div>
|
||
<div class="line"><a name="l08389"></a><span class="lineno"> 8389</span>  current = ia->get_character();</div>
|
||
<div class="line"><a name="l08390"></a><span class="lineno"> 8390</span>  }</div>
|
||
<div class="line"><a name="l08391"></a><span class="lineno"> 8391</span>  </div>
|
||
<div class="line"><a name="l08392"></a><span class="lineno"> 8392</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a355f2770653ff7bdd5c74b204b5a3ad0">JSON_HEDLEY_LIKELY</a>(current != std::char_traits<char>::eof()))</div>
|
||
<div class="line"><a name="l08393"></a><span class="lineno"> 8393</span>  {</div>
|
||
<div class="line"><a name="l08394"></a><span class="lineno"> 8394</span>  token_string.push_back(std::char_traits<char>::to_char_type(current));</div>
|
||
<div class="line"><a name="l08395"></a><span class="lineno"> 8395</span>  }</div>
|
||
<div class="line"><a name="l08396"></a><span class="lineno"> 8396</span>  </div>
|
||
<div class="line"><a name="l08397"></a><span class="lineno"> 8397</span>  <span class="keywordflow">if</span> (current == <span class="charliteral">'\n'</span>)</div>
|
||
<div class="line"><a name="l08398"></a><span class="lineno"> 8398</span>  {</div>
|
||
<div class="line"><a name="l08399"></a><span class="lineno"> 8399</span>  ++position.lines_read;</div>
|
||
<div class="line"><a name="l08400"></a><span class="lineno"> 8400</span>  position.chars_read_current_line = 0;</div>
|
||
<div class="line"><a name="l08401"></a><span class="lineno"> 8401</span>  }</div>
|
||
<div class="line"><a name="l08402"></a><span class="lineno"> 8402</span>  </div>
|
||
<div class="line"><a name="l08403"></a><span class="lineno"> 8403</span>  <span class="keywordflow">return</span> current;</div>
|
||
<div class="line"><a name="l08404"></a><span class="lineno"> 8404</span>  }</div>
|
||
<div class="line"><a name="l08405"></a><span class="lineno"> 8405</span>  </div>
|
||
<div class="line"><a name="l08414"></a><span class="lineno"> 8414</span>  <span class="keywordtype">void</span> unget()</div>
|
||
<div class="line"><a name="l08415"></a><span class="lineno"> 8415</span>  {</div>
|
||
<div class="line"><a name="l08416"></a><span class="lineno"> 8416</span>  next_unget = <span class="keyword">true</span>;</div>
|
||
<div class="line"><a name="l08417"></a><span class="lineno"> 8417</span>  </div>
|
||
<div class="line"><a name="l08418"></a><span class="lineno"> 8418</span>  --position.chars_read_total;</div>
|
||
<div class="line"><a name="l08419"></a><span class="lineno"> 8419</span>  </div>
|
||
<div class="line"><a name="l08420"></a><span class="lineno"> 8420</span>  <span class="comment">// in case we "unget" a newline, we have to also decrement the lines_read</span></div>
|
||
<div class="line"><a name="l08421"></a><span class="lineno"> 8421</span>  <span class="keywordflow">if</span> (position.chars_read_current_line == 0)</div>
|
||
<div class="line"><a name="l08422"></a><span class="lineno"> 8422</span>  {</div>
|
||
<div class="line"><a name="l08423"></a><span class="lineno"> 8423</span>  <span class="keywordflow">if</span> (position.lines_read > 0)</div>
|
||
<div class="line"><a name="l08424"></a><span class="lineno"> 8424</span>  {</div>
|
||
<div class="line"><a name="l08425"></a><span class="lineno"> 8425</span>  --position.lines_read;</div>
|
||
<div class="line"><a name="l08426"></a><span class="lineno"> 8426</span>  }</div>
|
||
<div class="line"><a name="l08427"></a><span class="lineno"> 8427</span>  }</div>
|
||
<div class="line"><a name="l08428"></a><span class="lineno"> 8428</span>  <span class="keywordflow">else</span></div>
|
||
<div class="line"><a name="l08429"></a><span class="lineno"> 8429</span>  {</div>
|
||
<div class="line"><a name="l08430"></a><span class="lineno"> 8430</span>  --position.chars_read_current_line;</div>
|
||
<div class="line"><a name="l08431"></a><span class="lineno"> 8431</span>  }</div>
|
||
<div class="line"><a name="l08432"></a><span class="lineno"> 8432</span>  </div>
|
||
<div class="line"><a name="l08433"></a><span class="lineno"> 8433</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a355f2770653ff7bdd5c74b204b5a3ad0">JSON_HEDLEY_LIKELY</a>(current != std::char_traits<char>::eof()))</div>
|
||
<div class="line"><a name="l08434"></a><span class="lineno"> 8434</span>  {</div>
|
||
<div class="line"><a name="l08435"></a><span class="lineno"> 8435</span>  assert(not token_string.empty());</div>
|
||
<div class="line"><a name="l08436"></a><span class="lineno"> 8436</span>  token_string.pop_back();</div>
|
||
<div class="line"><a name="l08437"></a><span class="lineno"> 8437</span>  }</div>
|
||
<div class="line"><a name="l08438"></a><span class="lineno"> 8438</span>  }</div>
|
||
<div class="line"><a name="l08439"></a><span class="lineno"> 8439</span>  </div>
|
||
<div class="line"><a name="l08441"></a><span class="lineno"> 8441</span>  <span class="keywordtype">void</span> add(<span class="keywordtype">int</span> c)</div>
|
||
<div class="line"><a name="l08442"></a><span class="lineno"> 8442</span>  {</div>
|
||
<div class="line"><a name="l08443"></a><span class="lineno"> 8443</span>  token_buffer.push_back(std::char_traits<char>::to_char_type(c));</div>
|
||
<div class="line"><a name="l08444"></a><span class="lineno"> 8444</span>  }</div>
|
||
<div class="line"><a name="l08445"></a><span class="lineno"> 8445</span>  </div>
|
||
<div class="line"><a name="l08446"></a><span class="lineno"> 8446</span>  <span class="keyword">public</span>:</div>
|
||
<div class="line"><a name="l08448"></a><span class="lineno"> 8448</span>  <span class="comment">// value getters</span></div>
|
||
<div class="line"><a name="l08450"></a><span class="lineno"> 8450</span> <span class="comment"></span> </div>
|
||
<div class="line"><a name="l08452"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1lexer.html#afa338d17c0a7e834c73104258a2c8ced"> 8452</a></span>  constexpr number_integer_t <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#afa338d17c0a7e834c73104258a2c8ced">get_number_integer</a>() const noexcept</div>
|
||
<div class="line"><a name="l08453"></a><span class="lineno"> 8453</span>  {</div>
|
||
<div class="line"><a name="l08454"></a><span class="lineno"> 8454</span>  <span class="keywordflow">return</span> value_integer;</div>
|
||
<div class="line"><a name="l08455"></a><span class="lineno"> 8455</span>  }</div>
|
||
<div class="line"><a name="l08456"></a><span class="lineno"> 8456</span>  </div>
|
||
<div class="line"><a name="l08458"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1lexer.html#a56640fb92293e0c17742ca3c814d74d6"> 8458</a></span>  constexpr number_unsigned_t <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a56640fb92293e0c17742ca3c814d74d6">get_number_unsigned</a>() const noexcept</div>
|
||
<div class="line"><a name="l08459"></a><span class="lineno"> 8459</span>  {</div>
|
||
<div class="line"><a name="l08460"></a><span class="lineno"> 8460</span>  <span class="keywordflow">return</span> value_unsigned;</div>
|
||
<div class="line"><a name="l08461"></a><span class="lineno"> 8461</span>  }</div>
|
||
<div class="line"><a name="l08462"></a><span class="lineno"> 8462</span>  </div>
|
||
<div class="line"><a name="l08464"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1lexer.html#ac013af35a21e9387993b19da5b3e0ae2"> 8464</a></span>  constexpr number_float_t <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#ac013af35a21e9387993b19da5b3e0ae2">get_number_float</a>() const noexcept</div>
|
||
<div class="line"><a name="l08465"></a><span class="lineno"> 8465</span>  {</div>
|
||
<div class="line"><a name="l08466"></a><span class="lineno"> 8466</span>  <span class="keywordflow">return</span> value_float;</div>
|
||
<div class="line"><a name="l08467"></a><span class="lineno"> 8467</span>  }</div>
|
||
<div class="line"><a name="l08468"></a><span class="lineno"> 8468</span>  </div>
|
||
<div class="line"><a name="l08470"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1lexer.html#a54aa290ff2f60218a8f35f1ebf81666d"> 8470</a></span>  string_t& <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a54aa290ff2f60218a8f35f1ebf81666d">get_string</a>()</div>
|
||
<div class="line"><a name="l08471"></a><span class="lineno"> 8471</span>  {</div>
|
||
<div class="line"><a name="l08472"></a><span class="lineno"> 8472</span>  <span class="keywordflow">return</span> token_buffer;</div>
|
||
<div class="line"><a name="l08473"></a><span class="lineno"> 8473</span>  }</div>
|
||
<div class="line"><a name="l08474"></a><span class="lineno"> 8474</span>  </div>
|
||
<div class="line"><a name="l08476"></a><span class="lineno"> 8476</span>  <span class="comment">// diagnostics</span></div>
|
||
<div class="line"><a name="l08478"></a><span class="lineno"> 8478</span> <span class="comment"></span> </div>
|
||
<div class="line"><a name="l08480"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1lexer.html#abf5143501435f9f79898c1ff238c2622"> 8480</a></span>  constexpr <a class="code" href="structnlohmann_1_1detail_1_1position__t.html">position_t</a> <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#abf5143501435f9f79898c1ff238c2622">get_position</a>() const noexcept</div>
|
||
<div class="line"><a name="l08481"></a><span class="lineno"> 8481</span>  {</div>
|
||
<div class="line"><a name="l08482"></a><span class="lineno"> 8482</span>  <span class="keywordflow">return</span> position;</div>
|
||
<div class="line"><a name="l08483"></a><span class="lineno"> 8483</span>  }</div>
|
||
<div class="line"><a name="l08484"></a><span class="lineno"> 8484</span>  </div>
|
||
<div class="line"><a name="l08488"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1lexer.html#a4aef7e72e539be04e139c34872421f2a"> 8488</a></span>  std::string <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a4aef7e72e539be04e139c34872421f2a">get_token_string</a>()<span class="keyword"> const</span></div>
|
||
<div class="line"><a name="l08489"></a><span class="lineno"> 8489</span> <span class="keyword"> </span>{</div>
|
||
<div class="line"><a name="l08490"></a><span class="lineno"> 8490</span>  <span class="comment">// escape control characters</span></div>
|
||
<div class="line"><a name="l08491"></a><span class="lineno"> 8491</span>  std::string result;</div>
|
||
<div class="line"><a name="l08492"></a><span class="lineno"> 8492</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> c : token_string)</div>
|
||
<div class="line"><a name="l08493"></a><span class="lineno"> 8493</span>  {</div>
|
||
<div class="line"><a name="l08494"></a><span class="lineno"> 8494</span>  <span class="keywordflow">if</span> (<span class="stringliteral">'\x00'</span> <= c and c <= <span class="stringliteral">'\x1F'</span>)</div>
|
||
<div class="line"><a name="l08495"></a><span class="lineno"> 8495</span>  {</div>
|
||
<div class="line"><a name="l08496"></a><span class="lineno"> 8496</span>  <span class="comment">// escape control characters</span></div>
|
||
<div class="line"><a name="l08497"></a><span class="lineno"> 8497</span>  std::array<char, 9> cs{{}};</div>
|
||
<div class="line"><a name="l08498"></a><span class="lineno"> 8498</span>  (std::snprintf)(cs.data(), cs.size(), <span class="stringliteral">"<U+%.4X>"</span>, <span class="keyword">static_cast<</span><span class="keywordtype">unsigned</span> <span class="keywordtype">char</span><span class="keyword">></span>(c));</div>
|
||
<div class="line"><a name="l08499"></a><span class="lineno"> 8499</span>  result += cs.data();</div>
|
||
<div class="line"><a name="l08500"></a><span class="lineno"> 8500</span>  }</div>
|
||
<div class="line"><a name="l08501"></a><span class="lineno"> 8501</span>  <span class="keywordflow">else</span></div>
|
||
<div class="line"><a name="l08502"></a><span class="lineno"> 8502</span>  {</div>
|
||
<div class="line"><a name="l08503"></a><span class="lineno"> 8503</span>  <span class="comment">// add character as is</span></div>
|
||
<div class="line"><a name="l08504"></a><span class="lineno"> 8504</span>  result.push_back(c);</div>
|
||
<div class="line"><a name="l08505"></a><span class="lineno"> 8505</span>  }</div>
|
||
<div class="line"><a name="l08506"></a><span class="lineno"> 8506</span>  }</div>
|
||
<div class="line"><a name="l08507"></a><span class="lineno"> 8507</span>  </div>
|
||
<div class="line"><a name="l08508"></a><span class="lineno"> 8508</span>  <span class="keywordflow">return</span> result;</div>
|
||
<div class="line"><a name="l08509"></a><span class="lineno"> 8509</span>  }</div>
|
||
<div class="line"><a name="l08510"></a><span class="lineno"> 8510</span>  </div>
|
||
<div class="line"><a name="l08512"></a><span class="lineno"> 8512</span>  <a class="code" href="json_8hpp.html#a5f2aaec3b681d0a72f7d6e90b70cdcd1">JSON_HEDLEY_RETURNS_NON_NULL</a></div>
|
||
<div class="line"><a name="l08513"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1lexer.html#a14cf32c36b043db47510ae183d38ce5b"> 8513</a></span>  constexpr <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a14cf32c36b043db47510ae183d38ce5b">get_error_message</a>() const noexcept</div>
|
||
<div class="line"><a name="l08514"></a><span class="lineno"> 8514</span>  {</div>
|
||
<div class="line"><a name="l08515"></a><span class="lineno"> 8515</span>  <span class="keywordflow">return</span> error_message;</div>
|
||
<div class="line"><a name="l08516"></a><span class="lineno"> 8516</span>  }</div>
|
||
<div class="line"><a name="l08517"></a><span class="lineno"> 8517</span>  </div>
|
||
<div class="line"><a name="l08519"></a><span class="lineno"> 8519</span>  <span class="comment">// actual scanner</span></div>
|
||
<div class="line"><a name="l08521"></a><span class="lineno"> 8521</span> <span class="comment"></span> </div>
|
||
<div class="line"><a name="l08526"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1lexer.html#a709afd52def2e258dac0b8a67dc4ea26"> 8526</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a709afd52def2e258dac0b8a67dc4ea26">skip_bom</a>()</div>
|
||
<div class="line"><a name="l08527"></a><span class="lineno"> 8527</span>  {</div>
|
||
<div class="line"><a name="l08528"></a><span class="lineno"> 8528</span>  <span class="keywordflow">if</span> (<a class="code" href="namespacenlohmann_1_1detail.html#acc422c11342b31368f610b6f96fcedc6">get</a>() == 0xEF)</div>
|
||
<div class="line"><a name="l08529"></a><span class="lineno"> 8529</span>  {</div>
|
||
<div class="line"><a name="l08530"></a><span class="lineno"> 8530</span>  <span class="comment">// check if we completely parse the BOM</span></div>
|
||
<div class="line"><a name="l08531"></a><span class="lineno"> 8531</span>  <span class="keywordflow">return</span> <a class="code" href="namespacenlohmann_1_1detail.html#acc422c11342b31368f610b6f96fcedc6">get</a>() == 0xBB and <a class="code" href="namespacenlohmann_1_1detail.html#acc422c11342b31368f610b6f96fcedc6">get</a>() == 0xBF;</div>
|
||
<div class="line"><a name="l08532"></a><span class="lineno"> 8532</span>  }</div>
|
||
<div class="line"><a name="l08533"></a><span class="lineno"> 8533</span>  </div>
|
||
<div class="line"><a name="l08534"></a><span class="lineno"> 8534</span>  <span class="comment">// the first character is not the beginning of the BOM; unget it to</span></div>
|
||
<div class="line"><a name="l08535"></a><span class="lineno"> 8535</span>  <span class="comment">// process is later</span></div>
|
||
<div class="line"><a name="l08536"></a><span class="lineno"> 8536</span>  unget();</div>
|
||
<div class="line"><a name="l08537"></a><span class="lineno"> 8537</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
||
<div class="line"><a name="l08538"></a><span class="lineno"> 8538</span>  }</div>
|
||
<div class="line"><a name="l08539"></a><span class="lineno"> 8539</span>  </div>
|
||
<div class="line"><a name="l08540"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1lexer.html#aac3041cd2b9291e64fee38db422863c9"> 8540</a></span>  <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098">token_type</a> <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#aac3041cd2b9291e64fee38db422863c9">scan</a>()</div>
|
||
<div class="line"><a name="l08541"></a><span class="lineno"> 8541</span>  {</div>
|
||
<div class="line"><a name="l08542"></a><span class="lineno"> 8542</span>  <span class="comment">// initially, skip the BOM</span></div>
|
||
<div class="line"><a name="l08543"></a><span class="lineno"> 8543</span>  <span class="keywordflow">if</span> (position.chars_read_total == 0 and not skip_bom())</div>
|
||
<div class="line"><a name="l08544"></a><span class="lineno"> 8544</span>  {</div>
|
||
<div class="line"><a name="l08545"></a><span class="lineno"> 8545</span>  error_message = <span class="stringliteral">"invalid BOM; must be 0xEF 0xBB 0xBF if given"</span>;</div>
|
||
<div class="line"><a name="l08546"></a><span class="lineno"> 8546</span>  <span class="keywordflow">return</span> token_type::parse_error;</div>
|
||
<div class="line"><a name="l08547"></a><span class="lineno"> 8547</span>  }</div>
|
||
<div class="line"><a name="l08548"></a><span class="lineno"> 8548</span>  </div>
|
||
<div class="line"><a name="l08549"></a><span class="lineno"> 8549</span>  <span class="comment">// read next character and ignore whitespace</span></div>
|
||
<div class="line"><a name="l08550"></a><span class="lineno"> 8550</span>  <span class="keywordflow">do</span></div>
|
||
<div class="line"><a name="l08551"></a><span class="lineno"> 8551</span>  {</div>
|
||
<div class="line"><a name="l08552"></a><span class="lineno"> 8552</span>  <a class="code" href="namespacenlohmann_1_1detail.html#acc422c11342b31368f610b6f96fcedc6">get</a>();</div>
|
||
<div class="line"><a name="l08553"></a><span class="lineno"> 8553</span>  }</div>
|
||
<div class="line"><a name="l08554"></a><span class="lineno"> 8554</span>  <span class="keywordflow">while</span> (current == <span class="charliteral">' '</span> or current == <span class="charliteral">'\t'</span> or current == <span class="charliteral">'\n'</span> or current == <span class="charliteral">'\r'</span>);</div>
|
||
<div class="line"><a name="l08555"></a><span class="lineno"> 8555</span>  </div>
|
||
<div class="line"><a name="l08556"></a><span class="lineno"> 8556</span>  <span class="keywordflow">switch</span> (current)</div>
|
||
<div class="line"><a name="l08557"></a><span class="lineno"> 8557</span>  {</div>
|
||
<div class="line"><a name="l08558"></a><span class="lineno"> 8558</span>  <span class="comment">// structural characters</span></div>
|
||
<div class="line"><a name="l08559"></a><span class="lineno"> 8559</span>  <span class="keywordflow">case</span> <span class="charliteral">'['</span>:</div>
|
||
<div class="line"><a name="l08560"></a><span class="lineno"> 8560</span>  <span class="keywordflow">return</span> token_type::begin_array;</div>
|
||
<div class="line"><a name="l08561"></a><span class="lineno"> 8561</span>  <span class="keywordflow">case</span> <span class="charliteral">']'</span>:</div>
|
||
<div class="line"><a name="l08562"></a><span class="lineno"> 8562</span>  <span class="keywordflow">return</span> token_type::end_array;</div>
|
||
<div class="line"><a name="l08563"></a><span class="lineno"> 8563</span>  <span class="keywordflow">case</span> <span class="charliteral">'{'</span>:</div>
|
||
<div class="line"><a name="l08564"></a><span class="lineno"> 8564</span>  <span class="keywordflow">return</span> token_type::begin_object;</div>
|
||
<div class="line"><a name="l08565"></a><span class="lineno"> 8565</span>  <span class="keywordflow">case</span> <span class="charliteral">'}'</span>:</div>
|
||
<div class="line"><a name="l08566"></a><span class="lineno"> 8566</span>  <span class="keywordflow">return</span> token_type::end_object;</div>
|
||
<div class="line"><a name="l08567"></a><span class="lineno"> 8567</span>  <span class="keywordflow">case</span> <span class="charliteral">':'</span>:</div>
|
||
<div class="line"><a name="l08568"></a><span class="lineno"> 8568</span>  <span class="keywordflow">return</span> token_type::name_separator;</div>
|
||
<div class="line"><a name="l08569"></a><span class="lineno"> 8569</span>  <span class="keywordflow">case</span> <span class="charliteral">','</span>:</div>
|
||
<div class="line"><a name="l08570"></a><span class="lineno"> 8570</span>  <span class="keywordflow">return</span> token_type::value_separator;</div>
|
||
<div class="line"><a name="l08571"></a><span class="lineno"> 8571</span>  </div>
|
||
<div class="line"><a name="l08572"></a><span class="lineno"> 8572</span>  <span class="comment">// literals</span></div>
|
||
<div class="line"><a name="l08573"></a><span class="lineno"> 8573</span>  <span class="keywordflow">case</span> <span class="charliteral">'t'</span>:</div>
|
||
<div class="line"><a name="l08574"></a><span class="lineno"> 8574</span>  <span class="keywordflow">return</span> scan_literal(<span class="stringliteral">"true"</span>, 4, token_type::literal_true);</div>
|
||
<div class="line"><a name="l08575"></a><span class="lineno"> 8575</span>  <span class="keywordflow">case</span> <span class="charliteral">'f'</span>:</div>
|
||
<div class="line"><a name="l08576"></a><span class="lineno"> 8576</span>  <span class="keywordflow">return</span> scan_literal(<span class="stringliteral">"false"</span>, 5, token_type::literal_false);</div>
|
||
<div class="line"><a name="l08577"></a><span class="lineno"> 8577</span>  <span class="keywordflow">case</span> <span class="charliteral">'n'</span>:</div>
|
||
<div class="line"><a name="l08578"></a><span class="lineno"> 8578</span>  <span class="keywordflow">return</span> scan_literal(<span class="stringliteral">"null"</span>, 4, token_type::literal_null);</div>
|
||
<div class="line"><a name="l08579"></a><span class="lineno"> 8579</span>  </div>
|
||
<div class="line"><a name="l08580"></a><span class="lineno"> 8580</span>  <span class="comment">// string</span></div>
|
||
<div class="line"><a name="l08581"></a><span class="lineno"> 8581</span>  <span class="keywordflow">case</span> <span class="charliteral">'\"'</span>:</div>
|
||
<div class="line"><a name="l08582"></a><span class="lineno"> 8582</span>  <span class="keywordflow">return</span> scan_string();</div>
|
||
<div class="line"><a name="l08583"></a><span class="lineno"> 8583</span>  </div>
|
||
<div class="line"><a name="l08584"></a><span class="lineno"> 8584</span>  <span class="comment">// number</span></div>
|
||
<div class="line"><a name="l08585"></a><span class="lineno"> 8585</span>  <span class="keywordflow">case</span> <span class="charliteral">'-'</span>:</div>
|
||
<div class="line"><a name="l08586"></a><span class="lineno"> 8586</span>  <span class="keywordflow">case</span> <span class="charliteral">'0'</span>:</div>
|
||
<div class="line"><a name="l08587"></a><span class="lineno"> 8587</span>  <span class="keywordflow">case</span> <span class="charliteral">'1'</span>:</div>
|
||
<div class="line"><a name="l08588"></a><span class="lineno"> 8588</span>  <span class="keywordflow">case</span> <span class="charliteral">'2'</span>:</div>
|
||
<div class="line"><a name="l08589"></a><span class="lineno"> 8589</span>  <span class="keywordflow">case</span> <span class="charliteral">'3'</span>:</div>
|
||
<div class="line"><a name="l08590"></a><span class="lineno"> 8590</span>  <span class="keywordflow">case</span> <span class="charliteral">'4'</span>:</div>
|
||
<div class="line"><a name="l08591"></a><span class="lineno"> 8591</span>  <span class="keywordflow">case</span> <span class="charliteral">'5'</span>:</div>
|
||
<div class="line"><a name="l08592"></a><span class="lineno"> 8592</span>  <span class="keywordflow">case</span> <span class="charliteral">'6'</span>:</div>
|
||
<div class="line"><a name="l08593"></a><span class="lineno"> 8593</span>  <span class="keywordflow">case</span> <span class="charliteral">'7'</span>:</div>
|
||
<div class="line"><a name="l08594"></a><span class="lineno"> 8594</span>  <span class="keywordflow">case</span> <span class="charliteral">'8'</span>:</div>
|
||
<div class="line"><a name="l08595"></a><span class="lineno"> 8595</span>  <span class="keywordflow">case</span> <span class="charliteral">'9'</span>:</div>
|
||
<div class="line"><a name="l08596"></a><span class="lineno"> 8596</span>  <span class="keywordflow">return</span> scan_number();</div>
|
||
<div class="line"><a name="l08597"></a><span class="lineno"> 8597</span>  </div>
|
||
<div class="line"><a name="l08598"></a><span class="lineno"> 8598</span>  <span class="comment">// end of input (the null byte is needed when parsing from</span></div>
|
||
<div class="line"><a name="l08599"></a><span class="lineno"> 8599</span>  <span class="comment">// string literals)</span></div>
|
||
<div class="line"><a name="l08600"></a><span class="lineno"> 8600</span>  <span class="keywordflow">case</span> <span class="charliteral">'\0'</span>:</div>
|
||
<div class="line"><a name="l08601"></a><span class="lineno"> 8601</span>  <span class="keywordflow">case</span> std::char_traits<char>::eof():</div>
|
||
<div class="line"><a name="l08602"></a><span class="lineno"> 8602</span>  <span class="keywordflow">return</span> token_type::end_of_input;</div>
|
||
<div class="line"><a name="l08603"></a><span class="lineno"> 8603</span>  </div>
|
||
<div class="line"><a name="l08604"></a><span class="lineno"> 8604</span>  <span class="comment">// error</span></div>
|
||
<div class="line"><a name="l08605"></a><span class="lineno"> 8605</span>  <span class="keywordflow">default</span>:</div>
|
||
<div class="line"><a name="l08606"></a><span class="lineno"> 8606</span>  error_message = <span class="stringliteral">"invalid literal"</span>;</div>
|
||
<div class="line"><a name="l08607"></a><span class="lineno"> 8607</span>  <span class="keywordflow">return</span> token_type::parse_error;</div>
|
||
<div class="line"><a name="l08608"></a><span class="lineno"> 8608</span>  }</div>
|
||
<div class="line"><a name="l08609"></a><span class="lineno"> 8609</span>  }</div>
|
||
<div class="line"><a name="l08610"></a><span class="lineno"> 8610</span>  </div>
|
||
<div class="line"><a name="l08611"></a><span class="lineno"> 8611</span>  <span class="keyword">private</span>:</div>
|
||
<div class="line"><a name="l08613"></a><span class="lineno"> 8613</span>  <a class="code" href="namespacenlohmann_1_1detail.html#ae132f8cd5bb24c5e9b40ad0eafedf1c2">detail::input_adapter_t</a> ia = <span class="keyword">nullptr</span>;</div>
|
||
<div class="line"><a name="l08614"></a><span class="lineno"> 8614</span>  </div>
|
||
<div class="line"><a name="l08616"></a><span class="lineno"> 8616</span>  std::char_traits<char>::int_type current = std::char_traits<char>::eof();</div>
|
||
<div class="line"><a name="l08617"></a><span class="lineno"> 8617</span>  </div>
|
||
<div class="line"><a name="l08619"></a><span class="lineno"> 8619</span>  <span class="keywordtype">bool</span> next_unget = <span class="keyword">false</span>;</div>
|
||
<div class="line"><a name="l08620"></a><span class="lineno"> 8620</span>  </div>
|
||
<div class="line"><a name="l08622"></a><span class="lineno"> 8622</span>  <a class="code" href="structnlohmann_1_1detail_1_1position__t.html">position_t</a> position {};</div>
|
||
<div class="line"><a name="l08623"></a><span class="lineno"> 8623</span>  </div>
|
||
<div class="line"><a name="l08625"></a><span class="lineno"> 8625</span>  std::vector<char> token_string {};</div>
|
||
<div class="line"><a name="l08626"></a><span class="lineno"> 8626</span>  </div>
|
||
<div class="line"><a name="l08628"></a><span class="lineno"> 8628</span>  string_t token_buffer {};</div>
|
||
<div class="line"><a name="l08629"></a><span class="lineno"> 8629</span>  </div>
|
||
<div class="line"><a name="l08631"></a><span class="lineno"> 8631</span>  <span class="keyword">const</span> <span class="keywordtype">char</span>* error_message = <span class="stringliteral">""</span>;</div>
|
||
<div class="line"><a name="l08632"></a><span class="lineno"> 8632</span>  </div>
|
||
<div class="line"><a name="l08633"></a><span class="lineno"> 8633</span>  <span class="comment">// number values</span></div>
|
||
<div class="line"><a name="l08634"></a><span class="lineno"> 8634</span>  number_integer_t value_integer = 0;</div>
|
||
<div class="line"><a name="l08635"></a><span class="lineno"> 8635</span>  number_unsigned_t value_unsigned = 0;</div>
|
||
<div class="line"><a name="l08636"></a><span class="lineno"> 8636</span>  number_float_t value_float = 0;</div>
|
||
<div class="line"><a name="l08637"></a><span class="lineno"> 8637</span>  </div>
|
||
<div class="line"><a name="l08639"></a><span class="lineno"> 8639</span>  <span class="keyword">const</span> <span class="keywordtype">char</span> decimal_point_char = <span class="charliteral">'.'</span>;</div>
|
||
<div class="line"><a name="l08640"></a><span class="lineno"> 8640</span> };</div>
|
||
<div class="line"><a name="l08641"></a><span class="lineno"> 8641</span> } <span class="comment">// namespace detail</span></div>
|
||
<div class="line"><a name="l08642"></a><span class="lineno"> 8642</span> } <span class="comment">// namespace nlohmann</span></div>
|
||
<div class="line"><a name="l08643"></a><span class="lineno"> 8643</span>  </div>
|
||
<div class="line"><a name="l08644"></a><span class="lineno"> 8644</span> <span class="comment">// #include <nlohmann/detail/input/parser.hpp></span></div>
|
||
<div class="line"><a name="l08645"></a><span class="lineno"> 8645</span>  </div>
|
||
<div class="line"><a name="l08646"></a><span class="lineno"> 8646</span>  </div>
|
||
<div class="line"><a name="l08647"></a><span class="lineno"> 8647</span> <span class="preprocessor">#include <cassert></span> <span class="comment">// assert</span></div>
|
||
<div class="line"><a name="l08648"></a><span class="lineno"> 8648</span> <span class="preprocessor">#include <cmath></span> <span class="comment">// isfinite</span></div>
|
||
<div class="line"><a name="l08649"></a><span class="lineno"> 8649</span> <span class="preprocessor">#include <cstdint></span> <span class="comment">// uint8_t</span></div>
|
||
<div class="line"><a name="l08650"></a><span class="lineno"> 8650</span> <span class="preprocessor">#include <functional></span> <span class="comment">// function</span></div>
|
||
<div class="line"><a name="l08651"></a><span class="lineno"> 8651</span> <span class="preprocessor">#include <string></span> <span class="comment">// string</span></div>
|
||
<div class="line"><a name="l08652"></a><span class="lineno"> 8652</span> <span class="preprocessor">#include <utility></span> <span class="comment">// move</span></div>
|
||
<div class="line"><a name="l08653"></a><span class="lineno"> 8653</span> <span class="preprocessor">#include <vector></span> <span class="comment">// vector</span></div>
|
||
<div class="line"><a name="l08654"></a><span class="lineno"> 8654</span>  </div>
|
||
<div class="line"><a name="l08655"></a><span class="lineno"> 8655</span> <span class="comment">// #include <nlohmann/detail/exceptions.hpp></span></div>
|
||
<div class="line"><a name="l08656"></a><span class="lineno"> 8656</span>  </div>
|
||
<div class="line"><a name="l08657"></a><span class="lineno"> 8657</span> <span class="comment">// #include <nlohmann/detail/input/input_adapters.hpp></span></div>
|
||
<div class="line"><a name="l08658"></a><span class="lineno"> 8658</span>  </div>
|
||
<div class="line"><a name="l08659"></a><span class="lineno"> 8659</span> <span class="comment">// #include <nlohmann/detail/input/json_sax.hpp></span></div>
|
||
<div class="line"><a name="l08660"></a><span class="lineno"> 8660</span>  </div>
|
||
<div class="line"><a name="l08661"></a><span class="lineno"> 8661</span> <span class="comment">// #include <nlohmann/detail/input/lexer.hpp></span></div>
|
||
<div class="line"><a name="l08662"></a><span class="lineno"> 8662</span>  </div>
|
||
<div class="line"><a name="l08663"></a><span class="lineno"> 8663</span> <span class="comment">// #include <nlohmann/detail/macro_scope.hpp></span></div>
|
||
<div class="line"><a name="l08664"></a><span class="lineno"> 8664</span>  </div>
|
||
<div class="line"><a name="l08665"></a><span class="lineno"> 8665</span> <span class="comment">// #include <nlohmann/detail/meta/is_sax.hpp></span></div>
|
||
<div class="line"><a name="l08666"></a><span class="lineno"> 8666</span>  </div>
|
||
<div class="line"><a name="l08667"></a><span class="lineno"> 8667</span> <span class="comment">// #include <nlohmann/detail/value_t.hpp></span></div>
|
||
<div class="line"><a name="l08668"></a><span class="lineno"> 8668</span>  </div>
|
||
<div class="line"><a name="l08669"></a><span class="lineno"> 8669</span>  </div>
|
||
<div class="line"><a name="l08670"></a><span class="lineno"> 8670</span> <span class="keyword">namespace </span><a class="code" href="namespacenlohmann.html">nlohmann</a></div>
|
||
<div class="line"><a name="l08671"></a><span class="lineno"> 8671</span> {</div>
|
||
<div class="line"><a name="l08672"></a><span class="lineno"> 8672</span> <span class="keyword">namespace </span>detail</div>
|
||
<div class="line"><a name="l08673"></a><span class="lineno"> 8673</span> {</div>
|
||
<div class="line"><a name="l08675"></a><span class="lineno"> 8675</span> <span class="comment">// parser //</span></div>
|
||
<div class="line"><a name="l08677"></a><span class="lineno"> 8677</span> <span class="comment"></span> </div>
|
||
<div class="line"><a name="l08683"></a><span class="lineno"> 8683</span> <span class="keyword">template</span><<span class="keyword">typename</span> BasicJsonType></div>
|
||
<div class="line"><a name="l08684"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1parser.html"> 8684</a></span> <span class="keyword">class </span><a class="code" href="classnlohmann_1_1detail_1_1parser.html">parser</a></div>
|
||
<div class="line"><a name="l08685"></a><span class="lineno"> 8685</span> {</div>
|
||
<div class="line"><a name="l08686"></a><span class="lineno"> 8686</span>  <span class="keyword">using</span> number_integer_t = <span class="keyword">typename</span> BasicJsonType::number_integer_t;</div>
|
||
<div class="line"><a name="l08687"></a><span class="lineno"> 8687</span>  <span class="keyword">using</span> number_unsigned_t = <span class="keyword">typename</span> BasicJsonType::number_unsigned_t;</div>
|
||
<div class="line"><a name="l08688"></a><span class="lineno"> 8688</span>  <span class="keyword">using</span> number_float_t = <span class="keyword">typename</span> BasicJsonType::number_float_t;</div>
|
||
<div class="line"><a name="l08689"></a><span class="lineno"> 8689</span>  <span class="keyword">using</span> string_t = <span class="keyword">typename</span> BasicJsonType::string_t;</div>
|
||
<div class="line"><a name="l08690"></a><span class="lineno"> 8690</span>  <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1detail_1_1lexer.html">lexer_t</a> = <a class="code" href="classnlohmann_1_1detail_1_1lexer.html">lexer<BasicJsonType></a>;</div>
|
||
<div class="line"><a name="l08691"></a><span class="lineno"> 8691</span>  <span class="keyword">using</span> token_type = <span class="keyword">typename</span> <a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098">lexer_t::token_type</a>;</div>
|
||
<div class="line"><a name="l08692"></a><span class="lineno"> 8692</span>  </div>
|
||
<div class="line"><a name="l08693"></a><span class="lineno"> 8693</span>  <span class="keyword">public</span>:</div>
|
||
<div class="line"><a name="l08694"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1parser.html#a37ac88c864dda495f72cb62776b0bebe"> 8694</a></span>  <span class="keyword">enum class</span> <a class="code" href="classnlohmann_1_1detail_1_1parser.html#a37ac88c864dda495f72cb62776b0bebe">parse_event_t</a> : uint8_t</div>
|
||
<div class="line"><a name="l08695"></a><span class="lineno"> 8695</span>  {</div>
|
||
<div class="line"><a name="l08697"></a><span class="lineno"> 8697</span>  <a class="code" href="classnlohmann_1_1detail_1_1parser.html#a37ac88c864dda495f72cb62776b0bebeae73f17027cb0acbb537f29d0a6944b26">object_start</a>,</div>
|
||
<div class="line"><a name="l08699"></a><span class="lineno"> 8699</span>  <a class="code" href="classnlohmann_1_1detail_1_1parser.html#a37ac88c864dda495f72cb62776b0bebeaf63e2a2468a37aa4f394fcc3bcb8249c">object_end</a>,</div>
|
||
<div class="line"><a name="l08701"></a><span class="lineno"> 8701</span>  <a class="code" href="classnlohmann_1_1detail_1_1parser.html#a37ac88c864dda495f72cb62776b0bebeaa4388a3d92419edbb1c6efd4d52461f3">array_start</a>,</div>
|
||
<div class="line"><a name="l08703"></a><span class="lineno"> 8703</span>  <a class="code" href="classnlohmann_1_1detail_1_1parser.html#a37ac88c864dda495f72cb62776b0bebea49642fb732aa2e112188fba1f9d3ef7f">array_end</a>,</div>
|
||
<div class="line"><a name="l08705"></a><span class="lineno"> 8705</span>  <a class="code" href="classnlohmann_1_1detail_1_1parser.html#a37ac88c864dda495f72cb62776b0bebea3c6e0b8a9c15224a8228b9a98ca1531d">key</a>,</div>
|
||
<div class="line"><a name="l08707"></a><span class="lineno"> 8707</span>  <a class="code" href="classnlohmann_1_1detail_1_1parser.html#a37ac88c864dda495f72cb62776b0bebea2063c1608d6e0baf80249c42e2be5804">value</a></div>
|
||
<div class="line"><a name="l08708"></a><span class="lineno"> 8708</span>  };</div>
|
||
<div class="line"><a name="l08709"></a><span class="lineno"> 8709</span>  </div>
|
||
<div class="line"><a name="l08710"></a><span class="lineno"> 8710</span>  <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1detail_1_1parser.html#ad250ad4f2b4af4a497e727c963162ff1">parser_callback_t</a> =</div>
|
||
<div class="line"><a name="l08711"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1parser.html#ad250ad4f2b4af4a497e727c963162ff1"> 8711</a></span>  std::function<bool(<span class="keywordtype">int</span> depth, <a class="code" href="classnlohmann_1_1detail_1_1parser.html#a37ac88c864dda495f72cb62776b0bebe">parse_event_t</a> event, BasicJsonType& parsed)>;</div>
|
||
<div class="line"><a name="l08712"></a><span class="lineno"> 8712</span>  </div>
|
||
<div class="line"><a name="l08714"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1parser.html#a1a2bd258b7e99f86b7e6a3c41373ba55"> 8714</a></span>  <span class="keyword">explicit</span> <a class="code" href="classnlohmann_1_1detail_1_1parser.html#a1a2bd258b7e99f86b7e6a3c41373ba55">parser</a>(<a class="code" href="namespacenlohmann_1_1detail.html#ae132f8cd5bb24c5e9b40ad0eafedf1c2">detail::input_adapter_t</a>&& adapter,</div>
|
||
<div class="line"><a name="l08715"></a><span class="lineno"> 8715</span>  <span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1parser.html#ad250ad4f2b4af4a497e727c963162ff1">parser_callback_t</a> cb = <span class="keyword">nullptr</span>,</div>
|
||
<div class="line"><a name="l08716"></a><span class="lineno"> 8716</span>  <span class="keyword">const</span> <span class="keywordtype">bool</span> allow_exceptions_ = <span class="keyword">true</span>)</div>
|
||
<div class="line"><a name="l08717"></a><span class="lineno"> 8717</span>  : callback(cb), m_lexer(<a class="code" href="namespacestd.html">std</a>::move(adapter)), allow_exceptions(allow_exceptions_)</div>
|
||
<div class="line"><a name="l08718"></a><span class="lineno"> 8718</span>  {</div>
|
||
<div class="line"><a name="l08719"></a><span class="lineno"> 8719</span>  <span class="comment">// read first token</span></div>
|
||
<div class="line"><a name="l08720"></a><span class="lineno"> 8720</span>  get_token();</div>
|
||
<div class="line"><a name="l08721"></a><span class="lineno"> 8721</span>  }</div>
|
||
<div class="line"><a name="l08722"></a><span class="lineno"> 8722</span>  </div>
|
||
<div class="line"><a name="l08733"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1parser.html#a14338d8f3174601c0b2b7ef28752ab17"> 8733</a></span>  <span class="keywordtype">void</span> <a class="code" href="classnlohmann_1_1detail_1_1parser.html#a14338d8f3174601c0b2b7ef28752ab17">parse</a>(<span class="keyword">const</span> <span class="keywordtype">bool</span> strict, BasicJsonType& result)</div>
|
||
<div class="line"><a name="l08734"></a><span class="lineno"> 8734</span>  {</div>
|
||
<div class="line"><a name="l08735"></a><span class="lineno"> 8735</span>  <span class="keywordflow">if</span> (callback)</div>
|
||
<div class="line"><a name="l08736"></a><span class="lineno"> 8736</span>  {</div>
|
||
<div class="line"><a name="l08737"></a><span class="lineno"> 8737</span>  <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html">json_sax_dom_callback_parser<BasicJsonType></a> sdp(result, callback, allow_exceptions);</div>
|
||
<div class="line"><a name="l08738"></a><span class="lineno"> 8738</span>  sax_parse_internal(&sdp);</div>
|
||
<div class="line"><a name="l08739"></a><span class="lineno"> 8739</span>  result.assert_invariant();</div>
|
||
<div class="line"><a name="l08740"></a><span class="lineno"> 8740</span>  </div>
|
||
<div class="line"><a name="l08741"></a><span class="lineno"> 8741</span>  <span class="comment">// in strict mode, input must be completely read</span></div>
|
||
<div class="line"><a name="l08742"></a><span class="lineno"> 8742</span>  <span class="keywordflow">if</span> (<a class="code" href="namespacenlohmann_1_1detail.html#a5a76b60b26dc8c47256a996d18d967dfa2133fd717402a7966ee88d06f9e0b792">strict</a> and (get_token() != token_type::end_of_input))</div>
|
||
<div class="line"><a name="l08743"></a><span class="lineno"> 8743</span>  {</div>
|
||
<div class="line"><a name="l08744"></a><span class="lineno"> 8744</span>  sdp.<a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#aac6e64f0b59c9150cde974e182d5ecab">parse_error</a>(m_lexer.<a class="code" href="classnlohmann_1_1detail_1_1lexer.html#abf5143501435f9f79898c1ff238c2622">get_position</a>(),</div>
|
||
<div class="line"><a name="l08745"></a><span class="lineno"> 8745</span>  m_lexer.<a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a4aef7e72e539be04e139c34872421f2a">get_token_string</a>(),</div>
|
||
<div class="line"><a name="l08746"></a><span class="lineno"> 8746</span>  <a class="code" href="classnlohmann_1_1detail_1_1parse__error.html#a137ea4d27de45d8a844fd13451d40f3d">parse_error::create</a>(101, m_lexer.<a class="code" href="classnlohmann_1_1detail_1_1lexer.html#abf5143501435f9f79898c1ff238c2622">get_position</a>(),</div>
|
||
<div class="line"><a name="l08747"></a><span class="lineno"> 8747</span>  exception_message(token_type::end_of_input, <span class="stringliteral">"value"</span>)));</div>
|
||
<div class="line"><a name="l08748"></a><span class="lineno"> 8748</span>  }</div>
|
||
<div class="line"><a name="l08749"></a><span class="lineno"> 8749</span>  </div>
|
||
<div class="line"><a name="l08750"></a><span class="lineno"> 8750</span>  <span class="comment">// in case of an error, return discarded value</span></div>
|
||
<div class="line"><a name="l08751"></a><span class="lineno"> 8751</span>  <span class="keywordflow">if</span> (sdp.<a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a167fd9bf385d3d08bcbbba8a927c0eff">is_errored</a>())</div>
|
||
<div class="line"><a name="l08752"></a><span class="lineno"> 8752</span>  {</div>
|
||
<div class="line"><a name="l08753"></a><span class="lineno"> 8753</span>  result = <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a94708897ec9db8647dfe695714c98e46">value_t::discarded</a>;</div>
|
||
<div class="line"><a name="l08754"></a><span class="lineno"> 8754</span>  <span class="keywordflow">return</span>;</div>
|
||
<div class="line"><a name="l08755"></a><span class="lineno"> 8755</span>  }</div>
|
||
<div class="line"><a name="l08756"></a><span class="lineno"> 8756</span>  </div>
|
||
<div class="line"><a name="l08757"></a><span class="lineno"> 8757</span>  <span class="comment">// set top-level value to null if it was discarded by the callback</span></div>
|
||
<div class="line"><a name="l08758"></a><span class="lineno"> 8758</span>  <span class="comment">// function</span></div>
|
||
<div class="line"><a name="l08759"></a><span class="lineno"> 8759</span>  <span class="keywordflow">if</span> (result.is_discarded())</div>
|
||
<div class="line"><a name="l08760"></a><span class="lineno"> 8760</span>  {</div>
|
||
<div class="line"><a name="l08761"></a><span class="lineno"> 8761</span>  result = <span class="keyword">nullptr</span>;</div>
|
||
<div class="line"><a name="l08762"></a><span class="lineno"> 8762</span>  }</div>
|
||
<div class="line"><a name="l08763"></a><span class="lineno"> 8763</span>  }</div>
|
||
<div class="line"><a name="l08764"></a><span class="lineno"> 8764</span>  <span class="keywordflow">else</span></div>
|
||
<div class="line"><a name="l08765"></a><span class="lineno"> 8765</span>  {</div>
|
||
<div class="line"><a name="l08766"></a><span class="lineno"> 8766</span>  <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html">json_sax_dom_parser<BasicJsonType></a> sdp(result, allow_exceptions);</div>
|
||
<div class="line"><a name="l08767"></a><span class="lineno"> 8767</span>  sax_parse_internal(&sdp);</div>
|
||
<div class="line"><a name="l08768"></a><span class="lineno"> 8768</span>  result.assert_invariant();</div>
|
||
<div class="line"><a name="l08769"></a><span class="lineno"> 8769</span>  </div>
|
||
<div class="line"><a name="l08770"></a><span class="lineno"> 8770</span>  <span class="comment">// in strict mode, input must be completely read</span></div>
|
||
<div class="line"><a name="l08771"></a><span class="lineno"> 8771</span>  <span class="keywordflow">if</span> (<a class="code" href="namespacenlohmann_1_1detail.html#a5a76b60b26dc8c47256a996d18d967dfa2133fd717402a7966ee88d06f9e0b792">strict</a> and (get_token() != token_type::end_of_input))</div>
|
||
<div class="line"><a name="l08772"></a><span class="lineno"> 8772</span>  {</div>
|
||
<div class="line"><a name="l08773"></a><span class="lineno"> 8773</span>  sdp.<a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#a7d3bf1f361ebb817c694ba45b3814fa6">parse_error</a>(m_lexer.<a class="code" href="classnlohmann_1_1detail_1_1lexer.html#abf5143501435f9f79898c1ff238c2622">get_position</a>(),</div>
|
||
<div class="line"><a name="l08774"></a><span class="lineno"> 8774</span>  m_lexer.<a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a4aef7e72e539be04e139c34872421f2a">get_token_string</a>(),</div>
|
||
<div class="line"><a name="l08775"></a><span class="lineno"> 8775</span>  <a class="code" href="classnlohmann_1_1detail_1_1parse__error.html#a137ea4d27de45d8a844fd13451d40f3d">parse_error::create</a>(101, m_lexer.<a class="code" href="classnlohmann_1_1detail_1_1lexer.html#abf5143501435f9f79898c1ff238c2622">get_position</a>(),</div>
|
||
<div class="line"><a name="l08776"></a><span class="lineno"> 8776</span>  exception_message(token_type::end_of_input, <span class="stringliteral">"value"</span>)));</div>
|
||
<div class="line"><a name="l08777"></a><span class="lineno"> 8777</span>  }</div>
|
||
<div class="line"><a name="l08778"></a><span class="lineno"> 8778</span>  </div>
|
||
<div class="line"><a name="l08779"></a><span class="lineno"> 8779</span>  <span class="comment">// in case of an error, return discarded value</span></div>
|
||
<div class="line"><a name="l08780"></a><span class="lineno"> 8780</span>  <span class="keywordflow">if</span> (sdp.<a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#ad1b9f3681fadbbb2e0127f5c8a99c662">is_errored</a>())</div>
|
||
<div class="line"><a name="l08781"></a><span class="lineno"> 8781</span>  {</div>
|
||
<div class="line"><a name="l08782"></a><span class="lineno"> 8782</span>  result = <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a94708897ec9db8647dfe695714c98e46">value_t::discarded</a>;</div>
|
||
<div class="line"><a name="l08783"></a><span class="lineno"> 8783</span>  <span class="keywordflow">return</span>;</div>
|
||
<div class="line"><a name="l08784"></a><span class="lineno"> 8784</span>  }</div>
|
||
<div class="line"><a name="l08785"></a><span class="lineno"> 8785</span>  }</div>
|
||
<div class="line"><a name="l08786"></a><span class="lineno"> 8786</span>  }</div>
|
||
<div class="line"><a name="l08787"></a><span class="lineno"> 8787</span>  </div>
|
||
<div class="line"><a name="l08794"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1parser.html#a20997b42262856935b60fc91bf05bf3f"> 8794</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1detail_1_1parser.html#a20997b42262856935b60fc91bf05bf3f">accept</a>(<span class="keyword">const</span> <span class="keywordtype">bool</span> strict = <span class="keyword">true</span>)</div>
|
||
<div class="line"><a name="l08795"></a><span class="lineno"> 8795</span>  {</div>
|
||
<div class="line"><a name="l08796"></a><span class="lineno"> 8796</span>  <a class="code" href="classnlohmann_1_1detail_1_1json__sax__acceptor.html">json_sax_acceptor<BasicJsonType></a> sax_acceptor;</div>
|
||
<div class="line"><a name="l08797"></a><span class="lineno"> 8797</span>  <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1detail_1_1parser.html#a14e34931965064b26e118eb72cbd5e25">sax_parse</a>(&sax_acceptor, <a class="code" href="namespacenlohmann_1_1detail.html#a5a76b60b26dc8c47256a996d18d967dfa2133fd717402a7966ee88d06f9e0b792">strict</a>);</div>
|
||
<div class="line"><a name="l08798"></a><span class="lineno"> 8798</span>  }</div>
|
||
<div class="line"><a name="l08799"></a><span class="lineno"> 8799</span>  </div>
|
||
<div class="line"><a name="l08800"></a><span class="lineno"> 8800</span>  <span class="keyword">template</span> <<span class="keyword">typename</span> SAX></div>
|
||
<div class="line"><a name="l08801"></a><span class="lineno"> 8801</span>  <a class="code" href="json_8hpp.html#a5338981b5ad9027c9e54b1c5597f4344">JSON_HEDLEY_NON_NULL</a>(2)</div>
|
||
<div class="line"><a name="l08802"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1parser.html#a14e34931965064b26e118eb72cbd5e25"> 8802</a></span>  bool <a class="code" href="classnlohmann_1_1detail_1_1parser.html#a14e34931965064b26e118eb72cbd5e25">sax_parse</a>(SAX* sax, const <span class="keywordtype">bool</span> strict = true)</div>
|
||
<div class="line"><a name="l08803"></a><span class="lineno"> 8803</span>  {</div>
|
||
<div class="line"><a name="l08804"></a><span class="lineno"> 8804</span>  (<a class="code" href="namespacenlohmann_1_1detail.html#a59fca69799f6b9e366710cb9043aa77d">void</a>)<a class="code" href="structnlohmann_1_1detail_1_1is__sax__static__asserts.html">detail::is_sax_static_asserts<SAX, BasicJsonType></a> {};</div>
|
||
<div class="line"><a name="l08805"></a><span class="lineno"> 8805</span>  <span class="keyword">const</span> <span class="keywordtype">bool</span> result = sax_parse_internal(sax);</div>
|
||
<div class="line"><a name="l08806"></a><span class="lineno"> 8806</span>  </div>
|
||
<div class="line"><a name="l08807"></a><span class="lineno"> 8807</span>  <span class="comment">// strict mode: next byte must be EOF</span></div>
|
||
<div class="line"><a name="l08808"></a><span class="lineno"> 8808</span>  <span class="keywordflow">if</span> (result and <a class="code" href="namespacenlohmann_1_1detail.html#a5a76b60b26dc8c47256a996d18d967dfa2133fd717402a7966ee88d06f9e0b792">strict</a> and (get_token() != token_type::end_of_input))</div>
|
||
<div class="line"><a name="l08809"></a><span class="lineno"> 8809</span>  {</div>
|
||
<div class="line"><a name="l08810"></a><span class="lineno"> 8810</span>  <span class="keywordflow">return</span> sax->parse_error(m_lexer.<a class="code" href="classnlohmann_1_1detail_1_1lexer.html#abf5143501435f9f79898c1ff238c2622">get_position</a>(),</div>
|
||
<div class="line"><a name="l08811"></a><span class="lineno"> 8811</span>  m_lexer.<a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a4aef7e72e539be04e139c34872421f2a">get_token_string</a>(),</div>
|
||
<div class="line"><a name="l08812"></a><span class="lineno"> 8812</span>  <a class="code" href="classnlohmann_1_1detail_1_1parse__error.html#a137ea4d27de45d8a844fd13451d40f3d">parse_error::create</a>(101, m_lexer.<a class="code" href="classnlohmann_1_1detail_1_1lexer.html#abf5143501435f9f79898c1ff238c2622">get_position</a>(),</div>
|
||
<div class="line"><a name="l08813"></a><span class="lineno"> 8813</span>  exception_message(token_type::end_of_input, <span class="stringliteral">"value"</span>)));</div>
|
||
<div class="line"><a name="l08814"></a><span class="lineno"> 8814</span>  }</div>
|
||
<div class="line"><a name="l08815"></a><span class="lineno"> 8815</span>  </div>
|
||
<div class="line"><a name="l08816"></a><span class="lineno"> 8816</span>  <span class="keywordflow">return</span> result;</div>
|
||
<div class="line"><a name="l08817"></a><span class="lineno"> 8817</span>  }</div>
|
||
<div class="line"><a name="l08818"></a><span class="lineno"> 8818</span>  </div>
|
||
<div class="line"><a name="l08819"></a><span class="lineno"> 8819</span>  <span class="keyword">private</span>:</div>
|
||
<div class="line"><a name="l08820"></a><span class="lineno"> 8820</span>  <span class="keyword">template</span> <<span class="keyword">typename</span> SAX></div>
|
||
<div class="line"><a name="l08821"></a><span class="lineno"> 8821</span>  <a class="code" href="json_8hpp.html#a5338981b5ad9027c9e54b1c5597f4344">JSON_HEDLEY_NON_NULL</a>(2)</div>
|
||
<div class="line"><a name="l08822"></a><span class="lineno"> 8822</span>  bool sax_parse_internal(SAX* sax)</div>
|
||
<div class="line"><a name="l08823"></a><span class="lineno"> 8823</span>  {</div>
|
||
<div class="line"><a name="l08824"></a><span class="lineno"> 8824</span>  <span class="comment">// stack to remember the hierarchy of structured values we are parsing</span></div>
|
||
<div class="line"><a name="l08825"></a><span class="lineno"> 8825</span>  <span class="comment">// true = array; false = object</span></div>
|
||
<div class="line"><a name="l08826"></a><span class="lineno"> 8826</span>  std::vector<bool> states;</div>
|
||
<div class="line"><a name="l08827"></a><span class="lineno"> 8827</span>  <span class="comment">// value to avoid a goto (see comment where set to true)</span></div>
|
||
<div class="line"><a name="l08828"></a><span class="lineno"> 8828</span>  <span class="keywordtype">bool</span> skip_to_state_evaluation = <span class="keyword">false</span>;</div>
|
||
<div class="line"><a name="l08829"></a><span class="lineno"> 8829</span>  </div>
|
||
<div class="line"><a name="l08830"></a><span class="lineno"> 8830</span>  <span class="keywordflow">while</span> (<span class="keyword">true</span>)</div>
|
||
<div class="line"><a name="l08831"></a><span class="lineno"> 8831</span>  {</div>
|
||
<div class="line"><a name="l08832"></a><span class="lineno"> 8832</span>  <span class="keywordflow">if</span> (not skip_to_state_evaluation)</div>
|
||
<div class="line"><a name="l08833"></a><span class="lineno"> 8833</span>  {</div>
|
||
<div class="line"><a name="l08834"></a><span class="lineno"> 8834</span>  <span class="comment">// invariant: get_token() was called before each iteration</span></div>
|
||
<div class="line"><a name="l08835"></a><span class="lineno"> 8835</span>  <span class="keywordflow">switch</span> (last_token)</div>
|
||
<div class="line"><a name="l08836"></a><span class="lineno"> 8836</span>  {</div>
|
||
<div class="line"><a name="l08837"></a><span class="lineno"> 8837</span>  <span class="keywordflow">case</span> token_type::begin_object:</div>
|
||
<div class="line"><a name="l08838"></a><span class="lineno"> 8838</span>  {</div>
|
||
<div class="line"><a name="l08839"></a><span class="lineno"> 8839</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not sax->start_object(std::size_t(-1))))</div>
|
||
<div class="line"><a name="l08840"></a><span class="lineno"> 8840</span>  {</div>
|
||
<div class="line"><a name="l08841"></a><span class="lineno"> 8841</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||
<div class="line"><a name="l08842"></a><span class="lineno"> 8842</span>  }</div>
|
||
<div class="line"><a name="l08843"></a><span class="lineno"> 8843</span>  </div>
|
||
<div class="line"><a name="l08844"></a><span class="lineno"> 8844</span>  <span class="comment">// closing } -> we are done</span></div>
|
||
<div class="line"><a name="l08845"></a><span class="lineno"> 8845</span>  <span class="keywordflow">if</span> (get_token() == token_type::end_object)</div>
|
||
<div class="line"><a name="l08846"></a><span class="lineno"> 8846</span>  {</div>
|
||
<div class="line"><a name="l08847"></a><span class="lineno"> 8847</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not sax->end_object()))</div>
|
||
<div class="line"><a name="l08848"></a><span class="lineno"> 8848</span>  {</div>
|
||
<div class="line"><a name="l08849"></a><span class="lineno"> 8849</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||
<div class="line"><a name="l08850"></a><span class="lineno"> 8850</span>  }</div>
|
||
<div class="line"><a name="l08851"></a><span class="lineno"> 8851</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l08852"></a><span class="lineno"> 8852</span>  }</div>
|
||
<div class="line"><a name="l08853"></a><span class="lineno"> 8853</span>  </div>
|
||
<div class="line"><a name="l08854"></a><span class="lineno"> 8854</span>  <span class="comment">// parse key</span></div>
|
||
<div class="line"><a name="l08855"></a><span class="lineno"> 8855</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(last_token != token_type::value_string))</div>
|
||
<div class="line"><a name="l08856"></a><span class="lineno"> 8856</span>  {</div>
|
||
<div class="line"><a name="l08857"></a><span class="lineno"> 8857</span>  <span class="keywordflow">return</span> sax->parse_error(m_lexer.<a class="code" href="classnlohmann_1_1detail_1_1lexer.html#abf5143501435f9f79898c1ff238c2622">get_position</a>(),</div>
|
||
<div class="line"><a name="l08858"></a><span class="lineno"> 8858</span>  m_lexer.<a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a4aef7e72e539be04e139c34872421f2a">get_token_string</a>(),</div>
|
||
<div class="line"><a name="l08859"></a><span class="lineno"> 8859</span>  <a class="code" href="classnlohmann_1_1detail_1_1parse__error.html#a137ea4d27de45d8a844fd13451d40f3d">parse_error::create</a>(101, m_lexer.<a class="code" href="classnlohmann_1_1detail_1_1lexer.html#abf5143501435f9f79898c1ff238c2622">get_position</a>(),</div>
|
||
<div class="line"><a name="l08860"></a><span class="lineno"> 8860</span>  exception_message(token_type::value_string, <span class="stringliteral">"object key"</span>)));</div>
|
||
<div class="line"><a name="l08861"></a><span class="lineno"> 8861</span>  }</div>
|
||
<div class="line"><a name="l08862"></a><span class="lineno"> 8862</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not sax->key(m_lexer.<a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a54aa290ff2f60218a8f35f1ebf81666d">get_string</a>())))</div>
|
||
<div class="line"><a name="l08863"></a><span class="lineno"> 8863</span>  {</div>
|
||
<div class="line"><a name="l08864"></a><span class="lineno"> 8864</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||
<div class="line"><a name="l08865"></a><span class="lineno"> 8865</span>  }</div>
|
||
<div class="line"><a name="l08866"></a><span class="lineno"> 8866</span>  </div>
|
||
<div class="line"><a name="l08867"></a><span class="lineno"> 8867</span>  <span class="comment">// parse separator (:)</span></div>
|
||
<div class="line"><a name="l08868"></a><span class="lineno"> 8868</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(get_token() != token_type::name_separator))</div>
|
||
<div class="line"><a name="l08869"></a><span class="lineno"> 8869</span>  {</div>
|
||
<div class="line"><a name="l08870"></a><span class="lineno"> 8870</span>  <span class="keywordflow">return</span> sax->parse_error(m_lexer.<a class="code" href="classnlohmann_1_1detail_1_1lexer.html#abf5143501435f9f79898c1ff238c2622">get_position</a>(),</div>
|
||
<div class="line"><a name="l08871"></a><span class="lineno"> 8871</span>  m_lexer.<a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a4aef7e72e539be04e139c34872421f2a">get_token_string</a>(),</div>
|
||
<div class="line"><a name="l08872"></a><span class="lineno"> 8872</span>  <a class="code" href="classnlohmann_1_1detail_1_1parse__error.html#a137ea4d27de45d8a844fd13451d40f3d">parse_error::create</a>(101, m_lexer.<a class="code" href="classnlohmann_1_1detail_1_1lexer.html#abf5143501435f9f79898c1ff238c2622">get_position</a>(),</div>
|
||
<div class="line"><a name="l08873"></a><span class="lineno"> 8873</span>  exception_message(token_type::name_separator, <span class="stringliteral">"object separator"</span>)));</div>
|
||
<div class="line"><a name="l08874"></a><span class="lineno"> 8874</span>  }</div>
|
||
<div class="line"><a name="l08875"></a><span class="lineno"> 8875</span>  </div>
|
||
<div class="line"><a name="l08876"></a><span class="lineno"> 8876</span>  <span class="comment">// remember we are now inside an object</span></div>
|
||
<div class="line"><a name="l08877"></a><span class="lineno"> 8877</span>  states.push_back(<span class="keyword">false</span>);</div>
|
||
<div class="line"><a name="l08878"></a><span class="lineno"> 8878</span>  </div>
|
||
<div class="line"><a name="l08879"></a><span class="lineno"> 8879</span>  <span class="comment">// parse values</span></div>
|
||
<div class="line"><a name="l08880"></a><span class="lineno"> 8880</span>  get_token();</div>
|
||
<div class="line"><a name="l08881"></a><span class="lineno"> 8881</span>  <span class="keywordflow">continue</span>;</div>
|
||
<div class="line"><a name="l08882"></a><span class="lineno"> 8882</span>  }</div>
|
||
<div class="line"><a name="l08883"></a><span class="lineno"> 8883</span>  </div>
|
||
<div class="line"><a name="l08884"></a><span class="lineno"> 8884</span>  <span class="keywordflow">case</span> token_type::begin_array:</div>
|
||
<div class="line"><a name="l08885"></a><span class="lineno"> 8885</span>  {</div>
|
||
<div class="line"><a name="l08886"></a><span class="lineno"> 8886</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not sax->start_array(std::size_t(-1))))</div>
|
||
<div class="line"><a name="l08887"></a><span class="lineno"> 8887</span>  {</div>
|
||
<div class="line"><a name="l08888"></a><span class="lineno"> 8888</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||
<div class="line"><a name="l08889"></a><span class="lineno"> 8889</span>  }</div>
|
||
<div class="line"><a name="l08890"></a><span class="lineno"> 8890</span>  </div>
|
||
<div class="line"><a name="l08891"></a><span class="lineno"> 8891</span>  <span class="comment">// closing ] -> we are done</span></div>
|
||
<div class="line"><a name="l08892"></a><span class="lineno"> 8892</span>  <span class="keywordflow">if</span> (get_token() == token_type::end_array)</div>
|
||
<div class="line"><a name="l08893"></a><span class="lineno"> 8893</span>  {</div>
|
||
<div class="line"><a name="l08894"></a><span class="lineno"> 8894</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not sax->end_array()))</div>
|
||
<div class="line"><a name="l08895"></a><span class="lineno"> 8895</span>  {</div>
|
||
<div class="line"><a name="l08896"></a><span class="lineno"> 8896</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||
<div class="line"><a name="l08897"></a><span class="lineno"> 8897</span>  }</div>
|
||
<div class="line"><a name="l08898"></a><span class="lineno"> 8898</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l08899"></a><span class="lineno"> 8899</span>  }</div>
|
||
<div class="line"><a name="l08900"></a><span class="lineno"> 8900</span>  </div>
|
||
<div class="line"><a name="l08901"></a><span class="lineno"> 8901</span>  <span class="comment">// remember we are now inside an array</span></div>
|
||
<div class="line"><a name="l08902"></a><span class="lineno"> 8902</span>  states.push_back(<span class="keyword">true</span>);</div>
|
||
<div class="line"><a name="l08903"></a><span class="lineno"> 8903</span>  </div>
|
||
<div class="line"><a name="l08904"></a><span class="lineno"> 8904</span>  <span class="comment">// parse values (no need to call get_token)</span></div>
|
||
<div class="line"><a name="l08905"></a><span class="lineno"> 8905</span>  <span class="keywordflow">continue</span>;</div>
|
||
<div class="line"><a name="l08906"></a><span class="lineno"> 8906</span>  }</div>
|
||
<div class="line"><a name="l08907"></a><span class="lineno"> 8907</span>  </div>
|
||
<div class="line"><a name="l08908"></a><span class="lineno"> 8908</span>  <span class="keywordflow">case</span> token_type::value_float:</div>
|
||
<div class="line"><a name="l08909"></a><span class="lineno"> 8909</span>  {</div>
|
||
<div class="line"><a name="l08910"></a><span class="lineno"> 8910</span>  <span class="keyword">const</span> <span class="keyword">auto</span> res = m_lexer.<a class="code" href="classnlohmann_1_1detail_1_1lexer.html#ac013af35a21e9387993b19da5b3e0ae2">get_number_float</a>();</div>
|
||
<div class="line"><a name="l08911"></a><span class="lineno"> 8911</span>  </div>
|
||
<div class="line"><a name="l08912"></a><span class="lineno"> 8912</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not std::isfinite(res)))</div>
|
||
<div class="line"><a name="l08913"></a><span class="lineno"> 8913</span>  {</div>
|
||
<div class="line"><a name="l08914"></a><span class="lineno"> 8914</span>  <span class="keywordflow">return</span> sax->parse_error(m_lexer.<a class="code" href="classnlohmann_1_1detail_1_1lexer.html#abf5143501435f9f79898c1ff238c2622">get_position</a>(),</div>
|
||
<div class="line"><a name="l08915"></a><span class="lineno"> 8915</span>  m_lexer.<a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a4aef7e72e539be04e139c34872421f2a">get_token_string</a>(),</div>
|
||
<div class="line"><a name="l08916"></a><span class="lineno"> 8916</span>  <a class="code" href="classnlohmann_1_1detail_1_1out__of__range.html#a3f6d82a6f967c4728a1ec735a7867073">out_of_range::create</a>(406, <span class="stringliteral">"number overflow parsing '"</span> + m_lexer.<a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a4aef7e72e539be04e139c34872421f2a">get_token_string</a>() + <span class="stringliteral">"'"</span>));</div>
|
||
<div class="line"><a name="l08917"></a><span class="lineno"> 8917</span>  }</div>
|
||
<div class="line"><a name="l08918"></a><span class="lineno"> 8918</span>  </div>
|
||
<div class="line"><a name="l08919"></a><span class="lineno"> 8919</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not sax->number_float(res, m_lexer.<a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a54aa290ff2f60218a8f35f1ebf81666d">get_string</a>())))</div>
|
||
<div class="line"><a name="l08920"></a><span class="lineno"> 8920</span>  {</div>
|
||
<div class="line"><a name="l08921"></a><span class="lineno"> 8921</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||
<div class="line"><a name="l08922"></a><span class="lineno"> 8922</span>  }</div>
|
||
<div class="line"><a name="l08923"></a><span class="lineno"> 8923</span>  </div>
|
||
<div class="line"><a name="l08924"></a><span class="lineno"> 8924</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l08925"></a><span class="lineno"> 8925</span>  }</div>
|
||
<div class="line"><a name="l08926"></a><span class="lineno"> 8926</span>  </div>
|
||
<div class="line"><a name="l08927"></a><span class="lineno"> 8927</span>  <span class="keywordflow">case</span> token_type::literal_false:</div>
|
||
<div class="line"><a name="l08928"></a><span class="lineno"> 8928</span>  {</div>
|
||
<div class="line"><a name="l08929"></a><span class="lineno"> 8929</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not sax->boolean(<span class="keyword">false</span>)))</div>
|
||
<div class="line"><a name="l08930"></a><span class="lineno"> 8930</span>  {</div>
|
||
<div class="line"><a name="l08931"></a><span class="lineno"> 8931</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||
<div class="line"><a name="l08932"></a><span class="lineno"> 8932</span>  }</div>
|
||
<div class="line"><a name="l08933"></a><span class="lineno"> 8933</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l08934"></a><span class="lineno"> 8934</span>  }</div>
|
||
<div class="line"><a name="l08935"></a><span class="lineno"> 8935</span>  </div>
|
||
<div class="line"><a name="l08936"></a><span class="lineno"> 8936</span>  <span class="keywordflow">case</span> token_type::literal_null:</div>
|
||
<div class="line"><a name="l08937"></a><span class="lineno"> 8937</span>  {</div>
|
||
<div class="line"><a name="l08938"></a><span class="lineno"> 8938</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not sax->null()))</div>
|
||
<div class="line"><a name="l08939"></a><span class="lineno"> 8939</span>  {</div>
|
||
<div class="line"><a name="l08940"></a><span class="lineno"> 8940</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||
<div class="line"><a name="l08941"></a><span class="lineno"> 8941</span>  }</div>
|
||
<div class="line"><a name="l08942"></a><span class="lineno"> 8942</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l08943"></a><span class="lineno"> 8943</span>  }</div>
|
||
<div class="line"><a name="l08944"></a><span class="lineno"> 8944</span>  </div>
|
||
<div class="line"><a name="l08945"></a><span class="lineno"> 8945</span>  <span class="keywordflow">case</span> token_type::literal_true:</div>
|
||
<div class="line"><a name="l08946"></a><span class="lineno"> 8946</span>  {</div>
|
||
<div class="line"><a name="l08947"></a><span class="lineno"> 8947</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not sax->boolean(<span class="keyword">true</span>)))</div>
|
||
<div class="line"><a name="l08948"></a><span class="lineno"> 8948</span>  {</div>
|
||
<div class="line"><a name="l08949"></a><span class="lineno"> 8949</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||
<div class="line"><a name="l08950"></a><span class="lineno"> 8950</span>  }</div>
|
||
<div class="line"><a name="l08951"></a><span class="lineno"> 8951</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l08952"></a><span class="lineno"> 8952</span>  }</div>
|
||
<div class="line"><a name="l08953"></a><span class="lineno"> 8953</span>  </div>
|
||
<div class="line"><a name="l08954"></a><span class="lineno"> 8954</span>  <span class="keywordflow">case</span> token_type::value_integer:</div>
|
||
<div class="line"><a name="l08955"></a><span class="lineno"> 8955</span>  {</div>
|
||
<div class="line"><a name="l08956"></a><span class="lineno"> 8956</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not sax->number_integer(m_lexer.<a class="code" href="classnlohmann_1_1detail_1_1lexer.html#afa338d17c0a7e834c73104258a2c8ced">get_number_integer</a>())))</div>
|
||
<div class="line"><a name="l08957"></a><span class="lineno"> 8957</span>  {</div>
|
||
<div class="line"><a name="l08958"></a><span class="lineno"> 8958</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||
<div class="line"><a name="l08959"></a><span class="lineno"> 8959</span>  }</div>
|
||
<div class="line"><a name="l08960"></a><span class="lineno"> 8960</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l08961"></a><span class="lineno"> 8961</span>  }</div>
|
||
<div class="line"><a name="l08962"></a><span class="lineno"> 8962</span>  </div>
|
||
<div class="line"><a name="l08963"></a><span class="lineno"> 8963</span>  <span class="keywordflow">case</span> token_type::value_string:</div>
|
||
<div class="line"><a name="l08964"></a><span class="lineno"> 8964</span>  {</div>
|
||
<div class="line"><a name="l08965"></a><span class="lineno"> 8965</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not sax->string(m_lexer.<a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a54aa290ff2f60218a8f35f1ebf81666d">get_string</a>())))</div>
|
||
<div class="line"><a name="l08966"></a><span class="lineno"> 8966</span>  {</div>
|
||
<div class="line"><a name="l08967"></a><span class="lineno"> 8967</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||
<div class="line"><a name="l08968"></a><span class="lineno"> 8968</span>  }</div>
|
||
<div class="line"><a name="l08969"></a><span class="lineno"> 8969</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l08970"></a><span class="lineno"> 8970</span>  }</div>
|
||
<div class="line"><a name="l08971"></a><span class="lineno"> 8971</span>  </div>
|
||
<div class="line"><a name="l08972"></a><span class="lineno"> 8972</span>  <span class="keywordflow">case</span> token_type::value_unsigned:</div>
|
||
<div class="line"><a name="l08973"></a><span class="lineno"> 8973</span>  {</div>
|
||
<div class="line"><a name="l08974"></a><span class="lineno"> 8974</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not sax->number_unsigned(m_lexer.<a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a56640fb92293e0c17742ca3c814d74d6">get_number_unsigned</a>())))</div>
|
||
<div class="line"><a name="l08975"></a><span class="lineno"> 8975</span>  {</div>
|
||
<div class="line"><a name="l08976"></a><span class="lineno"> 8976</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||
<div class="line"><a name="l08977"></a><span class="lineno"> 8977</span>  }</div>
|
||
<div class="line"><a name="l08978"></a><span class="lineno"> 8978</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l08979"></a><span class="lineno"> 8979</span>  }</div>
|
||
<div class="line"><a name="l08980"></a><span class="lineno"> 8980</span>  </div>
|
||
<div class="line"><a name="l08981"></a><span class="lineno"> 8981</span>  <span class="keywordflow">case</span> token_type::parse_error:</div>
|
||
<div class="line"><a name="l08982"></a><span class="lineno"> 8982</span>  {</div>
|
||
<div class="line"><a name="l08983"></a><span class="lineno"> 8983</span>  <span class="comment">// using "uninitialized" to avoid "expected" message</span></div>
|
||
<div class="line"><a name="l08984"></a><span class="lineno"> 8984</span>  <span class="keywordflow">return</span> sax->parse_error(m_lexer.<a class="code" href="classnlohmann_1_1detail_1_1lexer.html#abf5143501435f9f79898c1ff238c2622">get_position</a>(),</div>
|
||
<div class="line"><a name="l08985"></a><span class="lineno"> 8985</span>  m_lexer.<a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a4aef7e72e539be04e139c34872421f2a">get_token_string</a>(),</div>
|
||
<div class="line"><a name="l08986"></a><span class="lineno"> 8986</span>  <a class="code" href="classnlohmann_1_1detail_1_1parse__error.html#a137ea4d27de45d8a844fd13451d40f3d">parse_error::create</a>(101, m_lexer.<a class="code" href="classnlohmann_1_1detail_1_1lexer.html#abf5143501435f9f79898c1ff238c2622">get_position</a>(),</div>
|
||
<div class="line"><a name="l08987"></a><span class="lineno"> 8987</span>  exception_message(token_type::uninitialized, <span class="stringliteral">"value"</span>)));</div>
|
||
<div class="line"><a name="l08988"></a><span class="lineno"> 8988</span>  }</div>
|
||
<div class="line"><a name="l08989"></a><span class="lineno"> 8989</span>  </div>
|
||
<div class="line"><a name="l08990"></a><span class="lineno"> 8990</span>  <span class="keywordflow">default</span>: <span class="comment">// the last token was unexpected</span></div>
|
||
<div class="line"><a name="l08991"></a><span class="lineno"> 8991</span>  {</div>
|
||
<div class="line"><a name="l08992"></a><span class="lineno"> 8992</span>  <span class="keywordflow">return</span> sax->parse_error(m_lexer.<a class="code" href="classnlohmann_1_1detail_1_1lexer.html#abf5143501435f9f79898c1ff238c2622">get_position</a>(),</div>
|
||
<div class="line"><a name="l08993"></a><span class="lineno"> 8993</span>  m_lexer.<a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a4aef7e72e539be04e139c34872421f2a">get_token_string</a>(),</div>
|
||
<div class="line"><a name="l08994"></a><span class="lineno"> 8994</span>  <a class="code" href="classnlohmann_1_1detail_1_1parse__error.html#a137ea4d27de45d8a844fd13451d40f3d">parse_error::create</a>(101, m_lexer.<a class="code" href="classnlohmann_1_1detail_1_1lexer.html#abf5143501435f9f79898c1ff238c2622">get_position</a>(),</div>
|
||
<div class="line"><a name="l08995"></a><span class="lineno"> 8995</span>  exception_message(token_type::literal_or_value, <span class="stringliteral">"value"</span>)));</div>
|
||
<div class="line"><a name="l08996"></a><span class="lineno"> 8996</span>  }</div>
|
||
<div class="line"><a name="l08997"></a><span class="lineno"> 8997</span>  }</div>
|
||
<div class="line"><a name="l08998"></a><span class="lineno"> 8998</span>  }</div>
|
||
<div class="line"><a name="l08999"></a><span class="lineno"> 8999</span>  <span class="keywordflow">else</span></div>
|
||
<div class="line"><a name="l09000"></a><span class="lineno"> 9000</span>  {</div>
|
||
<div class="line"><a name="l09001"></a><span class="lineno"> 9001</span>  skip_to_state_evaluation = <span class="keyword">false</span>;</div>
|
||
<div class="line"><a name="l09002"></a><span class="lineno"> 9002</span>  }</div>
|
||
<div class="line"><a name="l09003"></a><span class="lineno"> 9003</span>  </div>
|
||
<div class="line"><a name="l09004"></a><span class="lineno"> 9004</span>  <span class="comment">// we reached this line after we successfully parsed a value</span></div>
|
||
<div class="line"><a name="l09005"></a><span class="lineno"> 9005</span>  <span class="keywordflow">if</span> (states.empty())</div>
|
||
<div class="line"><a name="l09006"></a><span class="lineno"> 9006</span>  {</div>
|
||
<div class="line"><a name="l09007"></a><span class="lineno"> 9007</span>  <span class="comment">// empty stack: we reached the end of the hierarchy: done</span></div>
|
||
<div class="line"><a name="l09008"></a><span class="lineno"> 9008</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
||
<div class="line"><a name="l09009"></a><span class="lineno"> 9009</span>  }</div>
|
||
<div class="line"><a name="l09010"></a><span class="lineno"> 9010</span>  </div>
|
||
<div class="line"><a name="l09011"></a><span class="lineno"> 9011</span>  <span class="keywordflow">if</span> (states.back()) <span class="comment">// array</span></div>
|
||
<div class="line"><a name="l09012"></a><span class="lineno"> 9012</span>  {</div>
|
||
<div class="line"><a name="l09013"></a><span class="lineno"> 9013</span>  <span class="comment">// comma -> next value</span></div>
|
||
<div class="line"><a name="l09014"></a><span class="lineno"> 9014</span>  <span class="keywordflow">if</span> (get_token() == token_type::value_separator)</div>
|
||
<div class="line"><a name="l09015"></a><span class="lineno"> 9015</span>  {</div>
|
||
<div class="line"><a name="l09016"></a><span class="lineno"> 9016</span>  <span class="comment">// parse a new value</span></div>
|
||
<div class="line"><a name="l09017"></a><span class="lineno"> 9017</span>  get_token();</div>
|
||
<div class="line"><a name="l09018"></a><span class="lineno"> 9018</span>  <span class="keywordflow">continue</span>;</div>
|
||
<div class="line"><a name="l09019"></a><span class="lineno"> 9019</span>  }</div>
|
||
<div class="line"><a name="l09020"></a><span class="lineno"> 9020</span>  </div>
|
||
<div class="line"><a name="l09021"></a><span class="lineno"> 9021</span>  <span class="comment">// closing ]</span></div>
|
||
<div class="line"><a name="l09022"></a><span class="lineno"> 9022</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a355f2770653ff7bdd5c74b204b5a3ad0">JSON_HEDLEY_LIKELY</a>(last_token == token_type::end_array))</div>
|
||
<div class="line"><a name="l09023"></a><span class="lineno"> 9023</span>  {</div>
|
||
<div class="line"><a name="l09024"></a><span class="lineno"> 9024</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not sax->end_array()))</div>
|
||
<div class="line"><a name="l09025"></a><span class="lineno"> 9025</span>  {</div>
|
||
<div class="line"><a name="l09026"></a><span class="lineno"> 9026</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||
<div class="line"><a name="l09027"></a><span class="lineno"> 9027</span>  }</div>
|
||
<div class="line"><a name="l09028"></a><span class="lineno"> 9028</span>  </div>
|
||
<div class="line"><a name="l09029"></a><span class="lineno"> 9029</span>  <span class="comment">// We are done with this array. Before we can parse a</span></div>
|
||
<div class="line"><a name="l09030"></a><span class="lineno"> 9030</span>  <span class="comment">// new value, we need to evaluate the new state first.</span></div>
|
||
<div class="line"><a name="l09031"></a><span class="lineno"> 9031</span>  <span class="comment">// By setting skip_to_state_evaluation to false, we</span></div>
|
||
<div class="line"><a name="l09032"></a><span class="lineno"> 9032</span>  <span class="comment">// are effectively jumping to the beginning of this if.</span></div>
|
||
<div class="line"><a name="l09033"></a><span class="lineno"> 9033</span>  assert(not states.empty());</div>
|
||
<div class="line"><a name="l09034"></a><span class="lineno"> 9034</span>  states.pop_back();</div>
|
||
<div class="line"><a name="l09035"></a><span class="lineno"> 9035</span>  skip_to_state_evaluation = <span class="keyword">true</span>;</div>
|
||
<div class="line"><a name="l09036"></a><span class="lineno"> 9036</span>  <span class="keywordflow">continue</span>;</div>
|
||
<div class="line"><a name="l09037"></a><span class="lineno"> 9037</span>  }</div>
|
||
<div class="line"><a name="l09038"></a><span class="lineno"> 9038</span>  </div>
|
||
<div class="line"><a name="l09039"></a><span class="lineno"> 9039</span>  <span class="keywordflow">return</span> sax->parse_error(m_lexer.<a class="code" href="classnlohmann_1_1detail_1_1lexer.html#abf5143501435f9f79898c1ff238c2622">get_position</a>(),</div>
|
||
<div class="line"><a name="l09040"></a><span class="lineno"> 9040</span>  m_lexer.<a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a4aef7e72e539be04e139c34872421f2a">get_token_string</a>(),</div>
|
||
<div class="line"><a name="l09041"></a><span class="lineno"> 9041</span>  <a class="code" href="classnlohmann_1_1detail_1_1parse__error.html#a137ea4d27de45d8a844fd13451d40f3d">parse_error::create</a>(101, m_lexer.<a class="code" href="classnlohmann_1_1detail_1_1lexer.html#abf5143501435f9f79898c1ff238c2622">get_position</a>(),</div>
|
||
<div class="line"><a name="l09042"></a><span class="lineno"> 9042</span>  exception_message(token_type::end_array, <span class="stringliteral">"array"</span>)));</div>
|
||
<div class="line"><a name="l09043"></a><span class="lineno"> 9043</span>  }</div>
|
||
<div class="line"><a name="l09044"></a><span class="lineno"> 9044</span>  <span class="keywordflow">else</span> <span class="comment">// object</span></div>
|
||
<div class="line"><a name="l09045"></a><span class="lineno"> 9045</span>  {</div>
|
||
<div class="line"><a name="l09046"></a><span class="lineno"> 9046</span>  <span class="comment">// comma -> next value</span></div>
|
||
<div class="line"><a name="l09047"></a><span class="lineno"> 9047</span>  <span class="keywordflow">if</span> (get_token() == token_type::value_separator)</div>
|
||
<div class="line"><a name="l09048"></a><span class="lineno"> 9048</span>  {</div>
|
||
<div class="line"><a name="l09049"></a><span class="lineno"> 9049</span>  <span class="comment">// parse key</span></div>
|
||
<div class="line"><a name="l09050"></a><span class="lineno"> 9050</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(get_token() != token_type::value_string))</div>
|
||
<div class="line"><a name="l09051"></a><span class="lineno"> 9051</span>  {</div>
|
||
<div class="line"><a name="l09052"></a><span class="lineno"> 9052</span>  <span class="keywordflow">return</span> sax->parse_error(m_lexer.<a class="code" href="classnlohmann_1_1detail_1_1lexer.html#abf5143501435f9f79898c1ff238c2622">get_position</a>(),</div>
|
||
<div class="line"><a name="l09053"></a><span class="lineno"> 9053</span>  m_lexer.<a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a4aef7e72e539be04e139c34872421f2a">get_token_string</a>(),</div>
|
||
<div class="line"><a name="l09054"></a><span class="lineno"> 9054</span>  <a class="code" href="classnlohmann_1_1detail_1_1parse__error.html#a137ea4d27de45d8a844fd13451d40f3d">parse_error::create</a>(101, m_lexer.<a class="code" href="classnlohmann_1_1detail_1_1lexer.html#abf5143501435f9f79898c1ff238c2622">get_position</a>(),</div>
|
||
<div class="line"><a name="l09055"></a><span class="lineno"> 9055</span>  exception_message(token_type::value_string, <span class="stringliteral">"object key"</span>)));</div>
|
||
<div class="line"><a name="l09056"></a><span class="lineno"> 9056</span>  }</div>
|
||
<div class="line"><a name="l09057"></a><span class="lineno"> 9057</span>  </div>
|
||
<div class="line"><a name="l09058"></a><span class="lineno"> 9058</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not sax->key(m_lexer.<a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a54aa290ff2f60218a8f35f1ebf81666d">get_string</a>())))</div>
|
||
<div class="line"><a name="l09059"></a><span class="lineno"> 9059</span>  {</div>
|
||
<div class="line"><a name="l09060"></a><span class="lineno"> 9060</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||
<div class="line"><a name="l09061"></a><span class="lineno"> 9061</span>  }</div>
|
||
<div class="line"><a name="l09062"></a><span class="lineno"> 9062</span>  </div>
|
||
<div class="line"><a name="l09063"></a><span class="lineno"> 9063</span>  <span class="comment">// parse separator (:)</span></div>
|
||
<div class="line"><a name="l09064"></a><span class="lineno"> 9064</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(get_token() != token_type::name_separator))</div>
|
||
<div class="line"><a name="l09065"></a><span class="lineno"> 9065</span>  {</div>
|
||
<div class="line"><a name="l09066"></a><span class="lineno"> 9066</span>  <span class="keywordflow">return</span> sax->parse_error(m_lexer.<a class="code" href="classnlohmann_1_1detail_1_1lexer.html#abf5143501435f9f79898c1ff238c2622">get_position</a>(),</div>
|
||
<div class="line"><a name="l09067"></a><span class="lineno"> 9067</span>  m_lexer.<a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a4aef7e72e539be04e139c34872421f2a">get_token_string</a>(),</div>
|
||
<div class="line"><a name="l09068"></a><span class="lineno"> 9068</span>  <a class="code" href="classnlohmann_1_1detail_1_1parse__error.html#a137ea4d27de45d8a844fd13451d40f3d">parse_error::create</a>(101, m_lexer.<a class="code" href="classnlohmann_1_1detail_1_1lexer.html#abf5143501435f9f79898c1ff238c2622">get_position</a>(),</div>
|
||
<div class="line"><a name="l09069"></a><span class="lineno"> 9069</span>  exception_message(token_type::name_separator, <span class="stringliteral">"object separator"</span>)));</div>
|
||
<div class="line"><a name="l09070"></a><span class="lineno"> 9070</span>  }</div>
|
||
<div class="line"><a name="l09071"></a><span class="lineno"> 9071</span>  </div>
|
||
<div class="line"><a name="l09072"></a><span class="lineno"> 9072</span>  <span class="comment">// parse values</span></div>
|
||
<div class="line"><a name="l09073"></a><span class="lineno"> 9073</span>  get_token();</div>
|
||
<div class="line"><a name="l09074"></a><span class="lineno"> 9074</span>  <span class="keywordflow">continue</span>;</div>
|
||
<div class="line"><a name="l09075"></a><span class="lineno"> 9075</span>  }</div>
|
||
<div class="line"><a name="l09076"></a><span class="lineno"> 9076</span>  </div>
|
||
<div class="line"><a name="l09077"></a><span class="lineno"> 9077</span>  <span class="comment">// closing }</span></div>
|
||
<div class="line"><a name="l09078"></a><span class="lineno"> 9078</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a355f2770653ff7bdd5c74b204b5a3ad0">JSON_HEDLEY_LIKELY</a>(last_token == token_type::end_object))</div>
|
||
<div class="line"><a name="l09079"></a><span class="lineno"> 9079</span>  {</div>
|
||
<div class="line"><a name="l09080"></a><span class="lineno"> 9080</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not sax->end_object()))</div>
|
||
<div class="line"><a name="l09081"></a><span class="lineno"> 9081</span>  {</div>
|
||
<div class="line"><a name="l09082"></a><span class="lineno"> 9082</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||
<div class="line"><a name="l09083"></a><span class="lineno"> 9083</span>  }</div>
|
||
<div class="line"><a name="l09084"></a><span class="lineno"> 9084</span>  </div>
|
||
<div class="line"><a name="l09085"></a><span class="lineno"> 9085</span>  <span class="comment">// We are done with this object. Before we can parse a</span></div>
|
||
<div class="line"><a name="l09086"></a><span class="lineno"> 9086</span>  <span class="comment">// new value, we need to evaluate the new state first.</span></div>
|
||
<div class="line"><a name="l09087"></a><span class="lineno"> 9087</span>  <span class="comment">// By setting skip_to_state_evaluation to false, we</span></div>
|
||
<div class="line"><a name="l09088"></a><span class="lineno"> 9088</span>  <span class="comment">// are effectively jumping to the beginning of this if.</span></div>
|
||
<div class="line"><a name="l09089"></a><span class="lineno"> 9089</span>  assert(not states.empty());</div>
|
||
<div class="line"><a name="l09090"></a><span class="lineno"> 9090</span>  states.pop_back();</div>
|
||
<div class="line"><a name="l09091"></a><span class="lineno"> 9091</span>  skip_to_state_evaluation = <span class="keyword">true</span>;</div>
|
||
<div class="line"><a name="l09092"></a><span class="lineno"> 9092</span>  <span class="keywordflow">continue</span>;</div>
|
||
<div class="line"><a name="l09093"></a><span class="lineno"> 9093</span>  }</div>
|
||
<div class="line"><a name="l09094"></a><span class="lineno"> 9094</span>  </div>
|
||
<div class="line"><a name="l09095"></a><span class="lineno"> 9095</span>  <span class="keywordflow">return</span> sax->parse_error(m_lexer.<a class="code" href="classnlohmann_1_1detail_1_1lexer.html#abf5143501435f9f79898c1ff238c2622">get_position</a>(),</div>
|
||
<div class="line"><a name="l09096"></a><span class="lineno"> 9096</span>  m_lexer.<a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a4aef7e72e539be04e139c34872421f2a">get_token_string</a>(),</div>
|
||
<div class="line"><a name="l09097"></a><span class="lineno"> 9097</span>  <a class="code" href="classnlohmann_1_1detail_1_1parse__error.html#a137ea4d27de45d8a844fd13451d40f3d">parse_error::create</a>(101, m_lexer.<a class="code" href="classnlohmann_1_1detail_1_1lexer.html#abf5143501435f9f79898c1ff238c2622">get_position</a>(),</div>
|
||
<div class="line"><a name="l09098"></a><span class="lineno"> 9098</span>  exception_message(token_type::end_object, <span class="stringliteral">"object"</span>)));</div>
|
||
<div class="line"><a name="l09099"></a><span class="lineno"> 9099</span>  }</div>
|
||
<div class="line"><a name="l09100"></a><span class="lineno"> 9100</span>  }</div>
|
||
<div class="line"><a name="l09101"></a><span class="lineno"> 9101</span>  }</div>
|
||
<div class="line"><a name="l09102"></a><span class="lineno"> 9102</span>  </div>
|
||
<div class="line"><a name="l09104"></a><span class="lineno"> 9104</span>  token_type get_token()</div>
|
||
<div class="line"><a name="l09105"></a><span class="lineno"> 9105</span>  {</div>
|
||
<div class="line"><a name="l09106"></a><span class="lineno"> 9106</span>  <span class="keywordflow">return</span> last_token = m_lexer.<a class="code" href="classnlohmann_1_1detail_1_1lexer.html#aac3041cd2b9291e64fee38db422863c9">scan</a>();</div>
|
||
<div class="line"><a name="l09107"></a><span class="lineno"> 9107</span>  }</div>
|
||
<div class="line"><a name="l09108"></a><span class="lineno"> 9108</span>  </div>
|
||
<div class="line"><a name="l09109"></a><span class="lineno"> 9109</span>  std::string exception_message(<span class="keyword">const</span> token_type expected, <span class="keyword">const</span> std::string& context)</div>
|
||
<div class="line"><a name="l09110"></a><span class="lineno"> 9110</span>  {</div>
|
||
<div class="line"><a name="l09111"></a><span class="lineno"> 9111</span>  std::string error_msg = <span class="stringliteral">"syntax error "</span>;</div>
|
||
<div class="line"><a name="l09112"></a><span class="lineno"> 9112</span>  </div>
|
||
<div class="line"><a name="l09113"></a><span class="lineno"> 9113</span>  <span class="keywordflow">if</span> (not context.empty())</div>
|
||
<div class="line"><a name="l09114"></a><span class="lineno"> 9114</span>  {</div>
|
||
<div class="line"><a name="l09115"></a><span class="lineno"> 9115</span>  error_msg += <span class="stringliteral">"while parsing "</span> + context + <span class="stringliteral">" "</span>;</div>
|
||
<div class="line"><a name="l09116"></a><span class="lineno"> 9116</span>  }</div>
|
||
<div class="line"><a name="l09117"></a><span class="lineno"> 9117</span>  </div>
|
||
<div class="line"><a name="l09118"></a><span class="lineno"> 9118</span>  error_msg += <span class="stringliteral">"- "</span>;</div>
|
||
<div class="line"><a name="l09119"></a><span class="lineno"> 9119</span>  </div>
|
||
<div class="line"><a name="l09120"></a><span class="lineno"> 9120</span>  <span class="keywordflow">if</span> (last_token == token_type::parse_error)</div>
|
||
<div class="line"><a name="l09121"></a><span class="lineno"> 9121</span>  {</div>
|
||
<div class="line"><a name="l09122"></a><span class="lineno"> 9122</span>  error_msg += std::string(m_lexer.<a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a14cf32c36b043db47510ae183d38ce5b">get_error_message</a>()) + <span class="stringliteral">"; last read: '"</span> +</div>
|
||
<div class="line"><a name="l09123"></a><span class="lineno"> 9123</span>  m_lexer.<a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a4aef7e72e539be04e139c34872421f2a">get_token_string</a>() + <span class="stringliteral">"'"</span>;</div>
|
||
<div class="line"><a name="l09124"></a><span class="lineno"> 9124</span>  }</div>
|
||
<div class="line"><a name="l09125"></a><span class="lineno"> 9125</span>  <span class="keywordflow">else</span></div>
|
||
<div class="line"><a name="l09126"></a><span class="lineno"> 9126</span>  {</div>
|
||
<div class="line"><a name="l09127"></a><span class="lineno"> 9127</span>  error_msg += <span class="stringliteral">"unexpected "</span> + std::string(<a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a06f5e2129cffcc72eee84d88e126e3e3">lexer_t::token_type_name</a>(last_token));</div>
|
||
<div class="line"><a name="l09128"></a><span class="lineno"> 9128</span>  }</div>
|
||
<div class="line"><a name="l09129"></a><span class="lineno"> 9129</span>  </div>
|
||
<div class="line"><a name="l09130"></a><span class="lineno"> 9130</span>  <span class="keywordflow">if</span> (expected != token_type::uninitialized)</div>
|
||
<div class="line"><a name="l09131"></a><span class="lineno"> 9131</span>  {</div>
|
||
<div class="line"><a name="l09132"></a><span class="lineno"> 9132</span>  error_msg += <span class="stringliteral">"; expected "</span> + std::string(<a class="code" href="classnlohmann_1_1detail_1_1lexer.html#a06f5e2129cffcc72eee84d88e126e3e3">lexer_t::token_type_name</a>(expected));</div>
|
||
<div class="line"><a name="l09133"></a><span class="lineno"> 9133</span>  }</div>
|
||
<div class="line"><a name="l09134"></a><span class="lineno"> 9134</span>  </div>
|
||
<div class="line"><a name="l09135"></a><span class="lineno"> 9135</span>  <span class="keywordflow">return</span> error_msg;</div>
|
||
<div class="line"><a name="l09136"></a><span class="lineno"> 9136</span>  }</div>
|
||
<div class="line"><a name="l09137"></a><span class="lineno"> 9137</span>  </div>
|
||
<div class="line"><a name="l09138"></a><span class="lineno"> 9138</span>  <span class="keyword">private</span>:</div>
|
||
<div class="line"><a name="l09140"></a><span class="lineno"> 9140</span>  <span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1parser.html#ad250ad4f2b4af4a497e727c963162ff1">parser_callback_t</a> callback = <span class="keyword">nullptr</span>;</div>
|
||
<div class="line"><a name="l09142"></a><span class="lineno"> 9142</span>  token_type last_token = token_type::uninitialized;</div>
|
||
<div class="line"><a name="l09144"></a><span class="lineno"> 9144</span>  lexer_t m_lexer;</div>
|
||
<div class="line"><a name="l09146"></a><span class="lineno"> 9146</span>  <span class="keyword">const</span> <span class="keywordtype">bool</span> allow_exceptions = <span class="keyword">true</span>;</div>
|
||
<div class="line"><a name="l09147"></a><span class="lineno"> 9147</span> };</div>
|
||
<div class="line"><a name="l09148"></a><span class="lineno"> 9148</span> } <span class="comment">// namespace detail</span></div>
|
||
<div class="line"><a name="l09149"></a><span class="lineno"> 9149</span> } <span class="comment">// namespace nlohmann</span></div>
|
||
<div class="line"><a name="l09150"></a><span class="lineno"> 9150</span>  </div>
|
||
<div class="line"><a name="l09151"></a><span class="lineno"> 9151</span> <span class="comment">// #include <nlohmann/detail/iterators/internal_iterator.hpp></span></div>
|
||
<div class="line"><a name="l09152"></a><span class="lineno"> 9152</span>  </div>
|
||
<div class="line"><a name="l09153"></a><span class="lineno"> 9153</span>  </div>
|
||
<div class="line"><a name="l09154"></a><span class="lineno"> 9154</span> <span class="comment">// #include <nlohmann/detail/iterators/primitive_iterator.hpp></span></div>
|
||
<div class="line"><a name="l09155"></a><span class="lineno"> 9155</span>  </div>
|
||
<div class="line"><a name="l09156"></a><span class="lineno"> 9156</span>  </div>
|
||
<div class="line"><a name="l09157"></a><span class="lineno"> 9157</span> <span class="preprocessor">#include <cstddef></span> <span class="comment">// ptrdiff_t</span></div>
|
||
<div class="line"><a name="l09158"></a><span class="lineno"> 9158</span> <span class="preprocessor">#include <limits></span> <span class="comment">// numeric_limits</span></div>
|
||
<div class="line"><a name="l09159"></a><span class="lineno"> 9159</span>  </div>
|
||
<div class="line"><a name="l09160"></a><span class="lineno"> 9160</span> <span class="keyword">namespace </span><a class="code" href="namespacenlohmann.html">nlohmann</a></div>
|
||
<div class="line"><a name="l09161"></a><span class="lineno"> 9161</span> {</div>
|
||
<div class="line"><a name="l09162"></a><span class="lineno"> 9162</span> <span class="keyword">namespace </span>detail</div>
|
||
<div class="line"><a name="l09163"></a><span class="lineno"> 9163</span> {</div>
|
||
<div class="line"><a name="l09164"></a><span class="lineno"> 9164</span> <span class="comment">/*</span></div>
|
||
<div class="line"><a name="l09165"></a><span class="lineno"> 9165</span> <span class="comment">@brief an iterator for primitive JSON types</span></div>
|
||
<div class="line"><a name="l09166"></a><span class="lineno"> 9166</span> <span class="comment"></span> </div>
|
||
<div class="line"><a name="l09167"></a><span class="lineno"> 9167</span> <span class="comment">This class models an iterator for primitive JSON types (boolean, number,</span></div>
|
||
<div class="line"><a name="l09168"></a><span class="lineno"> 9168</span> <span class="comment">string). It's only purpose is to allow the iterator/const_iterator classes</span></div>
|
||
<div class="line"><a name="l09169"></a><span class="lineno"> 9169</span> <span class="comment">to "iterate" over primitive values. Internally, the iterator is modeled by</span></div>
|
||
<div class="line"><a name="l09170"></a><span class="lineno"> 9170</span> <span class="comment">a `difference_type` variable. Value begin_value (`0`) models the begin,</span></div>
|
||
<div class="line"><a name="l09171"></a><span class="lineno"> 9171</span> <span class="comment">end_value (`1`) models past the end.</span></div>
|
||
<div class="line"><a name="l09172"></a><span class="lineno"> 9172</span> <span class="comment">*/</span></div>
|
||
<div class="line"><a name="l09173"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html"> 9173</a></span> <span class="keyword">class </span><a class="code" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html">primitive_iterator_t</a></div>
|
||
<div class="line"><a name="l09174"></a><span class="lineno"> 9174</span> {</div>
|
||
<div class="line"><a name="l09175"></a><span class="lineno"> 9175</span>  <span class="keyword">private</span>:</div>
|
||
<div class="line"><a name="l09176"></a><span class="lineno"> 9176</span>  <span class="keyword">using</span> difference_type = std::ptrdiff_t;</div>
|
||
<div class="line"><a name="l09177"></a><span class="lineno"> 9177</span>  <span class="keyword">static</span> constexpr difference_type begin_value = 0;</div>
|
||
<div class="line"><a name="l09178"></a><span class="lineno"> 9178</span>  <span class="keyword">static</span> constexpr difference_type end_value = begin_value + 1;</div>
|
||
<div class="line"><a name="l09179"></a><span class="lineno"> 9179</span>  </div>
|
||
<div class="line"><a name="l09181"></a><span class="lineno"> 9181</span>  difference_type m_it = (std::numeric_limits<std::ptrdiff_t>::min)();</div>
|
||
<div class="line"><a name="l09182"></a><span class="lineno"> 9182</span>  </div>
|
||
<div class="line"><a name="l09183"></a><span class="lineno"> 9183</span>  <span class="keyword">public</span>:</div>
|
||
<div class="line"><a name="l09184"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#ae952990886ca1756229f916661a8af81"> 9184</a></span>  constexpr difference_type <a class="code" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#ae952990886ca1756229f916661a8af81">get_value</a>() const noexcept</div>
|
||
<div class="line"><a name="l09185"></a><span class="lineno"> 9185</span>  {</div>
|
||
<div class="line"><a name="l09186"></a><span class="lineno"> 9186</span>  <span class="keywordflow">return</span> m_it;</div>
|
||
<div class="line"><a name="l09187"></a><span class="lineno"> 9187</span>  }</div>
|
||
<div class="line"><a name="l09188"></a><span class="lineno"> 9188</span>  </div>
|
||
<div class="line"><a name="l09190"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#a9d9b005906106e12aed738f97d7fee42"> 9190</a></span>  <span class="keywordtype">void</span> <a class="code" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#a9d9b005906106e12aed738f97d7fee42">set_begin</a>() noexcept</div>
|
||
<div class="line"><a name="l09191"></a><span class="lineno"> 9191</span>  {</div>
|
||
<div class="line"><a name="l09192"></a><span class="lineno"> 9192</span>  m_it = begin_value;</div>
|
||
<div class="line"><a name="l09193"></a><span class="lineno"> 9193</span>  }</div>
|
||
<div class="line"><a name="l09194"></a><span class="lineno"> 9194</span>  </div>
|
||
<div class="line"><a name="l09196"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#ad26a823483846a12d890c3feed3097eb"> 9196</a></span>  <span class="keywordtype">void</span> <a class="code" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#ad26a823483846a12d890c3feed3097eb">set_end</a>() noexcept</div>
|
||
<div class="line"><a name="l09197"></a><span class="lineno"> 9197</span>  {</div>
|
||
<div class="line"><a name="l09198"></a><span class="lineno"> 9198</span>  m_it = end_value;</div>
|
||
<div class="line"><a name="l09199"></a><span class="lineno"> 9199</span>  }</div>
|
||
<div class="line"><a name="l09200"></a><span class="lineno"> 9200</span>  </div>
|
||
<div class="line"><a name="l09202"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#a8d1a7d46b3fcd06edd034f04ededb5e4"> 9202</a></span>  constexpr <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#a8d1a7d46b3fcd06edd034f04ededb5e4">is_begin</a>() const noexcept</div>
|
||
<div class="line"><a name="l09203"></a><span class="lineno"> 9203</span>  {</div>
|
||
<div class="line"><a name="l09204"></a><span class="lineno"> 9204</span>  <span class="keywordflow">return</span> m_it == begin_value;</div>
|
||
<div class="line"><a name="l09205"></a><span class="lineno"> 9205</span>  }</div>
|
||
<div class="line"><a name="l09206"></a><span class="lineno"> 9206</span>  </div>
|
||
<div class="line"><a name="l09208"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#a45a7e301c23b5b90417baf2277f40b1d"> 9208</a></span>  constexpr <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#a45a7e301c23b5b90417baf2277f40b1d">is_end</a>() const noexcept</div>
|
||
<div class="line"><a name="l09209"></a><span class="lineno"> 9209</span>  {</div>
|
||
<div class="line"><a name="l09210"></a><span class="lineno"> 9210</span>  <span class="keywordflow">return</span> m_it == end_value;</div>
|
||
<div class="line"><a name="l09211"></a><span class="lineno"> 9211</span>  }</div>
|
||
<div class="line"><a name="l09212"></a><span class="lineno"> 9212</span>  </div>
|
||
<div class="line"><a name="l09213"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#af58da4713ea9010912f3da6b22aeee51"> 9213</a></span>  <span class="keyword">friend</span> constexpr <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#af58da4713ea9010912f3da6b22aeee51">operator==</a>(<a class="code" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html">primitive_iterator_t</a> lhs, <a class="code" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html">primitive_iterator_t</a> rhs) noexcept</div>
|
||
<div class="line"><a name="l09214"></a><span class="lineno"> 9214</span>  {</div>
|
||
<div class="line"><a name="l09215"></a><span class="lineno"> 9215</span>  <span class="keywordflow">return</span> lhs.m_it == rhs.m_it;</div>
|
||
<div class="line"><a name="l09216"></a><span class="lineno"> 9216</span>  }</div>
|
||
<div class="line"><a name="l09217"></a><span class="lineno"> 9217</span>  </div>
|
||
<div class="line"><a name="l09218"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#a6b032074795534fe7144a4f1c86ead2f"> 9218</a></span>  <span class="keyword">friend</span> constexpr <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#a6b032074795534fe7144a4f1c86ead2f">operator<</a>(<a class="code" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html">primitive_iterator_t</a> lhs, <a class="code" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html">primitive_iterator_t</a> rhs) noexcept</div>
|
||
<div class="line"><a name="l09219"></a><span class="lineno"> 9219</span>  {</div>
|
||
<div class="line"><a name="l09220"></a><span class="lineno"> 9220</span>  <span class="keywordflow">return</span> lhs.m_it < rhs.m_it;</div>
|
||
<div class="line"><a name="l09221"></a><span class="lineno"> 9221</span>  }</div>
|
||
<div class="line"><a name="l09222"></a><span class="lineno"> 9222</span>  </div>
|
||
<div class="line"><a name="l09223"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#a00ce828d0fe58046c10e0445504df7bf"> 9223</a></span>  <a class="code" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html">primitive_iterator_t</a> <a class="code" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#a00ce828d0fe58046c10e0445504df7bf">operator+</a>(difference_type n) noexcept</div>
|
||
<div class="line"><a name="l09224"></a><span class="lineno"> 9224</span>  {</div>
|
||
<div class="line"><a name="l09225"></a><span class="lineno"> 9225</span>  <span class="keyword">auto</span> result = *<span class="keyword">this</span>;</div>
|
||
<div class="line"><a name="l09226"></a><span class="lineno"> 9226</span>  result += n;</div>
|
||
<div class="line"><a name="l09227"></a><span class="lineno"> 9227</span>  <span class="keywordflow">return</span> result;</div>
|
||
<div class="line"><a name="l09228"></a><span class="lineno"> 9228</span>  }</div>
|
||
<div class="line"><a name="l09229"></a><span class="lineno"> 9229</span>  </div>
|
||
<div class="line"><a name="l09230"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#a86a249e92a5274dec7ea20e52b0cc878"> 9230</a></span>  <span class="keyword">friend</span> constexpr difference_type <a class="code" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#a86a249e92a5274dec7ea20e52b0cc878">operator-</a>(<a class="code" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html">primitive_iterator_t</a> lhs, <a class="code" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html">primitive_iterator_t</a> rhs) noexcept</div>
|
||
<div class="line"><a name="l09231"></a><span class="lineno"> 9231</span>  {</div>
|
||
<div class="line"><a name="l09232"></a><span class="lineno"> 9232</span>  <span class="keywordflow">return</span> lhs.m_it - rhs.m_it;</div>
|
||
<div class="line"><a name="l09233"></a><span class="lineno"> 9233</span>  }</div>
|
||
<div class="line"><a name="l09234"></a><span class="lineno"> 9234</span>  </div>
|
||
<div class="line"><a name="l09235"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#ad26511012fc88f3ec5d9e1cb708732fd"> 9235</a></span>  <a class="code" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html">primitive_iterator_t</a>& <a class="code" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#ad26511012fc88f3ec5d9e1cb708732fd">operator++</a>() noexcept</div>
|
||
<div class="line"><a name="l09236"></a><span class="lineno"> 9236</span>  {</div>
|
||
<div class="line"><a name="l09237"></a><span class="lineno"> 9237</span>  ++m_it;</div>
|
||
<div class="line"><a name="l09238"></a><span class="lineno"> 9238</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
|
||
<div class="line"><a name="l09239"></a><span class="lineno"> 9239</span>  }</div>
|
||
<div class="line"><a name="l09240"></a><span class="lineno"> 9240</span>  </div>
|
||
<div class="line"><a name="l09241"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#a88e38c8e60ba9769b334c192b830047b"> 9241</a></span>  <a class="code" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html">primitive_iterator_t</a> <span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#a88e38c8e60ba9769b334c192b830047b">operator++</a>(<span class="keywordtype">int</span>) noexcept</div>
|
||
<div class="line"><a name="l09242"></a><span class="lineno"> 9242</span>  {</div>
|
||
<div class="line"><a name="l09243"></a><span class="lineno"> 9243</span>  <span class="keyword">auto</span> result = *<span class="keyword">this</span>;</div>
|
||
<div class="line"><a name="l09244"></a><span class="lineno"> 9244</span>  ++m_it;</div>
|
||
<div class="line"><a name="l09245"></a><span class="lineno"> 9245</span>  <span class="keywordflow">return</span> result;</div>
|
||
<div class="line"><a name="l09246"></a><span class="lineno"> 9246</span>  }</div>
|
||
<div class="line"><a name="l09247"></a><span class="lineno"> 9247</span>  </div>
|
||
<div class="line"><a name="l09248"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#abecbf0c73c7fe963a699738065177bc3"> 9248</a></span>  <a class="code" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html">primitive_iterator_t</a>& <a class="code" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#abecbf0c73c7fe963a699738065177bc3">operator--</a>() noexcept</div>
|
||
<div class="line"><a name="l09249"></a><span class="lineno"> 9249</span>  {</div>
|
||
<div class="line"><a name="l09250"></a><span class="lineno"> 9250</span>  --m_it;</div>
|
||
<div class="line"><a name="l09251"></a><span class="lineno"> 9251</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
|
||
<div class="line"><a name="l09252"></a><span class="lineno"> 9252</span>  }</div>
|
||
<div class="line"><a name="l09253"></a><span class="lineno"> 9253</span>  </div>
|
||
<div class="line"><a name="l09254"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#ae5aed974605469fe0dfeddc6c4a7056d"> 9254</a></span>  <a class="code" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html">primitive_iterator_t</a> <span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#ae5aed974605469fe0dfeddc6c4a7056d">operator--</a>(<span class="keywordtype">int</span>) noexcept</div>
|
||
<div class="line"><a name="l09255"></a><span class="lineno"> 9255</span>  {</div>
|
||
<div class="line"><a name="l09256"></a><span class="lineno"> 9256</span>  <span class="keyword">auto</span> result = *<span class="keyword">this</span>;</div>
|
||
<div class="line"><a name="l09257"></a><span class="lineno"> 9257</span>  --m_it;</div>
|
||
<div class="line"><a name="l09258"></a><span class="lineno"> 9258</span>  <span class="keywordflow">return</span> result;</div>
|
||
<div class="line"><a name="l09259"></a><span class="lineno"> 9259</span>  }</div>
|
||
<div class="line"><a name="l09260"></a><span class="lineno"> 9260</span>  </div>
|
||
<div class="line"><a name="l09261"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#aee01535df0b3b40137d9241029a9a203"> 9261</a></span>  <a class="code" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html">primitive_iterator_t</a>& <a class="code" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#aee01535df0b3b40137d9241029a9a203">operator+=</a>(difference_type n) noexcept</div>
|
||
<div class="line"><a name="l09262"></a><span class="lineno"> 9262</span>  {</div>
|
||
<div class="line"><a name="l09263"></a><span class="lineno"> 9263</span>  m_it += n;</div>
|
||
<div class="line"><a name="l09264"></a><span class="lineno"> 9264</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
|
||
<div class="line"><a name="l09265"></a><span class="lineno"> 9265</span>  }</div>
|
||
<div class="line"><a name="l09266"></a><span class="lineno"> 9266</span>  </div>
|
||
<div class="line"><a name="l09267"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#a0bf83ab08abe1ae4b51c790c85cdf151"> 9267</a></span>  <a class="code" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html">primitive_iterator_t</a>& <a class="code" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#a0bf83ab08abe1ae4b51c790c85cdf151">operator-=</a>(difference_type n) noexcept</div>
|
||
<div class="line"><a name="l09268"></a><span class="lineno"> 9268</span>  {</div>
|
||
<div class="line"><a name="l09269"></a><span class="lineno"> 9269</span>  m_it -= n;</div>
|
||
<div class="line"><a name="l09270"></a><span class="lineno"> 9270</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
|
||
<div class="line"><a name="l09271"></a><span class="lineno"> 9271</span>  }</div>
|
||
<div class="line"><a name="l09272"></a><span class="lineno"> 9272</span> };</div>
|
||
<div class="line"><a name="l09273"></a><span class="lineno"> 9273</span> } <span class="comment">// namespace detail</span></div>
|
||
<div class="line"><a name="l09274"></a><span class="lineno"> 9274</span> } <span class="comment">// namespace nlohmann</span></div>
|
||
<div class="line"><a name="l09275"></a><span class="lineno"> 9275</span>  </div>
|
||
<div class="line"><a name="l09276"></a><span class="lineno"> 9276</span>  </div>
|
||
<div class="line"><a name="l09277"></a><span class="lineno"> 9277</span> <span class="keyword">namespace </span><a class="code" href="namespacenlohmann.html">nlohmann</a></div>
|
||
<div class="line"><a name="l09278"></a><span class="lineno"> 9278</span> {</div>
|
||
<div class="line"><a name="l09279"></a><span class="lineno"> 9279</span> <span class="keyword">namespace </span>detail</div>
|
||
<div class="line"><a name="l09280"></a><span class="lineno"> 9280</span> {</div>
|
||
<div class="line"><a name="l09287"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1internal__iterator.html"> 9287</a></span> <span class="keyword">template</span><<span class="keyword">typename</span> BasicJsonType> <span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html">internal_iterator</a></div>
|
||
<div class="line"><a name="l09288"></a><span class="lineno"> 9288</span> {</div>
|
||
<div class="line"><a name="l09290"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1internal__iterator.html#a8cb0af3498061426c1d0a65ad6220408"> 9290</a></span>  <span class="keyword">typename</span> BasicJsonType::object_t::iterator <a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a8cb0af3498061426c1d0a65ad6220408">object_iterator</a> {};</div>
|
||
<div class="line"><a name="l09292"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1internal__iterator.html#a8294a6e6f01b58e1cce8fbae66a50b5d"> 9292</a></span>  <span class="keyword">typename</span> BasicJsonType::array_t::iterator <a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a8294a6e6f01b58e1cce8fbae66a50b5d">array_iterator</a> {};</div>
|
||
<div class="line"><a name="l09294"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1internal__iterator.html#a2b3bb45f968210e42c282017eeeb63a8"> 9294</a></span>  <a class="code" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html">primitive_iterator_t</a> <a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a2b3bb45f968210e42c282017eeeb63a8">primitive_iterator</a> {};</div>
|
||
<div class="line"><a name="l09295"></a><span class="lineno"> 9295</span> };</div>
|
||
<div class="line"><a name="l09296"></a><span class="lineno"> 9296</span> } <span class="comment">// namespace detail</span></div>
|
||
<div class="line"><a name="l09297"></a><span class="lineno"> 9297</span> } <span class="comment">// namespace nlohmann</span></div>
|
||
<div class="line"><a name="l09298"></a><span class="lineno"> 9298</span>  </div>
|
||
<div class="line"><a name="l09299"></a><span class="lineno"> 9299</span> <span class="comment">// #include <nlohmann/detail/iterators/iter_impl.hpp></span></div>
|
||
<div class="line"><a name="l09300"></a><span class="lineno"> 9300</span>  </div>
|
||
<div class="line"><a name="l09301"></a><span class="lineno"> 9301</span>  </div>
|
||
<div class="line"><a name="l09302"></a><span class="lineno"> 9302</span> <span class="preprocessor">#include <ciso646></span> <span class="comment">// not</span></div>
|
||
<div class="line"><a name="l09303"></a><span class="lineno"> 9303</span> <span class="preprocessor">#include <iterator></span> <span class="comment">// iterator, random_access_iterator_tag, bidirectional_iterator_tag, advance, next</span></div>
|
||
<div class="line"><a name="l09304"></a><span class="lineno"> 9304</span> <span class="preprocessor">#include <type_traits></span> <span class="comment">// conditional, is_const, remove_const</span></div>
|
||
<div class="line"><a name="l09305"></a><span class="lineno"> 9305</span>  </div>
|
||
<div class="line"><a name="l09306"></a><span class="lineno"> 9306</span> <span class="comment">// #include <nlohmann/detail/exceptions.hpp></span></div>
|
||
<div class="line"><a name="l09307"></a><span class="lineno"> 9307</span>  </div>
|
||
<div class="line"><a name="l09308"></a><span class="lineno"> 9308</span> <span class="comment">// #include <nlohmann/detail/iterators/internal_iterator.hpp></span></div>
|
||
<div class="line"><a name="l09309"></a><span class="lineno"> 9309</span>  </div>
|
||
<div class="line"><a name="l09310"></a><span class="lineno"> 9310</span> <span class="comment">// #include <nlohmann/detail/iterators/primitive_iterator.hpp></span></div>
|
||
<div class="line"><a name="l09311"></a><span class="lineno"> 9311</span>  </div>
|
||
<div class="line"><a name="l09312"></a><span class="lineno"> 9312</span> <span class="comment">// #include <nlohmann/detail/macro_scope.hpp></span></div>
|
||
<div class="line"><a name="l09313"></a><span class="lineno"> 9313</span>  </div>
|
||
<div class="line"><a name="l09314"></a><span class="lineno"> 9314</span> <span class="comment">// #include <nlohmann/detail/meta/cpp_future.hpp></span></div>
|
||
<div class="line"><a name="l09315"></a><span class="lineno"> 9315</span>  </div>
|
||
<div class="line"><a name="l09316"></a><span class="lineno"> 9316</span> <span class="comment">// #include <nlohmann/detail/meta/type_traits.hpp></span></div>
|
||
<div class="line"><a name="l09317"></a><span class="lineno"> 9317</span>  </div>
|
||
<div class="line"><a name="l09318"></a><span class="lineno"> 9318</span> <span class="comment">// #include <nlohmann/detail/value_t.hpp></span></div>
|
||
<div class="line"><a name="l09319"></a><span class="lineno"> 9319</span>  </div>
|
||
<div class="line"><a name="l09320"></a><span class="lineno"> 9320</span>  </div>
|
||
<div class="line"><a name="l09321"></a><span class="lineno"> 9321</span> <span class="keyword">namespace </span><a class="code" href="namespacenlohmann.html">nlohmann</a></div>
|
||
<div class="line"><a name="l09322"></a><span class="lineno"> 9322</span> {</div>
|
||
<div class="line"><a name="l09323"></a><span class="lineno"> 9323</span> <span class="keyword">namespace </span>detail</div>
|
||
<div class="line"><a name="l09324"></a><span class="lineno"> 9324</span> {</div>
|
||
<div class="line"><a name="l09325"></a><span class="lineno"> 9325</span> <span class="comment">// forward declare, to be able to friend it later on</span></div>
|
||
<div class="line"><a name="l09326"></a><span class="lineno"> 9326</span> <span class="keyword">template</span><<span class="keyword">typename</span> IteratorType> <span class="keyword">class </span>iteration_proxy;</div>
|
||
<div class="line"><a name="l09327"></a><span class="lineno"> 9327</span> <span class="keyword">template</span><<span class="keyword">typename</span> IteratorType> <span class="keyword">class </span>iteration_proxy_value;</div>
|
||
<div class="line"><a name="l09328"></a><span class="lineno"> 9328</span>  </div>
|
||
<div class="line"><a name="l09345"></a><span class="lineno"> 9345</span> <span class="keyword">template</span><<span class="keyword">typename</span> BasicJsonType></div>
|
||
<div class="line"><a name="l09346"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iter__impl.html"> 9346</a></span> <span class="keyword">class </span><a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">iter_impl</a></div>
|
||
<div class="line"><a name="l09347"></a><span class="lineno"> 9347</span> {</div>
|
||
<div class="line"><a name="l09349"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iter__impl.html#a19aa457f9c4af1b7e3af59839132cc5c"> 9349</a></span>  <span class="keyword">friend</span> <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">iter_impl<typename std::conditional<std::is_const<BasicJsonType>::value</a>, <span class="keyword">typename</span> std::remove_const<BasicJsonType>::type, <span class="keyword">const</span> BasicJsonType>::type>;</div>
|
||
<div class="line"><a name="l09350"></a><span class="lineno"> 9350</span>  <span class="keyword">friend</span> BasicJsonType;</div>
|
||
<div class="line"><a name="l09351"></a><span class="lineno"> 9351</span>  <span class="keyword">friend</span> <a class="code" href="classnlohmann_1_1detail_1_1iteration__proxy.html">iteration_proxy<iter_impl></a>;</div>
|
||
<div class="line"><a name="l09352"></a><span class="lineno"> 9352</span>  <span class="keyword">friend</span> <a class="code" href="classnlohmann_1_1detail_1_1iteration__proxy__value.html">iteration_proxy_value<iter_impl></a>;</div>
|
||
<div class="line"><a name="l09353"></a><span class="lineno"> 9353</span>  </div>
|
||
<div class="line"><a name="l09354"></a><span class="lineno"> 9354</span>  <span class="keyword">using</span> object_t = <span class="keyword">typename</span> BasicJsonType::object_t;</div>
|
||
<div class="line"><a name="l09355"></a><span class="lineno"> 9355</span>  <span class="keyword">using</span> array_t = <span class="keyword">typename</span> BasicJsonType::array_t;</div>
|
||
<div class="line"><a name="l09356"></a><span class="lineno"> 9356</span>  <span class="comment">// make sure BasicJsonType is basic_json or const basic_json</span></div>
|
||
<div class="line"><a name="l09357"></a><span class="lineno"> 9357</span>  static_assert(<a class="code" href="structnlohmann_1_1detail_1_1is__basic__json.html">is_basic_json</a><<span class="keyword">typename</span> std::remove_const<BasicJsonType>::type>::<a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#ab447c50354c6611fa2ae0100ac17845c">value</a>,</div>
|
||
<div class="line"><a name="l09358"></a><span class="lineno"> 9358</span>  <span class="stringliteral">"iter_impl only accepts (const) basic_json"</span>);</div>
|
||
<div class="line"><a name="l09359"></a><span class="lineno"> 9359</span>  </div>
|
||
<div class="line"><a name="l09360"></a><span class="lineno"> 9360</span>  <span class="keyword">public</span>:</div>
|
||
<div class="line"><a name="l09361"></a><span class="lineno"> 9361</span>  </div>
|
||
<div class="line"><a name="l09367"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iter__impl.html#ad9e091f5c70b34b5b1abc1ab15fd9106"> 9367</a></span>  <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#ad9e091f5c70b34b5b1abc1ab15fd9106">iterator_category</a> = std::bidirectional_iterator_tag;</div>
|
||
<div class="line"><a name="l09368"></a><span class="lineno"> 9368</span>  </div>
|
||
<div class="line"><a name="l09370"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iter__impl.html#ab35586a44f2222272c5346baa3013f67"> 9370</a></span>  <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#ab35586a44f2222272c5346baa3013f67">value_type</a> = <span class="keyword">typename</span> BasicJsonType::value_type;</div>
|
||
<div class="line"><a name="l09372"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iter__impl.html#a2f7ea9f7022850809c60fc3263775840"> 9372</a></span>  <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#a2f7ea9f7022850809c60fc3263775840">difference_type</a> = <span class="keyword">typename</span> BasicJsonType::difference_type;</div>
|
||
<div class="line"><a name="l09374"></a><span class="lineno"> 9374</span>  <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#a69e52f890ce8c556fd68ce109e24b360">pointer</a> = <span class="keyword">typename</span> std::conditional<std::is_const<BasicJsonType>::value,</div>
|
||
<div class="line"><a name="l09375"></a><span class="lineno"> 9375</span>  <span class="keyword">typename</span> BasicJsonType::const_pointer,</div>
|
||
<div class="line"><a name="l09376"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iter__impl.html#a69e52f890ce8c556fd68ce109e24b360"> 9376</a></span>  <span class="keyword">typename</span> BasicJsonType::pointer>::type;</div>
|
||
<div class="line"><a name="l09378"></a><span class="lineno"> 9378</span>  <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#a5be8001be099c6b82310f4d387b953ce">reference</a> =</div>
|
||
<div class="line"><a name="l09379"></a><span class="lineno"> 9379</span>  <span class="keyword">typename</span> std::conditional<std::is_const<BasicJsonType>::value,</div>
|
||
<div class="line"><a name="l09380"></a><span class="lineno"> 9380</span>  <span class="keyword">typename</span> BasicJsonType::const_reference,</div>
|
||
<div class="line"><a name="l09381"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iter__impl.html#a5be8001be099c6b82310f4d387b953ce"> 9381</a></span>  <span class="keyword">typename</span> BasicJsonType::reference>::type;</div>
|
||
<div class="line"><a name="l09382"></a><span class="lineno"> 9382</span>  </div>
|
||
<div class="line"><a name="l09384"></a><span class="lineno"> 9384</span>  <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#a19aa457f9c4af1b7e3af59839132cc5c">iter_impl</a>() = <span class="keywordflow">default</span>;</div>
|
||
<div class="line"><a name="l09385"></a><span class="lineno"> 9385</span>  </div>
|
||
<div class="line"><a name="l09392"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iter__impl.html#a88a00484ac201c52fc5f613d88a2918b"> 9392</a></span>  <span class="keyword">explicit</span> <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#a88a00484ac201c52fc5f613d88a2918b">iter_impl</a>(<a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#a69e52f890ce8c556fd68ce109e24b360">pointer</a> <span class="keywordtype">object</span>) noexcept : m_object(<span class="keywordtype">object</span>)</div>
|
||
<div class="line"><a name="l09393"></a><span class="lineno"> 9393</span>  {</div>
|
||
<div class="line"><a name="l09394"></a><span class="lineno"> 9394</span>  assert(m_object != <span class="keyword">nullptr</span>);</div>
|
||
<div class="line"><a name="l09395"></a><span class="lineno"> 9395</span>  </div>
|
||
<div class="line"><a name="l09396"></a><span class="lineno"> 9396</span>  <span class="keywordflow">switch</span> (m_object->m_type)</div>
|
||
<div class="line"><a name="l09397"></a><span class="lineno"> 9397</span>  {</div>
|
||
<div class="line"><a name="l09398"></a><span class="lineno"> 9398</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>:</div>
|
||
<div class="line"><a name="l09399"></a><span class="lineno"> 9399</span>  {</div>
|
||
<div class="line"><a name="l09400"></a><span class="lineno"> 9400</span>  m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a8cb0af3498061426c1d0a65ad6220408">object_iterator</a> = <span class="keyword">typename</span> object_t::iterator();</div>
|
||
<div class="line"><a name="l09401"></a><span class="lineno"> 9401</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l09402"></a><span class="lineno"> 9402</span>  }</div>
|
||
<div class="line"><a name="l09403"></a><span class="lineno"> 9403</span>  </div>
|
||
<div class="line"><a name="l09404"></a><span class="lineno"> 9404</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>:</div>
|
||
<div class="line"><a name="l09405"></a><span class="lineno"> 9405</span>  {</div>
|
||
<div class="line"><a name="l09406"></a><span class="lineno"> 9406</span>  m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a8294a6e6f01b58e1cce8fbae66a50b5d">array_iterator</a> = <span class="keyword">typename</span> array_t::iterator();</div>
|
||
<div class="line"><a name="l09407"></a><span class="lineno"> 9407</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l09408"></a><span class="lineno"> 9408</span>  }</div>
|
||
<div class="line"><a name="l09409"></a><span class="lineno"> 9409</span>  </div>
|
||
<div class="line"><a name="l09410"></a><span class="lineno"> 9410</span>  <span class="keywordflow">default</span>:</div>
|
||
<div class="line"><a name="l09411"></a><span class="lineno"> 9411</span>  {</div>
|
||
<div class="line"><a name="l09412"></a><span class="lineno"> 9412</span>  m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a2b3bb45f968210e42c282017eeeb63a8">primitive_iterator</a> = <a class="code" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html">primitive_iterator_t</a>();</div>
|
||
<div class="line"><a name="l09413"></a><span class="lineno"> 9413</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l09414"></a><span class="lineno"> 9414</span>  }</div>
|
||
<div class="line"><a name="l09415"></a><span class="lineno"> 9415</span>  }</div>
|
||
<div class="line"><a name="l09416"></a><span class="lineno"> 9416</span>  }</div>
|
||
<div class="line"><a name="l09417"></a><span class="lineno"> 9417</span>  </div>
|
||
<div class="line"><a name="l09434"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iter__impl.html#a71f84fb6e009619f12972bcf9002b8cd"> 9434</a></span>  <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#a71f84fb6e009619f12972bcf9002b8cd">iter_impl</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">iter_impl<const BasicJsonType></a>& other) noexcept</div>
|
||
<div class="line"><a name="l09435"></a><span class="lineno"> 9435</span>  : m_object(other.m_object), m_it(other.m_it)</div>
|
||
<div class="line"><a name="l09436"></a><span class="lineno"> 9436</span>  {}</div>
|
||
<div class="line"><a name="l09437"></a><span class="lineno"> 9437</span>  </div>
|
||
<div class="line"><a name="l09444"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iter__impl.html#a9a5cd7864a8f848ef107d3f5a330f5e7"> 9444</a></span>  <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">iter_impl</a>& <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#a9a5cd7864a8f848ef107d3f5a330f5e7">operator=</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">iter_impl<const BasicJsonType></a>& other) noexcept</div>
|
||
<div class="line"><a name="l09445"></a><span class="lineno"> 9445</span>  {</div>
|
||
<div class="line"><a name="l09446"></a><span class="lineno"> 9446</span>  m_object = other.m_object;</div>
|
||
<div class="line"><a name="l09447"></a><span class="lineno"> 9447</span>  m_it = other.m_it;</div>
|
||
<div class="line"><a name="l09448"></a><span class="lineno"> 9448</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
|
||
<div class="line"><a name="l09449"></a><span class="lineno"> 9449</span>  }</div>
|
||
<div class="line"><a name="l09450"></a><span class="lineno"> 9450</span>  </div>
|
||
<div class="line"><a name="l09456"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iter__impl.html#a867f7eb55091be31b013adb3e46816d3"> 9456</a></span>  <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#a867f7eb55091be31b013adb3e46816d3">iter_impl</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">iter_impl</a><<span class="keyword">typename</span> std::remove_const<BasicJsonType>::type>& other) noexcept</div>
|
||
<div class="line"><a name="l09457"></a><span class="lineno"> 9457</span>  : m_object(other.m_object), m_it(other.m_it)</div>
|
||
<div class="line"><a name="l09458"></a><span class="lineno"> 9458</span>  {}</div>
|
||
<div class="line"><a name="l09459"></a><span class="lineno"> 9459</span>  </div>
|
||
<div class="line"><a name="l09466"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iter__impl.html#a7159ed1cfe7c423a2baef8bea0c94509"> 9466</a></span>  <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">iter_impl</a>& <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#a7159ed1cfe7c423a2baef8bea0c94509">operator=</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">iter_impl</a><<span class="keyword">typename</span> std::remove_const<BasicJsonType>::type>& other) noexcept</div>
|
||
<div class="line"><a name="l09467"></a><span class="lineno"> 9467</span>  {</div>
|
||
<div class="line"><a name="l09468"></a><span class="lineno"> 9468</span>  m_object = other.m_object;</div>
|
||
<div class="line"><a name="l09469"></a><span class="lineno"> 9469</span>  m_it = other.m_it;</div>
|
||
<div class="line"><a name="l09470"></a><span class="lineno"> 9470</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
|
||
<div class="line"><a name="l09471"></a><span class="lineno"> 9471</span>  }</div>
|
||
<div class="line"><a name="l09472"></a><span class="lineno"> 9472</span>  </div>
|
||
<div class="line"><a name="l09473"></a><span class="lineno"> 9473</span>  <span class="keyword">private</span>:</div>
|
||
<div class="line"><a name="l09478"></a><span class="lineno"> 9478</span>  <span class="keywordtype">void</span> set_begin() noexcept</div>
|
||
<div class="line"><a name="l09479"></a><span class="lineno"> 9479</span>  {</div>
|
||
<div class="line"><a name="l09480"></a><span class="lineno"> 9480</span>  assert(m_object != <span class="keyword">nullptr</span>);</div>
|
||
<div class="line"><a name="l09481"></a><span class="lineno"> 9481</span>  </div>
|
||
<div class="line"><a name="l09482"></a><span class="lineno"> 9482</span>  <span class="keywordflow">switch</span> (m_object->m_type)</div>
|
||
<div class="line"><a name="l09483"></a><span class="lineno"> 9483</span>  {</div>
|
||
<div class="line"><a name="l09484"></a><span class="lineno"> 9484</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>:</div>
|
||
<div class="line"><a name="l09485"></a><span class="lineno"> 9485</span>  {</div>
|
||
<div class="line"><a name="l09486"></a><span class="lineno"> 9486</span>  m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a8cb0af3498061426c1d0a65ad6220408">object_iterator</a> = m_object->m_value.object->begin();</div>
|
||
<div class="line"><a name="l09487"></a><span class="lineno"> 9487</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l09488"></a><span class="lineno"> 9488</span>  }</div>
|
||
<div class="line"><a name="l09489"></a><span class="lineno"> 9489</span>  </div>
|
||
<div class="line"><a name="l09490"></a><span class="lineno"> 9490</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>:</div>
|
||
<div class="line"><a name="l09491"></a><span class="lineno"> 9491</span>  {</div>
|
||
<div class="line"><a name="l09492"></a><span class="lineno"> 9492</span>  m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a8294a6e6f01b58e1cce8fbae66a50b5d">array_iterator</a> = m_object->m_value.array->begin();</div>
|
||
<div class="line"><a name="l09493"></a><span class="lineno"> 9493</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l09494"></a><span class="lineno"> 9494</span>  }</div>
|
||
<div class="line"><a name="l09495"></a><span class="lineno"> 9495</span>  </div>
|
||
<div class="line"><a name="l09496"></a><span class="lineno"> 9496</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a37a6259cc0c1dae299a7866489dff0bd">value_t::null</a>:</div>
|
||
<div class="line"><a name="l09497"></a><span class="lineno"> 9497</span>  {</div>
|
||
<div class="line"><a name="l09498"></a><span class="lineno"> 9498</span>  <span class="comment">// set to end so begin()==end() is true: null is empty</span></div>
|
||
<div class="line"><a name="l09499"></a><span class="lineno"> 9499</span>  m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a2b3bb45f968210e42c282017eeeb63a8">primitive_iterator</a>.<a class="code" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#ad26a823483846a12d890c3feed3097eb">set_end</a>();</div>
|
||
<div class="line"><a name="l09500"></a><span class="lineno"> 9500</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l09501"></a><span class="lineno"> 9501</span>  }</div>
|
||
<div class="line"><a name="l09502"></a><span class="lineno"> 9502</span>  </div>
|
||
<div class="line"><a name="l09503"></a><span class="lineno"> 9503</span>  <span class="keywordflow">default</span>:</div>
|
||
<div class="line"><a name="l09504"></a><span class="lineno"> 9504</span>  {</div>
|
||
<div class="line"><a name="l09505"></a><span class="lineno"> 9505</span>  m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a2b3bb45f968210e42c282017eeeb63a8">primitive_iterator</a>.<a class="code" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#a9d9b005906106e12aed738f97d7fee42">set_begin</a>();</div>
|
||
<div class="line"><a name="l09506"></a><span class="lineno"> 9506</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l09507"></a><span class="lineno"> 9507</span>  }</div>
|
||
<div class="line"><a name="l09508"></a><span class="lineno"> 9508</span>  }</div>
|
||
<div class="line"><a name="l09509"></a><span class="lineno"> 9509</span>  }</div>
|
||
<div class="line"><a name="l09510"></a><span class="lineno"> 9510</span>  </div>
|
||
<div class="line"><a name="l09515"></a><span class="lineno"> 9515</span>  <span class="keywordtype">void</span> set_end() noexcept</div>
|
||
<div class="line"><a name="l09516"></a><span class="lineno"> 9516</span>  {</div>
|
||
<div class="line"><a name="l09517"></a><span class="lineno"> 9517</span>  assert(m_object != <span class="keyword">nullptr</span>);</div>
|
||
<div class="line"><a name="l09518"></a><span class="lineno"> 9518</span>  </div>
|
||
<div class="line"><a name="l09519"></a><span class="lineno"> 9519</span>  <span class="keywordflow">switch</span> (m_object->m_type)</div>
|
||
<div class="line"><a name="l09520"></a><span class="lineno"> 9520</span>  {</div>
|
||
<div class="line"><a name="l09521"></a><span class="lineno"> 9521</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>:</div>
|
||
<div class="line"><a name="l09522"></a><span class="lineno"> 9522</span>  {</div>
|
||
<div class="line"><a name="l09523"></a><span class="lineno"> 9523</span>  m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a8cb0af3498061426c1d0a65ad6220408">object_iterator</a> = m_object->m_value.object->end();</div>
|
||
<div class="line"><a name="l09524"></a><span class="lineno"> 9524</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l09525"></a><span class="lineno"> 9525</span>  }</div>
|
||
<div class="line"><a name="l09526"></a><span class="lineno"> 9526</span>  </div>
|
||
<div class="line"><a name="l09527"></a><span class="lineno"> 9527</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>:</div>
|
||
<div class="line"><a name="l09528"></a><span class="lineno"> 9528</span>  {</div>
|
||
<div class="line"><a name="l09529"></a><span class="lineno"> 9529</span>  m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a8294a6e6f01b58e1cce8fbae66a50b5d">array_iterator</a> = m_object->m_value.array->end();</div>
|
||
<div class="line"><a name="l09530"></a><span class="lineno"> 9530</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l09531"></a><span class="lineno"> 9531</span>  }</div>
|
||
<div class="line"><a name="l09532"></a><span class="lineno"> 9532</span>  </div>
|
||
<div class="line"><a name="l09533"></a><span class="lineno"> 9533</span>  <span class="keywordflow">default</span>:</div>
|
||
<div class="line"><a name="l09534"></a><span class="lineno"> 9534</span>  {</div>
|
||
<div class="line"><a name="l09535"></a><span class="lineno"> 9535</span>  m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a2b3bb45f968210e42c282017eeeb63a8">primitive_iterator</a>.<a class="code" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#ad26a823483846a12d890c3feed3097eb">set_end</a>();</div>
|
||
<div class="line"><a name="l09536"></a><span class="lineno"> 9536</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l09537"></a><span class="lineno"> 9537</span>  }</div>
|
||
<div class="line"><a name="l09538"></a><span class="lineno"> 9538</span>  }</div>
|
||
<div class="line"><a name="l09539"></a><span class="lineno"> 9539</span>  }</div>
|
||
<div class="line"><a name="l09540"></a><span class="lineno"> 9540</span>  </div>
|
||
<div class="line"><a name="l09541"></a><span class="lineno"> 9541</span>  <span class="keyword">public</span>:</div>
|
||
<div class="line"><a name="l09546"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iter__impl.html#a5ca57856d9bba54a5fc51cee891de827"> 9546</a></span>  <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#a5be8001be099c6b82310f4d387b953ce">reference</a> <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#a5ca57856d9bba54a5fc51cee891de827">operator*</a>()<span class="keyword"> const</span></div>
|
||
<div class="line"><a name="l09547"></a><span class="lineno"> 9547</span> <span class="keyword"> </span>{</div>
|
||
<div class="line"><a name="l09548"></a><span class="lineno"> 9548</span>  assert(m_object != <span class="keyword">nullptr</span>);</div>
|
||
<div class="line"><a name="l09549"></a><span class="lineno"> 9549</span>  </div>
|
||
<div class="line"><a name="l09550"></a><span class="lineno"> 9550</span>  <span class="keywordflow">switch</span> (m_object->m_type)</div>
|
||
<div class="line"><a name="l09551"></a><span class="lineno"> 9551</span>  {</div>
|
||
<div class="line"><a name="l09552"></a><span class="lineno"> 9552</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>:</div>
|
||
<div class="line"><a name="l09553"></a><span class="lineno"> 9553</span>  {</div>
|
||
<div class="line"><a name="l09554"></a><span class="lineno"> 9554</span>  assert(m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a8cb0af3498061426c1d0a65ad6220408">object_iterator</a> != m_object->m_value.object->end());</div>
|
||
<div class="line"><a name="l09555"></a><span class="lineno"> 9555</span>  <span class="keywordflow">return</span> m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a8cb0af3498061426c1d0a65ad6220408">object_iterator</a>->second;</div>
|
||
<div class="line"><a name="l09556"></a><span class="lineno"> 9556</span>  }</div>
|
||
<div class="line"><a name="l09557"></a><span class="lineno"> 9557</span>  </div>
|
||
<div class="line"><a name="l09558"></a><span class="lineno"> 9558</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>:</div>
|
||
<div class="line"><a name="l09559"></a><span class="lineno"> 9559</span>  {</div>
|
||
<div class="line"><a name="l09560"></a><span class="lineno"> 9560</span>  assert(m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a8294a6e6f01b58e1cce8fbae66a50b5d">array_iterator</a> != m_object->m_value.array->end());</div>
|
||
<div class="line"><a name="l09561"></a><span class="lineno"> 9561</span>  <span class="keywordflow">return</span> *m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a8294a6e6f01b58e1cce8fbae66a50b5d">array_iterator</a>;</div>
|
||
<div class="line"><a name="l09562"></a><span class="lineno"> 9562</span>  }</div>
|
||
<div class="line"><a name="l09563"></a><span class="lineno"> 9563</span>  </div>
|
||
<div class="line"><a name="l09564"></a><span class="lineno"> 9564</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a37a6259cc0c1dae299a7866489dff0bd">value_t::null</a>:</div>
|
||
<div class="line"><a name="l09565"></a><span class="lineno"> 9565</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1invalid__iterator.html#a4e849260a3caa1b288c7e619130c6c09">invalid_iterator::create</a>(214, <span class="stringliteral">"cannot get value"</span>));</div>
|
||
<div class="line"><a name="l09566"></a><span class="lineno"> 9566</span>  </div>
|
||
<div class="line"><a name="l09567"></a><span class="lineno"> 9567</span>  <span class="keywordflow">default</span>:</div>
|
||
<div class="line"><a name="l09568"></a><span class="lineno"> 9568</span>  {</div>
|
||
<div class="line"><a name="l09569"></a><span class="lineno"> 9569</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a355f2770653ff7bdd5c74b204b5a3ad0">JSON_HEDLEY_LIKELY</a>(m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a2b3bb45f968210e42c282017eeeb63a8">primitive_iterator</a>.<a class="code" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#a8d1a7d46b3fcd06edd034f04ededb5e4">is_begin</a>()))</div>
|
||
<div class="line"><a name="l09570"></a><span class="lineno"> 9570</span>  {</div>
|
||
<div class="line"><a name="l09571"></a><span class="lineno"> 9571</span>  <span class="keywordflow">return</span> *m_object;</div>
|
||
<div class="line"><a name="l09572"></a><span class="lineno"> 9572</span>  }</div>
|
||
<div class="line"><a name="l09573"></a><span class="lineno"> 9573</span>  </div>
|
||
<div class="line"><a name="l09574"></a><span class="lineno"> 9574</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1invalid__iterator.html#a4e849260a3caa1b288c7e619130c6c09">invalid_iterator::create</a>(214, <span class="stringliteral">"cannot get value"</span>));</div>
|
||
<div class="line"><a name="l09575"></a><span class="lineno"> 9575</span>  }</div>
|
||
<div class="line"><a name="l09576"></a><span class="lineno"> 9576</span>  }</div>
|
||
<div class="line"><a name="l09577"></a><span class="lineno"> 9577</span>  }</div>
|
||
<div class="line"><a name="l09578"></a><span class="lineno"> 9578</span>  </div>
|
||
<div class="line"><a name="l09583"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iter__impl.html#a6da3d2b34528aff328f3dcb513076dec"> 9583</a></span>  <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#a69e52f890ce8c556fd68ce109e24b360">pointer</a> <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#a6da3d2b34528aff328f3dcb513076dec">operator-></a>()<span class="keyword"> const</span></div>
|
||
<div class="line"><a name="l09584"></a><span class="lineno"> 9584</span> <span class="keyword"> </span>{</div>
|
||
<div class="line"><a name="l09585"></a><span class="lineno"> 9585</span>  assert(m_object != <span class="keyword">nullptr</span>);</div>
|
||
<div class="line"><a name="l09586"></a><span class="lineno"> 9586</span>  </div>
|
||
<div class="line"><a name="l09587"></a><span class="lineno"> 9587</span>  <span class="keywordflow">switch</span> (m_object->m_type)</div>
|
||
<div class="line"><a name="l09588"></a><span class="lineno"> 9588</span>  {</div>
|
||
<div class="line"><a name="l09589"></a><span class="lineno"> 9589</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>:</div>
|
||
<div class="line"><a name="l09590"></a><span class="lineno"> 9590</span>  {</div>
|
||
<div class="line"><a name="l09591"></a><span class="lineno"> 9591</span>  assert(m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a8cb0af3498061426c1d0a65ad6220408">object_iterator</a> != m_object->m_value.object->end());</div>
|
||
<div class="line"><a name="l09592"></a><span class="lineno"> 9592</span>  <span class="keywordflow">return</span> &(m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a8cb0af3498061426c1d0a65ad6220408">object_iterator</a>->second);</div>
|
||
<div class="line"><a name="l09593"></a><span class="lineno"> 9593</span>  }</div>
|
||
<div class="line"><a name="l09594"></a><span class="lineno"> 9594</span>  </div>
|
||
<div class="line"><a name="l09595"></a><span class="lineno"> 9595</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>:</div>
|
||
<div class="line"><a name="l09596"></a><span class="lineno"> 9596</span>  {</div>
|
||
<div class="line"><a name="l09597"></a><span class="lineno"> 9597</span>  assert(m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a8294a6e6f01b58e1cce8fbae66a50b5d">array_iterator</a> != m_object->m_value.array->end());</div>
|
||
<div class="line"><a name="l09598"></a><span class="lineno"> 9598</span>  <span class="keywordflow">return</span> &*m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a8294a6e6f01b58e1cce8fbae66a50b5d">array_iterator</a>;</div>
|
||
<div class="line"><a name="l09599"></a><span class="lineno"> 9599</span>  }</div>
|
||
<div class="line"><a name="l09600"></a><span class="lineno"> 9600</span>  </div>
|
||
<div class="line"><a name="l09601"></a><span class="lineno"> 9601</span>  <span class="keywordflow">default</span>:</div>
|
||
<div class="line"><a name="l09602"></a><span class="lineno"> 9602</span>  {</div>
|
||
<div class="line"><a name="l09603"></a><span class="lineno"> 9603</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a355f2770653ff7bdd5c74b204b5a3ad0">JSON_HEDLEY_LIKELY</a>(m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a2b3bb45f968210e42c282017eeeb63a8">primitive_iterator</a>.<a class="code" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#a8d1a7d46b3fcd06edd034f04ededb5e4">is_begin</a>()))</div>
|
||
<div class="line"><a name="l09604"></a><span class="lineno"> 9604</span>  {</div>
|
||
<div class="line"><a name="l09605"></a><span class="lineno"> 9605</span>  <span class="keywordflow">return</span> m_object;</div>
|
||
<div class="line"><a name="l09606"></a><span class="lineno"> 9606</span>  }</div>
|
||
<div class="line"><a name="l09607"></a><span class="lineno"> 9607</span>  </div>
|
||
<div class="line"><a name="l09608"></a><span class="lineno"> 9608</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1invalid__iterator.html#a4e849260a3caa1b288c7e619130c6c09">invalid_iterator::create</a>(214, <span class="stringliteral">"cannot get value"</span>));</div>
|
||
<div class="line"><a name="l09609"></a><span class="lineno"> 9609</span>  }</div>
|
||
<div class="line"><a name="l09610"></a><span class="lineno"> 9610</span>  }</div>
|
||
<div class="line"><a name="l09611"></a><span class="lineno"> 9611</span>  }</div>
|
||
<div class="line"><a name="l09612"></a><span class="lineno"> 9612</span>  </div>
|
||
<div class="line"><a name="l09617"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iter__impl.html#a60f3b0a96cc0bff9a7e6ab84ca538a45"> 9617</a></span>  <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">iter_impl</a> <span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#a60f3b0a96cc0bff9a7e6ab84ca538a45">operator++</a>(<span class="keywordtype">int</span>)</div>
|
||
<div class="line"><a name="l09618"></a><span class="lineno"> 9618</span>  {</div>
|
||
<div class="line"><a name="l09619"></a><span class="lineno"> 9619</span>  <span class="keyword">auto</span> result = *<span class="keyword">this</span>;</div>
|
||
<div class="line"><a name="l09620"></a><span class="lineno"> 9620</span>  ++(*this);</div>
|
||
<div class="line"><a name="l09621"></a><span class="lineno"> 9621</span>  <span class="keywordflow">return</span> result;</div>
|
||
<div class="line"><a name="l09622"></a><span class="lineno"> 9622</span>  }</div>
|
||
<div class="line"><a name="l09623"></a><span class="lineno"> 9623</span>  </div>
|
||
<div class="line"><a name="l09628"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iter__impl.html#abdfe2a7f464400a7ab572782d14b922f"> 9628</a></span>  <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">iter_impl</a>& <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#abdfe2a7f464400a7ab572782d14b922f">operator++</a>()</div>
|
||
<div class="line"><a name="l09629"></a><span class="lineno"> 9629</span>  {</div>
|
||
<div class="line"><a name="l09630"></a><span class="lineno"> 9630</span>  assert(m_object != <span class="keyword">nullptr</span>);</div>
|
||
<div class="line"><a name="l09631"></a><span class="lineno"> 9631</span>  </div>
|
||
<div class="line"><a name="l09632"></a><span class="lineno"> 9632</span>  <span class="keywordflow">switch</span> (m_object->m_type)</div>
|
||
<div class="line"><a name="l09633"></a><span class="lineno"> 9633</span>  {</div>
|
||
<div class="line"><a name="l09634"></a><span class="lineno"> 9634</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>:</div>
|
||
<div class="line"><a name="l09635"></a><span class="lineno"> 9635</span>  {</div>
|
||
<div class="line"><a name="l09636"></a><span class="lineno"> 9636</span>  std::advance(m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a8cb0af3498061426c1d0a65ad6220408">object_iterator</a>, 1);</div>
|
||
<div class="line"><a name="l09637"></a><span class="lineno"> 9637</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l09638"></a><span class="lineno"> 9638</span>  }</div>
|
||
<div class="line"><a name="l09639"></a><span class="lineno"> 9639</span>  </div>
|
||
<div class="line"><a name="l09640"></a><span class="lineno"> 9640</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>:</div>
|
||
<div class="line"><a name="l09641"></a><span class="lineno"> 9641</span>  {</div>
|
||
<div class="line"><a name="l09642"></a><span class="lineno"> 9642</span>  std::advance(m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a8294a6e6f01b58e1cce8fbae66a50b5d">array_iterator</a>, 1);</div>
|
||
<div class="line"><a name="l09643"></a><span class="lineno"> 9643</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l09644"></a><span class="lineno"> 9644</span>  }</div>
|
||
<div class="line"><a name="l09645"></a><span class="lineno"> 9645</span>  </div>
|
||
<div class="line"><a name="l09646"></a><span class="lineno"> 9646</span>  <span class="keywordflow">default</span>:</div>
|
||
<div class="line"><a name="l09647"></a><span class="lineno"> 9647</span>  {</div>
|
||
<div class="line"><a name="l09648"></a><span class="lineno"> 9648</span>  ++m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a2b3bb45f968210e42c282017eeeb63a8">primitive_iterator</a>;</div>
|
||
<div class="line"><a name="l09649"></a><span class="lineno"> 9649</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l09650"></a><span class="lineno"> 9650</span>  }</div>
|
||
<div class="line"><a name="l09651"></a><span class="lineno"> 9651</span>  }</div>
|
||
<div class="line"><a name="l09652"></a><span class="lineno"> 9652</span>  </div>
|
||
<div class="line"><a name="l09653"></a><span class="lineno"> 9653</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
|
||
<div class="line"><a name="l09654"></a><span class="lineno"> 9654</span>  }</div>
|
||
<div class="line"><a name="l09655"></a><span class="lineno"> 9655</span>  </div>
|
||
<div class="line"><a name="l09660"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iter__impl.html#af91fb0bb9b2a2e96af030564ded2d92c"> 9660</a></span>  <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">iter_impl</a> <span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#af91fb0bb9b2a2e96af030564ded2d92c">operator--</a>(<span class="keywordtype">int</span>)</div>
|
||
<div class="line"><a name="l09661"></a><span class="lineno"> 9661</span>  {</div>
|
||
<div class="line"><a name="l09662"></a><span class="lineno"> 9662</span>  <span class="keyword">auto</span> result = *<span class="keyword">this</span>;</div>
|
||
<div class="line"><a name="l09663"></a><span class="lineno"> 9663</span>  --(*this);</div>
|
||
<div class="line"><a name="l09664"></a><span class="lineno"> 9664</span>  <span class="keywordflow">return</span> result;</div>
|
||
<div class="line"><a name="l09665"></a><span class="lineno"> 9665</span>  }</div>
|
||
<div class="line"><a name="l09666"></a><span class="lineno"> 9666</span>  </div>
|
||
<div class="line"><a name="l09671"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iter__impl.html#a84e689fb581d651d130039f7cb81494a"> 9671</a></span>  <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">iter_impl</a>& <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#a84e689fb581d651d130039f7cb81494a">operator--</a>()</div>
|
||
<div class="line"><a name="l09672"></a><span class="lineno"> 9672</span>  {</div>
|
||
<div class="line"><a name="l09673"></a><span class="lineno"> 9673</span>  assert(m_object != <span class="keyword">nullptr</span>);</div>
|
||
<div class="line"><a name="l09674"></a><span class="lineno"> 9674</span>  </div>
|
||
<div class="line"><a name="l09675"></a><span class="lineno"> 9675</span>  <span class="keywordflow">switch</span> (m_object->m_type)</div>
|
||
<div class="line"><a name="l09676"></a><span class="lineno"> 9676</span>  {</div>
|
||
<div class="line"><a name="l09677"></a><span class="lineno"> 9677</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>:</div>
|
||
<div class="line"><a name="l09678"></a><span class="lineno"> 9678</span>  {</div>
|
||
<div class="line"><a name="l09679"></a><span class="lineno"> 9679</span>  std::advance(m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a8cb0af3498061426c1d0a65ad6220408">object_iterator</a>, -1);</div>
|
||
<div class="line"><a name="l09680"></a><span class="lineno"> 9680</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l09681"></a><span class="lineno"> 9681</span>  }</div>
|
||
<div class="line"><a name="l09682"></a><span class="lineno"> 9682</span>  </div>
|
||
<div class="line"><a name="l09683"></a><span class="lineno"> 9683</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>:</div>
|
||
<div class="line"><a name="l09684"></a><span class="lineno"> 9684</span>  {</div>
|
||
<div class="line"><a name="l09685"></a><span class="lineno"> 9685</span>  std::advance(m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a8294a6e6f01b58e1cce8fbae66a50b5d">array_iterator</a>, -1);</div>
|
||
<div class="line"><a name="l09686"></a><span class="lineno"> 9686</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l09687"></a><span class="lineno"> 9687</span>  }</div>
|
||
<div class="line"><a name="l09688"></a><span class="lineno"> 9688</span>  </div>
|
||
<div class="line"><a name="l09689"></a><span class="lineno"> 9689</span>  <span class="keywordflow">default</span>:</div>
|
||
<div class="line"><a name="l09690"></a><span class="lineno"> 9690</span>  {</div>
|
||
<div class="line"><a name="l09691"></a><span class="lineno"> 9691</span>  --m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a2b3bb45f968210e42c282017eeeb63a8">primitive_iterator</a>;</div>
|
||
<div class="line"><a name="l09692"></a><span class="lineno"> 9692</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l09693"></a><span class="lineno"> 9693</span>  }</div>
|
||
<div class="line"><a name="l09694"></a><span class="lineno"> 9694</span>  }</div>
|
||
<div class="line"><a name="l09695"></a><span class="lineno"> 9695</span>  </div>
|
||
<div class="line"><a name="l09696"></a><span class="lineno"> 9696</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
|
||
<div class="line"><a name="l09697"></a><span class="lineno"> 9697</span>  }</div>
|
||
<div class="line"><a name="l09698"></a><span class="lineno"> 9698</span>  </div>
|
||
<div class="line"><a name="l09703"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iter__impl.html#a2b592605b63ae7f5401996ffa3b14393"> 9703</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#a2b592605b63ae7f5401996ffa3b14393">operator==</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">iter_impl</a>& other)<span class="keyword"> const</span></div>
|
||
<div class="line"><a name="l09704"></a><span class="lineno"> 9704</span> <span class="keyword"> </span>{</div>
|
||
<div class="line"><a name="l09705"></a><span class="lineno"> 9705</span>  <span class="comment">// if objects are not the same, the comparison is undefined</span></div>
|
||
<div class="line"><a name="l09706"></a><span class="lineno"> 9706</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(m_object != other.m_object))</div>
|
||
<div class="line"><a name="l09707"></a><span class="lineno"> 9707</span>  {</div>
|
||
<div class="line"><a name="l09708"></a><span class="lineno"> 9708</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1invalid__iterator.html#a4e849260a3caa1b288c7e619130c6c09">invalid_iterator::create</a>(212, <span class="stringliteral">"cannot compare iterators of different containers"</span>));</div>
|
||
<div class="line"><a name="l09709"></a><span class="lineno"> 9709</span>  }</div>
|
||
<div class="line"><a name="l09710"></a><span class="lineno"> 9710</span>  </div>
|
||
<div class="line"><a name="l09711"></a><span class="lineno"> 9711</span>  assert(m_object != <span class="keyword">nullptr</span>);</div>
|
||
<div class="line"><a name="l09712"></a><span class="lineno"> 9712</span>  </div>
|
||
<div class="line"><a name="l09713"></a><span class="lineno"> 9713</span>  <span class="keywordflow">switch</span> (m_object->m_type)</div>
|
||
<div class="line"><a name="l09714"></a><span class="lineno"> 9714</span>  {</div>
|
||
<div class="line"><a name="l09715"></a><span class="lineno"> 9715</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>:</div>
|
||
<div class="line"><a name="l09716"></a><span class="lineno"> 9716</span>  <span class="keywordflow">return</span> (m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a8cb0af3498061426c1d0a65ad6220408">object_iterator</a> == other.m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a8cb0af3498061426c1d0a65ad6220408">object_iterator</a>);</div>
|
||
<div class="line"><a name="l09717"></a><span class="lineno"> 9717</span>  </div>
|
||
<div class="line"><a name="l09718"></a><span class="lineno"> 9718</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>:</div>
|
||
<div class="line"><a name="l09719"></a><span class="lineno"> 9719</span>  <span class="keywordflow">return</span> (m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a8294a6e6f01b58e1cce8fbae66a50b5d">array_iterator</a> == other.m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a8294a6e6f01b58e1cce8fbae66a50b5d">array_iterator</a>);</div>
|
||
<div class="line"><a name="l09720"></a><span class="lineno"> 9720</span>  </div>
|
||
<div class="line"><a name="l09721"></a><span class="lineno"> 9721</span>  <span class="keywordflow">default</span>:</div>
|
||
<div class="line"><a name="l09722"></a><span class="lineno"> 9722</span>  <span class="keywordflow">return</span> (m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a2b3bb45f968210e42c282017eeeb63a8">primitive_iterator</a> == other.m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a2b3bb45f968210e42c282017eeeb63a8">primitive_iterator</a>);</div>
|
||
<div class="line"><a name="l09723"></a><span class="lineno"> 9723</span>  }</div>
|
||
<div class="line"><a name="l09724"></a><span class="lineno"> 9724</span>  }</div>
|
||
<div class="line"><a name="l09725"></a><span class="lineno"> 9725</span>  </div>
|
||
<div class="line"><a name="l09730"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iter__impl.html#aeab0e2b5da70b3bdebecd5b1a6ee66a6"> 9730</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#aeab0e2b5da70b3bdebecd5b1a6ee66a6">operator!=</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">iter_impl</a>& other)<span class="keyword"> const</span></div>
|
||
<div class="line"><a name="l09731"></a><span class="lineno"> 9731</span> <span class="keyword"> </span>{</div>
|
||
<div class="line"><a name="l09732"></a><span class="lineno"> 9732</span>  <span class="keywordflow">return</span> not <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#a2b592605b63ae7f5401996ffa3b14393">operator==</a>(other);</div>
|
||
<div class="line"><a name="l09733"></a><span class="lineno"> 9733</span>  }</div>
|
||
<div class="line"><a name="l09734"></a><span class="lineno"> 9734</span>  </div>
|
||
<div class="line"><a name="l09739"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iter__impl.html#a0d14cd76203e00bdcef6a64a5d055cc7"> 9739</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#a0d14cd76203e00bdcef6a64a5d055cc7">operator<</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">iter_impl</a>& other)<span class="keyword"> const</span></div>
|
||
<div class="line"><a name="l09740"></a><span class="lineno"> 9740</span> <span class="keyword"> </span>{</div>
|
||
<div class="line"><a name="l09741"></a><span class="lineno"> 9741</span>  <span class="comment">// if objects are not the same, the comparison is undefined</span></div>
|
||
<div class="line"><a name="l09742"></a><span class="lineno"> 9742</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(m_object != other.m_object))</div>
|
||
<div class="line"><a name="l09743"></a><span class="lineno"> 9743</span>  {</div>
|
||
<div class="line"><a name="l09744"></a><span class="lineno"> 9744</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1invalid__iterator.html#a4e849260a3caa1b288c7e619130c6c09">invalid_iterator::create</a>(212, <span class="stringliteral">"cannot compare iterators of different containers"</span>));</div>
|
||
<div class="line"><a name="l09745"></a><span class="lineno"> 9745</span>  }</div>
|
||
<div class="line"><a name="l09746"></a><span class="lineno"> 9746</span>  </div>
|
||
<div class="line"><a name="l09747"></a><span class="lineno"> 9747</span>  assert(m_object != <span class="keyword">nullptr</span>);</div>
|
||
<div class="line"><a name="l09748"></a><span class="lineno"> 9748</span>  </div>
|
||
<div class="line"><a name="l09749"></a><span class="lineno"> 9749</span>  <span class="keywordflow">switch</span> (m_object->m_type)</div>
|
||
<div class="line"><a name="l09750"></a><span class="lineno"> 9750</span>  {</div>
|
||
<div class="line"><a name="l09751"></a><span class="lineno"> 9751</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>:</div>
|
||
<div class="line"><a name="l09752"></a><span class="lineno"> 9752</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1invalid__iterator.html#a4e849260a3caa1b288c7e619130c6c09">invalid_iterator::create</a>(213, <span class="stringliteral">"cannot compare order of object iterators"</span>));</div>
|
||
<div class="line"><a name="l09753"></a><span class="lineno"> 9753</span>  </div>
|
||
<div class="line"><a name="l09754"></a><span class="lineno"> 9754</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>:</div>
|
||
<div class="line"><a name="l09755"></a><span class="lineno"> 9755</span>  <span class="keywordflow">return</span> (m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a8294a6e6f01b58e1cce8fbae66a50b5d">array_iterator</a> < other.m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a8294a6e6f01b58e1cce8fbae66a50b5d">array_iterator</a>);</div>
|
||
<div class="line"><a name="l09756"></a><span class="lineno"> 9756</span>  </div>
|
||
<div class="line"><a name="l09757"></a><span class="lineno"> 9757</span>  <span class="keywordflow">default</span>:</div>
|
||
<div class="line"><a name="l09758"></a><span class="lineno"> 9758</span>  <span class="keywordflow">return</span> (m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a2b3bb45f968210e42c282017eeeb63a8">primitive_iterator</a> < other.m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a2b3bb45f968210e42c282017eeeb63a8">primitive_iterator</a>);</div>
|
||
<div class="line"><a name="l09759"></a><span class="lineno"> 9759</span>  }</div>
|
||
<div class="line"><a name="l09760"></a><span class="lineno"> 9760</span>  }</div>
|
||
<div class="line"><a name="l09761"></a><span class="lineno"> 9761</span>  </div>
|
||
<div class="line"><a name="l09766"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iter__impl.html#ac6f71b36d7c87e427d1fee83f2600fad"> 9766</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#ac6f71b36d7c87e427d1fee83f2600fad">operator<=</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">iter_impl</a>& other)<span class="keyword"> const</span></div>
|
||
<div class="line"><a name="l09767"></a><span class="lineno"> 9767</span> <span class="keyword"> </span>{</div>
|
||
<div class="line"><a name="l09768"></a><span class="lineno"> 9768</span>  <span class="keywordflow">return</span> not other.operator < (*this);</div>
|
||
<div class="line"><a name="l09769"></a><span class="lineno"> 9769</span>  }</div>
|
||
<div class="line"><a name="l09770"></a><span class="lineno"> 9770</span>  </div>
|
||
<div class="line"><a name="l09775"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iter__impl.html#aaf3620b8dfa4bed8a9ac2b51dd55dbd7"> 9775</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#aaf3620b8dfa4bed8a9ac2b51dd55dbd7">operator></a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">iter_impl</a>& other)<span class="keyword"> const</span></div>
|
||
<div class="line"><a name="l09776"></a><span class="lineno"> 9776</span> <span class="keyword"> </span>{</div>
|
||
<div class="line"><a name="l09777"></a><span class="lineno"> 9777</span>  <span class="keywordflow">return</span> not <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#ac6f71b36d7c87e427d1fee83f2600fad">operator<=</a>(other);</div>
|
||
<div class="line"><a name="l09778"></a><span class="lineno"> 9778</span>  }</div>
|
||
<div class="line"><a name="l09779"></a><span class="lineno"> 9779</span>  </div>
|
||
<div class="line"><a name="l09784"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iter__impl.html#a634f85da575cb60b012a687efa26e11a"> 9784</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#a634f85da575cb60b012a687efa26e11a">operator>=</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">iter_impl</a>& other)<span class="keyword"> const</span></div>
|
||
<div class="line"><a name="l09785"></a><span class="lineno"> 9785</span> <span class="keyword"> </span>{</div>
|
||
<div class="line"><a name="l09786"></a><span class="lineno"> 9786</span>  <span class="keywordflow">return</span> not <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#a0d14cd76203e00bdcef6a64a5d055cc7">operator<</a>(other);</div>
|
||
<div class="line"><a name="l09787"></a><span class="lineno"> 9787</span>  }</div>
|
||
<div class="line"><a name="l09788"></a><span class="lineno"> 9788</span>  </div>
|
||
<div class="line"><a name="l09793"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iter__impl.html#a3eef94f9d167046e7f773aeb6b78090c"> 9793</a></span>  <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">iter_impl</a>& <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#a3eef94f9d167046e7f773aeb6b78090c">operator+=</a>(<a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#a2f7ea9f7022850809c60fc3263775840">difference_type</a> i)</div>
|
||
<div class="line"><a name="l09794"></a><span class="lineno"> 9794</span>  {</div>
|
||
<div class="line"><a name="l09795"></a><span class="lineno"> 9795</span>  assert(m_object != <span class="keyword">nullptr</span>);</div>
|
||
<div class="line"><a name="l09796"></a><span class="lineno"> 9796</span>  </div>
|
||
<div class="line"><a name="l09797"></a><span class="lineno"> 9797</span>  <span class="keywordflow">switch</span> (m_object->m_type)</div>
|
||
<div class="line"><a name="l09798"></a><span class="lineno"> 9798</span>  {</div>
|
||
<div class="line"><a name="l09799"></a><span class="lineno"> 9799</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>:</div>
|
||
<div class="line"><a name="l09800"></a><span class="lineno"> 9800</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1invalid__iterator.html#a4e849260a3caa1b288c7e619130c6c09">invalid_iterator::create</a>(209, <span class="stringliteral">"cannot use offsets with object iterators"</span>));</div>
|
||
<div class="line"><a name="l09801"></a><span class="lineno"> 9801</span>  </div>
|
||
<div class="line"><a name="l09802"></a><span class="lineno"> 9802</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>:</div>
|
||
<div class="line"><a name="l09803"></a><span class="lineno"> 9803</span>  {</div>
|
||
<div class="line"><a name="l09804"></a><span class="lineno"> 9804</span>  std::advance(m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a8294a6e6f01b58e1cce8fbae66a50b5d">array_iterator</a>, i);</div>
|
||
<div class="line"><a name="l09805"></a><span class="lineno"> 9805</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l09806"></a><span class="lineno"> 9806</span>  }</div>
|
||
<div class="line"><a name="l09807"></a><span class="lineno"> 9807</span>  </div>
|
||
<div class="line"><a name="l09808"></a><span class="lineno"> 9808</span>  <span class="keywordflow">default</span>:</div>
|
||
<div class="line"><a name="l09809"></a><span class="lineno"> 9809</span>  {</div>
|
||
<div class="line"><a name="l09810"></a><span class="lineno"> 9810</span>  m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a2b3bb45f968210e42c282017eeeb63a8">primitive_iterator</a> += i;</div>
|
||
<div class="line"><a name="l09811"></a><span class="lineno"> 9811</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l09812"></a><span class="lineno"> 9812</span>  }</div>
|
||
<div class="line"><a name="l09813"></a><span class="lineno"> 9813</span>  }</div>
|
||
<div class="line"><a name="l09814"></a><span class="lineno"> 9814</span>  </div>
|
||
<div class="line"><a name="l09815"></a><span class="lineno"> 9815</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
|
||
<div class="line"><a name="l09816"></a><span class="lineno"> 9816</span>  }</div>
|
||
<div class="line"><a name="l09817"></a><span class="lineno"> 9817</span>  </div>
|
||
<div class="line"><a name="l09822"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iter__impl.html#abcc9d51bc52f2e8483bbe4018f05e978"> 9822</a></span>  <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">iter_impl</a>& <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#abcc9d51bc52f2e8483bbe4018f05e978">operator-=</a>(<a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#a2f7ea9f7022850809c60fc3263775840">difference_type</a> i)</div>
|
||
<div class="line"><a name="l09823"></a><span class="lineno"> 9823</span>  {</div>
|
||
<div class="line"><a name="l09824"></a><span class="lineno"> 9824</span>  <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#a3eef94f9d167046e7f773aeb6b78090c">operator+=</a>(-i);</div>
|
||
<div class="line"><a name="l09825"></a><span class="lineno"> 9825</span>  }</div>
|
||
<div class="line"><a name="l09826"></a><span class="lineno"> 9826</span>  </div>
|
||
<div class="line"><a name="l09831"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iter__impl.html#a8ef76aeb5a5032768f0f61f48ac189c0"> 9831</a></span>  <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">iter_impl</a> <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#a8ef76aeb5a5032768f0f61f48ac189c0">operator+</a>(<a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#a2f7ea9f7022850809c60fc3263775840">difference_type</a> i)<span class="keyword"> const</span></div>
|
||
<div class="line"><a name="l09832"></a><span class="lineno"> 9832</span> <span class="keyword"> </span>{</div>
|
||
<div class="line"><a name="l09833"></a><span class="lineno"> 9833</span>  <span class="keyword">auto</span> result = *<span class="keyword">this</span>;</div>
|
||
<div class="line"><a name="l09834"></a><span class="lineno"> 9834</span>  result += i;</div>
|
||
<div class="line"><a name="l09835"></a><span class="lineno"> 9835</span>  <span class="keywordflow">return</span> result;</div>
|
||
<div class="line"><a name="l09836"></a><span class="lineno"> 9836</span>  }</div>
|
||
<div class="line"><a name="l09837"></a><span class="lineno"> 9837</span>  </div>
|
||
<div class="line"><a name="l09842"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iter__impl.html#a94108d1a7563e103534f23eb5c1ee175"> 9842</a></span>  <span class="keyword">friend</span> <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">iter_impl</a> <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#a94108d1a7563e103534f23eb5c1ee175">operator+</a>(<a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#a2f7ea9f7022850809c60fc3263775840">difference_type</a> i, <span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">iter_impl</a>& it)</div>
|
||
<div class="line"><a name="l09843"></a><span class="lineno"> 9843</span>  {</div>
|
||
<div class="line"><a name="l09844"></a><span class="lineno"> 9844</span>  <span class="keyword">auto</span> result = it;</div>
|
||
<div class="line"><a name="l09845"></a><span class="lineno"> 9845</span>  result += i;</div>
|
||
<div class="line"><a name="l09846"></a><span class="lineno"> 9846</span>  <span class="keywordflow">return</span> result;</div>
|
||
<div class="line"><a name="l09847"></a><span class="lineno"> 9847</span>  }</div>
|
||
<div class="line"><a name="l09848"></a><span class="lineno"> 9848</span>  </div>
|
||
<div class="line"><a name="l09853"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iter__impl.html#a0dd9c415b94a02ff2aa25da75e52da30"> 9853</a></span>  <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">iter_impl</a> <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#a0dd9c415b94a02ff2aa25da75e52da30">operator-</a>(<a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#a2f7ea9f7022850809c60fc3263775840">difference_type</a> i)<span class="keyword"> const</span></div>
|
||
<div class="line"><a name="l09854"></a><span class="lineno"> 9854</span> <span class="keyword"> </span>{</div>
|
||
<div class="line"><a name="l09855"></a><span class="lineno"> 9855</span>  <span class="keyword">auto</span> result = *<span class="keyword">this</span>;</div>
|
||
<div class="line"><a name="l09856"></a><span class="lineno"> 9856</span>  result -= i;</div>
|
||
<div class="line"><a name="l09857"></a><span class="lineno"> 9857</span>  <span class="keywordflow">return</span> result;</div>
|
||
<div class="line"><a name="l09858"></a><span class="lineno"> 9858</span>  }</div>
|
||
<div class="line"><a name="l09859"></a><span class="lineno"> 9859</span>  </div>
|
||
<div class="line"><a name="l09864"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iter__impl.html#a49bf3e708a9c1c88c415011735962d06"> 9864</a></span>  <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#a2f7ea9f7022850809c60fc3263775840">difference_type</a> <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#a49bf3e708a9c1c88c415011735962d06">operator-</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">iter_impl</a>& other)<span class="keyword"> const</span></div>
|
||
<div class="line"><a name="l09865"></a><span class="lineno"> 9865</span> <span class="keyword"> </span>{</div>
|
||
<div class="line"><a name="l09866"></a><span class="lineno"> 9866</span>  assert(m_object != <span class="keyword">nullptr</span>);</div>
|
||
<div class="line"><a name="l09867"></a><span class="lineno"> 9867</span>  </div>
|
||
<div class="line"><a name="l09868"></a><span class="lineno"> 9868</span>  <span class="keywordflow">switch</span> (m_object->m_type)</div>
|
||
<div class="line"><a name="l09869"></a><span class="lineno"> 9869</span>  {</div>
|
||
<div class="line"><a name="l09870"></a><span class="lineno"> 9870</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>:</div>
|
||
<div class="line"><a name="l09871"></a><span class="lineno"> 9871</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1invalid__iterator.html#a4e849260a3caa1b288c7e619130c6c09">invalid_iterator::create</a>(209, <span class="stringliteral">"cannot use offsets with object iterators"</span>));</div>
|
||
<div class="line"><a name="l09872"></a><span class="lineno"> 9872</span>  </div>
|
||
<div class="line"><a name="l09873"></a><span class="lineno"> 9873</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>:</div>
|
||
<div class="line"><a name="l09874"></a><span class="lineno"> 9874</span>  <span class="keywordflow">return</span> m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a8294a6e6f01b58e1cce8fbae66a50b5d">array_iterator</a> - other.m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a8294a6e6f01b58e1cce8fbae66a50b5d">array_iterator</a>;</div>
|
||
<div class="line"><a name="l09875"></a><span class="lineno"> 9875</span>  </div>
|
||
<div class="line"><a name="l09876"></a><span class="lineno"> 9876</span>  <span class="keywordflow">default</span>:</div>
|
||
<div class="line"><a name="l09877"></a><span class="lineno"> 9877</span>  <span class="keywordflow">return</span> m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a2b3bb45f968210e42c282017eeeb63a8">primitive_iterator</a> - other.m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a2b3bb45f968210e42c282017eeeb63a8">primitive_iterator</a>;</div>
|
||
<div class="line"><a name="l09878"></a><span class="lineno"> 9878</span>  }</div>
|
||
<div class="line"><a name="l09879"></a><span class="lineno"> 9879</span>  }</div>
|
||
<div class="line"><a name="l09880"></a><span class="lineno"> 9880</span>  </div>
|
||
<div class="line"><a name="l09885"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iter__impl.html#ac0b9276f1102ed4b9cd3f5f56287e3ce"> 9885</a></span>  <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#a5be8001be099c6b82310f4d387b953ce">reference</a> <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#ac0b9276f1102ed4b9cd3f5f56287e3ce">operator[]</a>(<a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#a2f7ea9f7022850809c60fc3263775840">difference_type</a> n)<span class="keyword"> const</span></div>
|
||
<div class="line"><a name="l09886"></a><span class="lineno"> 9886</span> <span class="keyword"> </span>{</div>
|
||
<div class="line"><a name="l09887"></a><span class="lineno"> 9887</span>  assert(m_object != <span class="keyword">nullptr</span>);</div>
|
||
<div class="line"><a name="l09888"></a><span class="lineno"> 9888</span>  </div>
|
||
<div class="line"><a name="l09889"></a><span class="lineno"> 9889</span>  <span class="keywordflow">switch</span> (m_object->m_type)</div>
|
||
<div class="line"><a name="l09890"></a><span class="lineno"> 9890</span>  {</div>
|
||
<div class="line"><a name="l09891"></a><span class="lineno"> 9891</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>:</div>
|
||
<div class="line"><a name="l09892"></a><span class="lineno"> 9892</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1invalid__iterator.html#a4e849260a3caa1b288c7e619130c6c09">invalid_iterator::create</a>(208, <span class="stringliteral">"cannot use operator[] for object iterators"</span>));</div>
|
||
<div class="line"><a name="l09893"></a><span class="lineno"> 9893</span>  </div>
|
||
<div class="line"><a name="l09894"></a><span class="lineno"> 9894</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>:</div>
|
||
<div class="line"><a name="l09895"></a><span class="lineno"> 9895</span>  <span class="keywordflow">return</span> *std::next(m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a8294a6e6f01b58e1cce8fbae66a50b5d">array_iterator</a>, n);</div>
|
||
<div class="line"><a name="l09896"></a><span class="lineno"> 9896</span>  </div>
|
||
<div class="line"><a name="l09897"></a><span class="lineno"> 9897</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a37a6259cc0c1dae299a7866489dff0bd">value_t::null</a>:</div>
|
||
<div class="line"><a name="l09898"></a><span class="lineno"> 9898</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1invalid__iterator.html#a4e849260a3caa1b288c7e619130c6c09">invalid_iterator::create</a>(214, <span class="stringliteral">"cannot get value"</span>));</div>
|
||
<div class="line"><a name="l09899"></a><span class="lineno"> 9899</span>  </div>
|
||
<div class="line"><a name="l09900"></a><span class="lineno"> 9900</span>  <span class="keywordflow">default</span>:</div>
|
||
<div class="line"><a name="l09901"></a><span class="lineno"> 9901</span>  {</div>
|
||
<div class="line"><a name="l09902"></a><span class="lineno"> 9902</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a355f2770653ff7bdd5c74b204b5a3ad0">JSON_HEDLEY_LIKELY</a>(m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a2b3bb45f968210e42c282017eeeb63a8">primitive_iterator</a>.<a class="code" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#ae952990886ca1756229f916661a8af81">get_value</a>() == -n))</div>
|
||
<div class="line"><a name="l09903"></a><span class="lineno"> 9903</span>  {</div>
|
||
<div class="line"><a name="l09904"></a><span class="lineno"> 9904</span>  <span class="keywordflow">return</span> *m_object;</div>
|
||
<div class="line"><a name="l09905"></a><span class="lineno"> 9905</span>  }</div>
|
||
<div class="line"><a name="l09906"></a><span class="lineno"> 9906</span>  </div>
|
||
<div class="line"><a name="l09907"></a><span class="lineno"> 9907</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1invalid__iterator.html#a4e849260a3caa1b288c7e619130c6c09">invalid_iterator::create</a>(214, <span class="stringliteral">"cannot get value"</span>));</div>
|
||
<div class="line"><a name="l09908"></a><span class="lineno"> 9908</span>  }</div>
|
||
<div class="line"><a name="l09909"></a><span class="lineno"> 9909</span>  }</div>
|
||
<div class="line"><a name="l09910"></a><span class="lineno"> 9910</span>  }</div>
|
||
<div class="line"><a name="l09911"></a><span class="lineno"> 9911</span>  </div>
|
||
<div class="line"><a name="l09916"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iter__impl.html#a15dfb2744fed2ef40c12a9e9a20d6dbc"> 9916</a></span>  <span class="keyword">const</span> <span class="keyword">typename</span> object_t::key_type& <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#a15dfb2744fed2ef40c12a9e9a20d6dbc">key</a>()<span class="keyword"> const</span></div>
|
||
<div class="line"><a name="l09917"></a><span class="lineno"> 9917</span> <span class="keyword"> </span>{</div>
|
||
<div class="line"><a name="l09918"></a><span class="lineno"> 9918</span>  assert(m_object != <span class="keyword">nullptr</span>);</div>
|
||
<div class="line"><a name="l09919"></a><span class="lineno"> 9919</span>  </div>
|
||
<div class="line"><a name="l09920"></a><span class="lineno"> 9920</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a355f2770653ff7bdd5c74b204b5a3ad0">JSON_HEDLEY_LIKELY</a>(m_object->is_object()))</div>
|
||
<div class="line"><a name="l09921"></a><span class="lineno"> 9921</span>  {</div>
|
||
<div class="line"><a name="l09922"></a><span class="lineno"> 9922</span>  <span class="keywordflow">return</span> m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a8cb0af3498061426c1d0a65ad6220408">object_iterator</a>->first;</div>
|
||
<div class="line"><a name="l09923"></a><span class="lineno"> 9923</span>  }</div>
|
||
<div class="line"><a name="l09924"></a><span class="lineno"> 9924</span>  </div>
|
||
<div class="line"><a name="l09925"></a><span class="lineno"> 9925</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1invalid__iterator.html#a4e849260a3caa1b288c7e619130c6c09">invalid_iterator::create</a>(207, <span class="stringliteral">"cannot use key() for non-object iterators"</span>));</div>
|
||
<div class="line"><a name="l09926"></a><span class="lineno"> 9926</span>  }</div>
|
||
<div class="line"><a name="l09927"></a><span class="lineno"> 9927</span>  </div>
|
||
<div class="line"><a name="l09932"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1iter__impl.html#ab447c50354c6611fa2ae0100ac17845c"> 9932</a></span>  <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#a5be8001be099c6b82310f4d387b953ce">reference</a> <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#ab447c50354c6611fa2ae0100ac17845c">value</a>()<span class="keyword"> const</span></div>
|
||
<div class="line"><a name="l09933"></a><span class="lineno"> 9933</span> <span class="keyword"> </span>{</div>
|
||
<div class="line"><a name="l09934"></a><span class="lineno"> 9934</span>  <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#a5ca57856d9bba54a5fc51cee891de827">operator*</a>();</div>
|
||
<div class="line"><a name="l09935"></a><span class="lineno"> 9935</span>  }</div>
|
||
<div class="line"><a name="l09936"></a><span class="lineno"> 9936</span>  </div>
|
||
<div class="line"><a name="l09937"></a><span class="lineno"> 9937</span>  <span class="keyword">private</span>:</div>
|
||
<div class="line"><a name="l09939"></a><span class="lineno"> 9939</span>  <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html#a69e52f890ce8c556fd68ce109e24b360">pointer</a> m_object = <span class="keyword">nullptr</span>;</div>
|
||
<div class="line"><a name="l09941"></a><span class="lineno"> 9941</span>  <a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html">internal_iterator<typename std::remove_const<BasicJsonType>::type</a>> m_it {};</div>
|
||
<div class="line"><a name="l09942"></a><span class="lineno"> 9942</span> };</div>
|
||
<div class="line"><a name="l09943"></a><span class="lineno"> 9943</span> } <span class="comment">// namespace detail</span></div>
|
||
<div class="line"><a name="l09944"></a><span class="lineno"> 9944</span> } <span class="comment">// namespace nlohmann</span></div>
|
||
<div class="line"><a name="l09945"></a><span class="lineno"> 9945</span>  </div>
|
||
<div class="line"><a name="l09946"></a><span class="lineno"> 9946</span> <span class="comment">// #include <nlohmann/detail/iterators/iteration_proxy.hpp></span></div>
|
||
<div class="line"><a name="l09947"></a><span class="lineno"> 9947</span>  </div>
|
||
<div class="line"><a name="l09948"></a><span class="lineno"> 9948</span> <span class="comment">// #include <nlohmann/detail/iterators/json_reverse_iterator.hpp></span></div>
|
||
<div class="line"><a name="l09949"></a><span class="lineno"> 9949</span>  </div>
|
||
<div class="line"><a name="l09950"></a><span class="lineno"> 9950</span>  </div>
|
||
<div class="line"><a name="l09951"></a><span class="lineno"> 9951</span> <span class="preprocessor">#include <cstddef></span> <span class="comment">// ptrdiff_t</span></div>
|
||
<div class="line"><a name="l09952"></a><span class="lineno"> 9952</span> <span class="preprocessor">#include <iterator></span> <span class="comment">// reverse_iterator</span></div>
|
||
<div class="line"><a name="l09953"></a><span class="lineno"> 9953</span> <span class="preprocessor">#include <utility></span> <span class="comment">// declval</span></div>
|
||
<div class="line"><a name="l09954"></a><span class="lineno"> 9954</span>  </div>
|
||
<div class="line"><a name="l09955"></a><span class="lineno"> 9955</span> <span class="keyword">namespace </span><a class="code" href="namespacenlohmann.html">nlohmann</a></div>
|
||
<div class="line"><a name="l09956"></a><span class="lineno"> 9956</span> {</div>
|
||
<div class="line"><a name="l09957"></a><span class="lineno"> 9957</span> <span class="keyword">namespace </span>detail</div>
|
||
<div class="line"><a name="l09958"></a><span class="lineno"> 9958</span> {</div>
|
||
<div class="line"><a name="l09960"></a><span class="lineno"> 9960</span> <span class="comment">// reverse_iterator //</span></div>
|
||
<div class="line"><a name="l09962"></a><span class="lineno"> 9962</span> <span class="comment"></span> </div>
|
||
<div class="line"><a name="l09981"></a><span class="lineno"> 9981</span> <span class="keyword">template</span><<span class="keyword">typename</span> Base></div>
|
||
<div class="line"><a name="l09982"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html"> 9982</a></span> <span class="keyword">class </span><a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html">json_reverse_iterator</a> : <span class="keyword">public</span> std::reverse_iterator<Base></div>
|
||
<div class="line"><a name="l09983"></a><span class="lineno"> 9983</span> {</div>
|
||
<div class="line"><a name="l09984"></a><span class="lineno"> 9984</span>  <span class="keyword">public</span>:</div>
|
||
<div class="line"><a name="l09985"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#a9ab55987c05ec6427ad36082e351cc45"> 9985</a></span>  <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#a9ab55987c05ec6427ad36082e351cc45">difference_type</a> = std::ptrdiff_t;</div>
|
||
<div class="line"><a name="l09987"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#a6b2ef1d632fe49bfcc22fbd1abd62395"> 9987</a></span>  <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#a6b2ef1d632fe49bfcc22fbd1abd62395">base_iterator</a> = std::reverse_iterator<Base>;</div>
|
||
<div class="line"><a name="l09989"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#a42f51a69bac7b2aebb613b2164e457f1"> 9989</a></span>  <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#a42f51a69bac7b2aebb613b2164e457f1">reference</a> = <span class="keyword">typename</span> Base::reference;</div>
|
||
<div class="line"><a name="l09990"></a><span class="lineno"> 9990</span>  </div>
|
||
<div class="line"><a name="l09992"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#a0246de16ece16293f2917dfa5d96e278"> 9992</a></span>  <span class="keyword">explicit</span> <a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#a0246de16ece16293f2917dfa5d96e278">json_reverse_iterator</a>(<span class="keyword">const</span> <span class="keyword">typename</span> base_iterator::iterator_type& it) noexcept</div>
|
||
<div class="line"><a name="l09993"></a><span class="lineno"> 9993</span>  : <a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#a6b2ef1d632fe49bfcc22fbd1abd62395">base_iterator</a>(it) {}</div>
|
||
<div class="line"><a name="l09994"></a><span class="lineno"> 9994</span>  </div>
|
||
<div class="line"><a name="l09996"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#a6c2d025530114ed989188e8adfc8467e"> 9996</a></span>  <span class="keyword">explicit</span> <a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#a6c2d025530114ed989188e8adfc8467e">json_reverse_iterator</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#a6b2ef1d632fe49bfcc22fbd1abd62395">base_iterator</a>& it) noexcept : <a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#a6b2ef1d632fe49bfcc22fbd1abd62395">base_iterator</a>(it) {}</div>
|
||
<div class="line"><a name="l09997"></a><span class="lineno"> 9997</span>  </div>
|
||
<div class="line"><a name="l09999"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#a43dceb18497ff745d936068c77c8cd56"> 9999</a></span>  <a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html">json_reverse_iterator</a> <span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#a43dceb18497ff745d936068c77c8cd56">operator++</a>(<span class="keywordtype">int</span>)</div>
|
||
<div class="line"><a name="l10000"></a><span class="lineno">10000</span>  {</div>
|
||
<div class="line"><a name="l10001"></a><span class="lineno">10001</span>  <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html">json_reverse_iterator</a><span class="keyword">></span>(base_iterator::operator++(1));</div>
|
||
<div class="line"><a name="l10002"></a><span class="lineno">10002</span>  }</div>
|
||
<div class="line"><a name="l10003"></a><span class="lineno">10003</span>  </div>
|
||
<div class="line"><a name="l10005"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#a26caf0069a50ce4ecb010a1453e883fc">10005</a></span>  <a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html">json_reverse_iterator</a>& <a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#a26caf0069a50ce4ecb010a1453e883fc">operator++</a>()</div>
|
||
<div class="line"><a name="l10006"></a><span class="lineno">10006</span>  {</div>
|
||
<div class="line"><a name="l10007"></a><span class="lineno">10007</span>  <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html">json_reverse_iterator</a>&<span class="keyword">></span>(base_iterator::operator++());</div>
|
||
<div class="line"><a name="l10008"></a><span class="lineno">10008</span>  }</div>
|
||
<div class="line"><a name="l10009"></a><span class="lineno">10009</span>  </div>
|
||
<div class="line"><a name="l10011"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#a7bbf1ecd75b7a0a488608a2760237c9f">10011</a></span>  <a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html">json_reverse_iterator</a> <span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#a7bbf1ecd75b7a0a488608a2760237c9f">operator--</a>(<span class="keywordtype">int</span>)</div>
|
||
<div class="line"><a name="l10012"></a><span class="lineno">10012</span>  {</div>
|
||
<div class="line"><a name="l10013"></a><span class="lineno">10013</span>  <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html">json_reverse_iterator</a><span class="keyword">></span>(base_iterator::operator--(1));</div>
|
||
<div class="line"><a name="l10014"></a><span class="lineno">10014</span>  }</div>
|
||
<div class="line"><a name="l10015"></a><span class="lineno">10015</span>  </div>
|
||
<div class="line"><a name="l10017"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#a2488d6a902103610943920ac49d12a04">10017</a></span>  <a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html">json_reverse_iterator</a>& <a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#a2488d6a902103610943920ac49d12a04">operator--</a>()</div>
|
||
<div class="line"><a name="l10018"></a><span class="lineno">10018</span>  {</div>
|
||
<div class="line"><a name="l10019"></a><span class="lineno">10019</span>  <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html">json_reverse_iterator</a>&<span class="keyword">></span>(base_iterator::operator--());</div>
|
||
<div class="line"><a name="l10020"></a><span class="lineno">10020</span>  }</div>
|
||
<div class="line"><a name="l10021"></a><span class="lineno">10021</span>  </div>
|
||
<div class="line"><a name="l10023"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#a4e5d0a3bee433104ef87366e00536e01">10023</a></span>  <a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html">json_reverse_iterator</a>& <a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#a4e5d0a3bee433104ef87366e00536e01">operator+=</a>(<a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#a9ab55987c05ec6427ad36082e351cc45">difference_type</a> i)</div>
|
||
<div class="line"><a name="l10024"></a><span class="lineno">10024</span>  {</div>
|
||
<div class="line"><a name="l10025"></a><span class="lineno">10025</span>  <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html">json_reverse_iterator</a>&<span class="keyword">></span>(base_iterator::operator+=(i));</div>
|
||
<div class="line"><a name="l10026"></a><span class="lineno">10026</span>  }</div>
|
||
<div class="line"><a name="l10027"></a><span class="lineno">10027</span>  </div>
|
||
<div class="line"><a name="l10029"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#aabf172b436988e2edde22f13f27caaed">10029</a></span>  <a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html">json_reverse_iterator</a> <a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#aabf172b436988e2edde22f13f27caaed">operator+</a>(<a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#a9ab55987c05ec6427ad36082e351cc45">difference_type</a> i)<span class="keyword"> const</span></div>
|
||
<div class="line"><a name="l10030"></a><span class="lineno">10030</span> <span class="keyword"> </span>{</div>
|
||
<div class="line"><a name="l10031"></a><span class="lineno">10031</span>  <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html">json_reverse_iterator</a><span class="keyword">></span>(base_iterator::operator+(i));</div>
|
||
<div class="line"><a name="l10032"></a><span class="lineno">10032</span>  }</div>
|
||
<div class="line"><a name="l10033"></a><span class="lineno">10033</span>  </div>
|
||
<div class="line"><a name="l10035"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#a549c6eb10b6434eaf772f71d129a6d79">10035</a></span>  <a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html">json_reverse_iterator</a> <a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#a549c6eb10b6434eaf772f71d129a6d79">operator-</a>(<a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#a9ab55987c05ec6427ad36082e351cc45">difference_type</a> i)<span class="keyword"> const</span></div>
|
||
<div class="line"><a name="l10036"></a><span class="lineno">10036</span> <span class="keyword"> </span>{</div>
|
||
<div class="line"><a name="l10037"></a><span class="lineno">10037</span>  <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html">json_reverse_iterator</a><span class="keyword">></span>(base_iterator::operator-(i));</div>
|
||
<div class="line"><a name="l10038"></a><span class="lineno">10038</span>  }</div>
|
||
<div class="line"><a name="l10039"></a><span class="lineno">10039</span>  </div>
|
||
<div class="line"><a name="l10041"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#aaaa6c0b1d74e74e35e5f7b56dfd6c5d1">10041</a></span>  <a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#a9ab55987c05ec6427ad36082e351cc45">difference_type</a> <a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#aaaa6c0b1d74e74e35e5f7b56dfd6c5d1">operator-</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html">json_reverse_iterator</a>& other)<span class="keyword"> const</span></div>
|
||
<div class="line"><a name="l10042"></a><span class="lineno">10042</span> <span class="keyword"> </span>{</div>
|
||
<div class="line"><a name="l10043"></a><span class="lineno">10043</span>  <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#a6b2ef1d632fe49bfcc22fbd1abd62395">base_iterator</a>(*<span class="keyword">this</span>) - <a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#a6b2ef1d632fe49bfcc22fbd1abd62395">base_iterator</a>(other);</div>
|
||
<div class="line"><a name="l10044"></a><span class="lineno">10044</span>  }</div>
|
||
<div class="line"><a name="l10045"></a><span class="lineno">10045</span>  </div>
|
||
<div class="line"><a name="l10047"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#a8ed9e445e03c49c46612eb7f7d55bb61">10047</a></span>  <a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#a42f51a69bac7b2aebb613b2164e457f1">reference</a> <a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#a8ed9e445e03c49c46612eb7f7d55bb61">operator[]</a>(<a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#a9ab55987c05ec6427ad36082e351cc45">difference_type</a> n)<span class="keyword"> const</span></div>
|
||
<div class="line"><a name="l10048"></a><span class="lineno">10048</span> <span class="keyword"> </span>{</div>
|
||
<div class="line"><a name="l10049"></a><span class="lineno">10049</span>  <span class="keywordflow">return</span> *(this-><a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#aabf172b436988e2edde22f13f27caaed">operator+</a>(n));</div>
|
||
<div class="line"><a name="l10050"></a><span class="lineno">10050</span>  }</div>
|
||
<div class="line"><a name="l10051"></a><span class="lineno">10051</span>  </div>
|
||
<div class="line"><a name="l10053"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#adc648a641e8e9a1072c5abd56ad06401">10053</a></span>  <span class="keyword">auto</span> <a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#adc648a641e8e9a1072c5abd56ad06401">key</a>() const -> decltype(<a class="code" href="namespacestd.html">std</a>::declval<Base>().<a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#adc648a641e8e9a1072c5abd56ad06401">key</a>())</div>
|
||
<div class="line"><a name="l10054"></a><span class="lineno">10054</span>  {</div>
|
||
<div class="line"><a name="l10055"></a><span class="lineno">10055</span>  <span class="keyword">auto</span> it = --this->base();</div>
|
||
<div class="line"><a name="l10056"></a><span class="lineno">10056</span>  <span class="keywordflow">return</span> it.key();</div>
|
||
<div class="line"><a name="l10057"></a><span class="lineno">10057</span>  }</div>
|
||
<div class="line"><a name="l10058"></a><span class="lineno">10058</span>  </div>
|
||
<div class="line"><a name="l10060"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#ae22803d442d483041d17239615f83b58">10060</a></span>  <a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#a42f51a69bac7b2aebb613b2164e457f1">reference</a> <a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#ae22803d442d483041d17239615f83b58">value</a>()<span class="keyword"> const</span></div>
|
||
<div class="line"><a name="l10061"></a><span class="lineno">10061</span> <span class="keyword"> </span>{</div>
|
||
<div class="line"><a name="l10062"></a><span class="lineno">10062</span>  <span class="keyword">auto</span> it = --this->base();</div>
|
||
<div class="line"><a name="l10063"></a><span class="lineno">10063</span>  <span class="keywordflow">return</span> it.operator * ();</div>
|
||
<div class="line"><a name="l10064"></a><span class="lineno">10064</span>  }</div>
|
||
<div class="line"><a name="l10065"></a><span class="lineno">10065</span> };</div>
|
||
<div class="line"><a name="l10066"></a><span class="lineno">10066</span> } <span class="comment">// namespace detail</span></div>
|
||
<div class="line"><a name="l10067"></a><span class="lineno">10067</span> } <span class="comment">// namespace nlohmann</span></div>
|
||
<div class="line"><a name="l10068"></a><span class="lineno">10068</span>  </div>
|
||
<div class="line"><a name="l10069"></a><span class="lineno">10069</span> <span class="comment">// #include <nlohmann/detail/iterators/primitive_iterator.hpp></span></div>
|
||
<div class="line"><a name="l10070"></a><span class="lineno">10070</span>  </div>
|
||
<div class="line"><a name="l10071"></a><span class="lineno">10071</span> <span class="comment">// #include <nlohmann/detail/json_pointer.hpp></span></div>
|
||
<div class="line"><a name="l10072"></a><span class="lineno">10072</span>  </div>
|
||
<div class="line"><a name="l10073"></a><span class="lineno">10073</span>  </div>
|
||
<div class="line"><a name="l10074"></a><span class="lineno">10074</span> <span class="preprocessor">#include <algorithm></span> <span class="comment">// all_of</span></div>
|
||
<div class="line"><a name="l10075"></a><span class="lineno">10075</span> <span class="preprocessor">#include <cassert></span> <span class="comment">// assert</span></div>
|
||
<div class="line"><a name="l10076"></a><span class="lineno">10076</span> <span class="preprocessor">#include <cctype></span> <span class="comment">// isdigit</span></div>
|
||
<div class="line"><a name="l10077"></a><span class="lineno">10077</span> <span class="preprocessor">#include <numeric></span> <span class="comment">// accumulate</span></div>
|
||
<div class="line"><a name="l10078"></a><span class="lineno">10078</span> <span class="preprocessor">#include <string></span> <span class="comment">// string</span></div>
|
||
<div class="line"><a name="l10079"></a><span class="lineno">10079</span> <span class="preprocessor">#include <utility></span> <span class="comment">// move</span></div>
|
||
<div class="line"><a name="l10080"></a><span class="lineno">10080</span> <span class="preprocessor">#include <vector></span> <span class="comment">// vector</span></div>
|
||
<div class="line"><a name="l10081"></a><span class="lineno">10081</span>  </div>
|
||
<div class="line"><a name="l10082"></a><span class="lineno">10082</span> <span class="comment">// #include <nlohmann/detail/exceptions.hpp></span></div>
|
||
<div class="line"><a name="l10083"></a><span class="lineno">10083</span>  </div>
|
||
<div class="line"><a name="l10084"></a><span class="lineno">10084</span> <span class="comment">// #include <nlohmann/detail/macro_scope.hpp></span></div>
|
||
<div class="line"><a name="l10085"></a><span class="lineno">10085</span>  </div>
|
||
<div class="line"><a name="l10086"></a><span class="lineno">10086</span> <span class="comment">// #include <nlohmann/detail/value_t.hpp></span></div>
|
||
<div class="line"><a name="l10087"></a><span class="lineno">10087</span>  </div>
|
||
<div class="line"><a name="l10088"></a><span class="lineno">10088</span>  </div>
|
||
<div class="line"><a name="l10089"></a><span class="lineno">10089</span> <span class="keyword">namespace </span><a class="code" href="namespacenlohmann.html">nlohmann</a></div>
|
||
<div class="line"><a name="l10090"></a><span class="lineno">10090</span> {</div>
|
||
<div class="line"><a name="l10091"></a><span class="lineno">10091</span> <span class="keyword">template</span><<span class="keyword">typename</span> BasicJsonType></div>
|
||
<div class="line"><a name="l10092"></a><span class="lineno">10092</span> <span class="keyword">class </span>json_pointer</div>
|
||
<div class="line"><a name="l10093"></a><span class="lineno">10093</span> {</div>
|
||
<div class="line"><a name="l10094"></a><span class="lineno">10094</span>  <span class="comment">// allow basic_json to access private members</span></div>
|
||
<div class="line"><a name="l10095"></a><span class="lineno">10095</span>  <a class="code" href="json_8hpp.html#a0643bd74c2dc6f0e4e420b8190ea8f0f">NLOHMANN_BASIC_JSON_TPL_DECLARATION</a></div>
|
||
<div class="line"><a name="l10096"></a><span class="lineno"><a class="line" href="classnlohmann_1_1json__pointer.html#ada3100cdb8700566051828f1355fa745">10096</a></span>  <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a>;</div>
|
||
<div class="line"><a name="l10097"></a><span class="lineno">10097</span>  </div>
|
||
<div class="line"><a name="l10098"></a><span class="lineno">10098</span>  <span class="keyword">public</span>:</div>
|
||
<div class="line"><a name="l10120"></a><span class="lineno"><a class="line" href="classnlohmann_1_1json__pointer.html#a7f32d7c62841f0c4a6784cf741a6e4f8">10120</a></span>  <span class="keyword">explicit</span> <a class="code" href="classnlohmann_1_1json__pointer.html#a7f32d7c62841f0c4a6784cf741a6e4f8">json_pointer</a>(<span class="keyword">const</span> std::string& s = <span class="stringliteral">""</span>)</div>
|
||
<div class="line"><a name="l10121"></a><span class="lineno">10121</span>  : reference_tokens(split(s))</div>
|
||
<div class="line"><a name="l10122"></a><span class="lineno">10122</span>  {}</div>
|
||
<div class="line"><a name="l10123"></a><span class="lineno">10123</span>  </div>
|
||
<div class="line"><a name="l10138"></a><span class="lineno"><a class="line" href="classnlohmann_1_1json__pointer.html#a3d4b15d32d096e3776c5d2c773b524f5">10138</a></span>  std::string <a class="code" href="classnlohmann_1_1json__pointer.html#a3d4b15d32d096e3776c5d2c773b524f5">to_string</a>()<span class="keyword"> const</span></div>
|
||
<div class="line"><a name="l10139"></a><span class="lineno">10139</span> <span class="keyword"> </span>{</div>
|
||
<div class="line"><a name="l10140"></a><span class="lineno">10140</span>  <span class="keywordflow">return</span> std::accumulate(reference_tokens.begin(), reference_tokens.end(),</div>
|
||
<div class="line"><a name="l10141"></a><span class="lineno">10141</span>  std::string{},</div>
|
||
<div class="line"><a name="l10142"></a><span class="lineno">10142</span>  [](<span class="keyword">const</span> std::string & a, <span class="keyword">const</span> std::string & b)</div>
|
||
<div class="line"><a name="l10143"></a><span class="lineno">10143</span>  {</div>
|
||
<div class="line"><a name="l10144"></a><span class="lineno">10144</span>  return a + <span class="stringliteral">"/"</span> + escape(b);</div>
|
||
<div class="line"><a name="l10145"></a><span class="lineno">10145</span>  });</div>
|
||
<div class="line"><a name="l10146"></a><span class="lineno">10146</span>  }</div>
|
||
<div class="line"><a name="l10147"></a><span class="lineno">10147</span>  </div>
|
||
<div class="line"><a name="l10149"></a><span class="lineno"><a class="line" href="classnlohmann_1_1json__pointer.html#ae9015c658f99cf3d48a8563accc79988">10149</a></span>  <span class="keyword">operator</span> std::string()<span class="keyword"> const</span></div>
|
||
<div class="line"><a name="l10150"></a><span class="lineno">10150</span> <span class="keyword"> </span>{</div>
|
||
<div class="line"><a name="l10151"></a><span class="lineno">10151</span>  <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1json__pointer.html#a3d4b15d32d096e3776c5d2c773b524f5">to_string</a>();</div>
|
||
<div class="line"><a name="l10152"></a><span class="lineno">10152</span>  }</div>
|
||
<div class="line"><a name="l10153"></a><span class="lineno">10153</span>  </div>
|
||
<div class="line"><a name="l10170"></a><span class="lineno"><a class="line" href="classnlohmann_1_1json__pointer.html#a7395bd0af29ac23fd3f21543c935cdfa">10170</a></span>  <a class="code" href="classnlohmann_1_1json__pointer.html">json_pointer</a>& <a class="code" href="classnlohmann_1_1json__pointer.html#a7395bd0af29ac23fd3f21543c935cdfa">operator/=</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1json__pointer.html">json_pointer</a>& ptr)</div>
|
||
<div class="line"><a name="l10171"></a><span class="lineno">10171</span>  {</div>
|
||
<div class="line"><a name="l10172"></a><span class="lineno">10172</span>  reference_tokens.insert(reference_tokens.end(),</div>
|
||
<div class="line"><a name="l10173"></a><span class="lineno">10173</span>  ptr.reference_tokens.begin(),</div>
|
||
<div class="line"><a name="l10174"></a><span class="lineno">10174</span>  ptr.reference_tokens.end());</div>
|
||
<div class="line"><a name="l10175"></a><span class="lineno">10175</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
|
||
<div class="line"><a name="l10176"></a><span class="lineno">10176</span>  }</div>
|
||
<div class="line"><a name="l10177"></a><span class="lineno">10177</span>  </div>
|
||
<div class="line"><a name="l10194"></a><span class="lineno"><a class="line" href="classnlohmann_1_1json__pointer.html#abdd21567b2b1d69329af0f520335e68b">10194</a></span>  <a class="code" href="classnlohmann_1_1json__pointer.html">json_pointer</a>& <a class="code" href="classnlohmann_1_1json__pointer.html#abdd21567b2b1d69329af0f520335e68b">operator/=</a>(std::string token)</div>
|
||
<div class="line"><a name="l10195"></a><span class="lineno">10195</span>  {</div>
|
||
<div class="line"><a name="l10196"></a><span class="lineno">10196</span>  <a class="code" href="classnlohmann_1_1json__pointer.html#a697d12b5bd6205f8866691b166b7c7dc">push_back</a>(std::move(token));</div>
|
||
<div class="line"><a name="l10197"></a><span class="lineno">10197</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
|
||
<div class="line"><a name="l10198"></a><span class="lineno">10198</span>  }</div>
|
||
<div class="line"><a name="l10199"></a><span class="lineno">10199</span>  </div>
|
||
<div class="line"><a name="l10216"></a><span class="lineno"><a class="line" href="classnlohmann_1_1json__pointer.html#a64c8401529131bad1e486d91d703795f">10216</a></span>  <a class="code" href="classnlohmann_1_1json__pointer.html">json_pointer</a>& <a class="code" href="classnlohmann_1_1json__pointer.html#a64c8401529131bad1e486d91d703795f">operator/=</a>(std::size_t array_index)</div>
|
||
<div class="line"><a name="l10217"></a><span class="lineno">10217</span>  {</div>
|
||
<div class="line"><a name="l10218"></a><span class="lineno">10218</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span> /= <a class="code" href="namespacenlohmann.html#a6ce645a0b8717757e096a5b5773b7a16">std::to_string</a>(array_index);</div>
|
||
<div class="line"><a name="l10219"></a><span class="lineno">10219</span>  }</div>
|
||
<div class="line"><a name="l10220"></a><span class="lineno">10220</span>  </div>
|
||
<div class="line"><a name="l10236"></a><span class="lineno"><a class="line" href="classnlohmann_1_1json__pointer.html#a90a11fe6c7f37b1746a3ff9cb24b0d53">10236</a></span>  <span class="keyword">friend</span> <a class="code" href="classnlohmann_1_1json__pointer.html">json_pointer</a> <a class="code" href="classnlohmann_1_1json__pointer.html#a90a11fe6c7f37b1746a3ff9cb24b0d53">operator/</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1json__pointer.html">json_pointer</a>& lhs,</div>
|
||
<div class="line"><a name="l10237"></a><span class="lineno">10237</span>  <span class="keyword">const</span> <a class="code" href="classnlohmann_1_1json__pointer.html">json_pointer</a>& rhs)</div>
|
||
<div class="line"><a name="l10238"></a><span class="lineno">10238</span>  {</div>
|
||
<div class="line"><a name="l10239"></a><span class="lineno">10239</span>  <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1json__pointer.html#a7f32d7c62841f0c4a6784cf741a6e4f8">json_pointer</a>(lhs) /= rhs;</div>
|
||
<div class="line"><a name="l10240"></a><span class="lineno">10240</span>  }</div>
|
||
<div class="line"><a name="l10241"></a><span class="lineno">10241</span>  </div>
|
||
<div class="line"><a name="l10257"></a><span class="lineno"><a class="line" href="classnlohmann_1_1json__pointer.html#a926c9065dbed1bedc17857a813f7a46f">10257</a></span>  <span class="keyword">friend</span> <a class="code" href="classnlohmann_1_1json__pointer.html">json_pointer</a> <a class="code" href="classnlohmann_1_1json__pointer.html#a926c9065dbed1bedc17857a813f7a46f">operator/</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1json__pointer.html">json_pointer</a>& ptr, std::string token)</div>
|
||
<div class="line"><a name="l10258"></a><span class="lineno">10258</span>  {</div>
|
||
<div class="line"><a name="l10259"></a><span class="lineno">10259</span>  <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1json__pointer.html#a7f32d7c62841f0c4a6784cf741a6e4f8">json_pointer</a>(ptr) /= std::move(token);</div>
|
||
<div class="line"><a name="l10260"></a><span class="lineno">10260</span>  }</div>
|
||
<div class="line"><a name="l10261"></a><span class="lineno">10261</span>  </div>
|
||
<div class="line"><a name="l10277"></a><span class="lineno"><a class="line" href="classnlohmann_1_1json__pointer.html#a9f6bc6f4d4668b4e9a19d8b8ac29da4f">10277</a></span>  <span class="keyword">friend</span> <a class="code" href="classnlohmann_1_1json__pointer.html">json_pointer</a> <a class="code" href="classnlohmann_1_1json__pointer.html#a9f6bc6f4d4668b4e9a19d8b8ac29da4f">operator/</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1json__pointer.html">json_pointer</a>& ptr, std::size_t array_index)</div>
|
||
<div class="line"><a name="l10278"></a><span class="lineno">10278</span>  {</div>
|
||
<div class="line"><a name="l10279"></a><span class="lineno">10279</span>  <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1json__pointer.html#a7f32d7c62841f0c4a6784cf741a6e4f8">json_pointer</a>(ptr) /= array_index;</div>
|
||
<div class="line"><a name="l10280"></a><span class="lineno">10280</span>  }</div>
|
||
<div class="line"><a name="l10281"></a><span class="lineno">10281</span>  </div>
|
||
<div class="line"><a name="l10295"></a><span class="lineno"><a class="line" href="classnlohmann_1_1json__pointer.html#afdaacce1edb7145e0434e014f0e8685a">10295</a></span>  <a class="code" href="classnlohmann_1_1json__pointer.html">json_pointer</a> <a class="code" href="classnlohmann_1_1json__pointer.html#afdaacce1edb7145e0434e014f0e8685a">parent_pointer</a>()<span class="keyword"> const</span></div>
|
||
<div class="line"><a name="l10296"></a><span class="lineno">10296</span> <span class="keyword"> </span>{</div>
|
||
<div class="line"><a name="l10297"></a><span class="lineno">10297</span>  <span class="keywordflow">if</span> (<a class="code" href="classnlohmann_1_1json__pointer.html#a649252bda4a2e75a0915b11a25d8bcc3">empty</a>())</div>
|
||
<div class="line"><a name="l10298"></a><span class="lineno">10298</span>  {</div>
|
||
<div class="line"><a name="l10299"></a><span class="lineno">10299</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
|
||
<div class="line"><a name="l10300"></a><span class="lineno">10300</span>  }</div>
|
||
<div class="line"><a name="l10301"></a><span class="lineno">10301</span>  </div>
|
||
<div class="line"><a name="l10302"></a><span class="lineno">10302</span>  <a class="code" href="classnlohmann_1_1json__pointer.html">json_pointer</a> res = *<span class="keyword">this</span>;</div>
|
||
<div class="line"><a name="l10303"></a><span class="lineno">10303</span>  res.pop_back();</div>
|
||
<div class="line"><a name="l10304"></a><span class="lineno">10304</span>  <span class="keywordflow">return</span> res;</div>
|
||
<div class="line"><a name="l10305"></a><span class="lineno">10305</span>  }</div>
|
||
<div class="line"><a name="l10306"></a><span class="lineno">10306</span>  </div>
|
||
<div class="line"><a name="l10320"></a><span class="lineno"><a class="line" href="classnlohmann_1_1json__pointer.html#a4b1ee4d511ca195bed896a3da47e264c">10320</a></span>  <span class="keywordtype">void</span> <a class="code" href="classnlohmann_1_1json__pointer.html#a4b1ee4d511ca195bed896a3da47e264c">pop_back</a>()</div>
|
||
<div class="line"><a name="l10321"></a><span class="lineno">10321</span>  {</div>
|
||
<div class="line"><a name="l10322"></a><span class="lineno">10322</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(<a class="code" href="classnlohmann_1_1json__pointer.html#a649252bda4a2e75a0915b11a25d8bcc3">empty</a>()))</div>
|
||
<div class="line"><a name="l10323"></a><span class="lineno">10323</span>  {</div>
|
||
<div class="line"><a name="l10324"></a><span class="lineno">10324</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1out__of__range.html#a3f6d82a6f967c4728a1ec735a7867073">detail::out_of_range::create</a>(405, <span class="stringliteral">"JSON pointer has no parent"</span>));</div>
|
||
<div class="line"><a name="l10325"></a><span class="lineno">10325</span>  }</div>
|
||
<div class="line"><a name="l10326"></a><span class="lineno">10326</span>  </div>
|
||
<div class="line"><a name="l10327"></a><span class="lineno">10327</span>  reference_tokens.pop_back();</div>
|
||
<div class="line"><a name="l10328"></a><span class="lineno">10328</span>  }</div>
|
||
<div class="line"><a name="l10329"></a><span class="lineno">10329</span>  </div>
|
||
<div class="line"><a name="l10344"></a><span class="lineno"><a class="line" href="classnlohmann_1_1json__pointer.html#a213bc67c32a30c68ac6bf06f5195d482">10344</a></span>  <span class="keyword">const</span> std::string& <a class="code" href="classnlohmann_1_1json__pointer.html#a213bc67c32a30c68ac6bf06f5195d482">back</a>()<span class="keyword"> const</span></div>
|
||
<div class="line"><a name="l10345"></a><span class="lineno">10345</span> <span class="keyword"> </span>{</div>
|
||
<div class="line"><a name="l10346"></a><span class="lineno">10346</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(<a class="code" href="classnlohmann_1_1json__pointer.html#a649252bda4a2e75a0915b11a25d8bcc3">empty</a>()))</div>
|
||
<div class="line"><a name="l10347"></a><span class="lineno">10347</span>  {</div>
|
||
<div class="line"><a name="l10348"></a><span class="lineno">10348</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1out__of__range.html#a3f6d82a6f967c4728a1ec735a7867073">detail::out_of_range::create</a>(405, <span class="stringliteral">"JSON pointer has no parent"</span>));</div>
|
||
<div class="line"><a name="l10349"></a><span class="lineno">10349</span>  }</div>
|
||
<div class="line"><a name="l10350"></a><span class="lineno">10350</span>  </div>
|
||
<div class="line"><a name="l10351"></a><span class="lineno">10351</span>  <span class="keywordflow">return</span> reference_tokens.back();</div>
|
||
<div class="line"><a name="l10352"></a><span class="lineno">10352</span>  }</div>
|
||
<div class="line"><a name="l10353"></a><span class="lineno">10353</span>  </div>
|
||
<div class="line"><a name="l10366"></a><span class="lineno"><a class="line" href="classnlohmann_1_1json__pointer.html#a697d12b5bd6205f8866691b166b7c7dc">10366</a></span>  <span class="keywordtype">void</span> <a class="code" href="classnlohmann_1_1json__pointer.html#a697d12b5bd6205f8866691b166b7c7dc">push_back</a>(<span class="keyword">const</span> std::string& token)</div>
|
||
<div class="line"><a name="l10367"></a><span class="lineno">10367</span>  {</div>
|
||
<div class="line"><a name="l10368"></a><span class="lineno">10368</span>  reference_tokens.push_back(token);</div>
|
||
<div class="line"><a name="l10369"></a><span class="lineno">10369</span>  }</div>
|
||
<div class="line"><a name="l10370"></a><span class="lineno">10370</span>  </div>
|
||
<div class="line"><a name="l10372"></a><span class="lineno"><a class="line" href="classnlohmann_1_1json__pointer.html#ac228b13596d3c34185da9fe61b570194">10372</a></span>  <span class="keywordtype">void</span> <a class="code" href="classnlohmann_1_1json__pointer.html#ac228b13596d3c34185da9fe61b570194">push_back</a>(std::string&& token)</div>
|
||
<div class="line"><a name="l10373"></a><span class="lineno">10373</span>  {</div>
|
||
<div class="line"><a name="l10374"></a><span class="lineno">10374</span>  reference_tokens.push_back(std::move(token));</div>
|
||
<div class="line"><a name="l10375"></a><span class="lineno">10375</span>  }</div>
|
||
<div class="line"><a name="l10376"></a><span class="lineno">10376</span>  </div>
|
||
<div class="line"><a name="l10391"></a><span class="lineno"><a class="line" href="classnlohmann_1_1json__pointer.html#a649252bda4a2e75a0915b11a25d8bcc3">10391</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1json__pointer.html#a649252bda4a2e75a0915b11a25d8bcc3">empty</a>() const noexcept</div>
|
||
<div class="line"><a name="l10392"></a><span class="lineno">10392</span>  {</div>
|
||
<div class="line"><a name="l10393"></a><span class="lineno">10393</span>  <span class="keywordflow">return</span> reference_tokens.empty();</div>
|
||
<div class="line"><a name="l10394"></a><span class="lineno">10394</span>  }</div>
|
||
<div class="line"><a name="l10395"></a><span class="lineno">10395</span>  </div>
|
||
<div class="line"><a name="l10396"></a><span class="lineno">10396</span>  <span class="keyword">private</span>:</div>
|
||
<div class="line"><a name="l10404"></a><span class="lineno">10404</span>  <span class="keyword">static</span> <span class="keywordtype">int</span> array_index(<span class="keyword">const</span> std::string& s)</div>
|
||
<div class="line"><a name="l10405"></a><span class="lineno">10405</span>  {</div>
|
||
<div class="line"><a name="l10406"></a><span class="lineno">10406</span>  std::size_t processed_chars = 0;</div>
|
||
<div class="line"><a name="l10407"></a><span class="lineno">10407</span>  <span class="keyword">const</span> <span class="keywordtype">int</span> res = std::stoi(s, &processed_chars);</div>
|
||
<div class="line"><a name="l10408"></a><span class="lineno">10408</span>  </div>
|
||
<div class="line"><a name="l10409"></a><span class="lineno">10409</span>  <span class="comment">// check if the string was completely read</span></div>
|
||
<div class="line"><a name="l10410"></a><span class="lineno">10410</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(processed_chars != s.size()))</div>
|
||
<div class="line"><a name="l10411"></a><span class="lineno">10411</span>  {</div>
|
||
<div class="line"><a name="l10412"></a><span class="lineno">10412</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1out__of__range.html#a3f6d82a6f967c4728a1ec735a7867073">detail::out_of_range::create</a>(404, <span class="stringliteral">"unresolved reference token '"</span> + s + <span class="stringliteral">"'"</span>));</div>
|
||
<div class="line"><a name="l10413"></a><span class="lineno">10413</span>  }</div>
|
||
<div class="line"><a name="l10414"></a><span class="lineno">10414</span>  </div>
|
||
<div class="line"><a name="l10415"></a><span class="lineno">10415</span>  <span class="keywordflow">return</span> res;</div>
|
||
<div class="line"><a name="l10416"></a><span class="lineno">10416</span>  }</div>
|
||
<div class="line"><a name="l10417"></a><span class="lineno">10417</span>  </div>
|
||
<div class="line"><a name="l10418"></a><span class="lineno">10418</span>  <a class="code" href="classnlohmann_1_1json__pointer.html#a7f32d7c62841f0c4a6784cf741a6e4f8">json_pointer</a> top()<span class="keyword"> const</span></div>
|
||
<div class="line"><a name="l10419"></a><span class="lineno">10419</span> <span class="keyword"> </span>{</div>
|
||
<div class="line"><a name="l10420"></a><span class="lineno">10420</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(<a class="code" href="classnlohmann_1_1json__pointer.html#a649252bda4a2e75a0915b11a25d8bcc3">empty</a>()))</div>
|
||
<div class="line"><a name="l10421"></a><span class="lineno">10421</span>  {</div>
|
||
<div class="line"><a name="l10422"></a><span class="lineno">10422</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1out__of__range.html#a3f6d82a6f967c4728a1ec735a7867073">detail::out_of_range::create</a>(405, <span class="stringliteral">"JSON pointer has no parent"</span>));</div>
|
||
<div class="line"><a name="l10423"></a><span class="lineno">10423</span>  }</div>
|
||
<div class="line"><a name="l10424"></a><span class="lineno">10424</span>  </div>
|
||
<div class="line"><a name="l10425"></a><span class="lineno">10425</span>  <a class="code" href="classnlohmann_1_1json__pointer.html#a7f32d7c62841f0c4a6784cf741a6e4f8">json_pointer</a> result = *<span class="keyword">this</span>;</div>
|
||
<div class="line"><a name="l10426"></a><span class="lineno">10426</span>  result.reference_tokens = {reference_tokens[0]};</div>
|
||
<div class="line"><a name="l10427"></a><span class="lineno">10427</span>  <span class="keywordflow">return</span> result;</div>
|
||
<div class="line"><a name="l10428"></a><span class="lineno">10428</span>  }</div>
|
||
<div class="line"><a name="l10429"></a><span class="lineno">10429</span>  </div>
|
||
<div class="line"><a name="l10438"></a><span class="lineno">10438</span>  BasicJsonType& get_and_create(BasicJsonType& j)<span class="keyword"> const</span></div>
|
||
<div class="line"><a name="l10439"></a><span class="lineno">10439</span> <span class="keyword"> </span>{</div>
|
||
<div class="line"><a name="l10440"></a><span class="lineno">10440</span>  <span class="keyword">using</span> size_type = <span class="keyword">typename</span> BasicJsonType::size_type;</div>
|
||
<div class="line"><a name="l10441"></a><span class="lineno">10441</span>  <span class="keyword">auto</span> result = &j;</div>
|
||
<div class="line"><a name="l10442"></a><span class="lineno">10442</span>  </div>
|
||
<div class="line"><a name="l10443"></a><span class="lineno">10443</span>  <span class="comment">// in case no reference tokens exist, return a reference to the JSON value</span></div>
|
||
<div class="line"><a name="l10444"></a><span class="lineno">10444</span>  <span class="comment">// j which will be overwritten by a primitive value</span></div>
|
||
<div class="line"><a name="l10445"></a><span class="lineno">10445</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>& reference_token : reference_tokens)</div>
|
||
<div class="line"><a name="l10446"></a><span class="lineno">10446</span>  {</div>
|
||
<div class="line"><a name="l10447"></a><span class="lineno">10447</span>  <span class="keywordflow">switch</span> (result->type())</div>
|
||
<div class="line"><a name="l10448"></a><span class="lineno">10448</span>  {</div>
|
||
<div class="line"><a name="l10449"></a><span class="lineno">10449</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a37a6259cc0c1dae299a7866489dff0bd">detail::value_t::null</a>:</div>
|
||
<div class="line"><a name="l10450"></a><span class="lineno">10450</span>  {</div>
|
||
<div class="line"><a name="l10451"></a><span class="lineno">10451</span>  <span class="keywordflow">if</span> (reference_token == <span class="stringliteral">"0"</span>)</div>
|
||
<div class="line"><a name="l10452"></a><span class="lineno">10452</span>  {</div>
|
||
<div class="line"><a name="l10453"></a><span class="lineno">10453</span>  <span class="comment">// start a new array if reference token is 0</span></div>
|
||
<div class="line"><a name="l10454"></a><span class="lineno">10454</span>  result = &result->operator[](0);</div>
|
||
<div class="line"><a name="l10455"></a><span class="lineno">10455</span>  }</div>
|
||
<div class="line"><a name="l10456"></a><span class="lineno">10456</span>  <span class="keywordflow">else</span></div>
|
||
<div class="line"><a name="l10457"></a><span class="lineno">10457</span>  {</div>
|
||
<div class="line"><a name="l10458"></a><span class="lineno">10458</span>  <span class="comment">// start a new object otherwise</span></div>
|
||
<div class="line"><a name="l10459"></a><span class="lineno">10459</span>  result = &result->operator[](reference_token);</div>
|
||
<div class="line"><a name="l10460"></a><span class="lineno">10460</span>  }</div>
|
||
<div class="line"><a name="l10461"></a><span class="lineno">10461</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l10462"></a><span class="lineno">10462</span>  }</div>
|
||
<div class="line"><a name="l10463"></a><span class="lineno">10463</span>  </div>
|
||
<div class="line"><a name="l10464"></a><span class="lineno">10464</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">detail::value_t::object</a>:</div>
|
||
<div class="line"><a name="l10465"></a><span class="lineno">10465</span>  {</div>
|
||
<div class="line"><a name="l10466"></a><span class="lineno">10466</span>  <span class="comment">// create an entry in the object</span></div>
|
||
<div class="line"><a name="l10467"></a><span class="lineno">10467</span>  result = &result->operator[](reference_token);</div>
|
||
<div class="line"><a name="l10468"></a><span class="lineno">10468</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l10469"></a><span class="lineno">10469</span>  }</div>
|
||
<div class="line"><a name="l10470"></a><span class="lineno">10470</span>  </div>
|
||
<div class="line"><a name="l10471"></a><span class="lineno">10471</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">detail::value_t::array</a>:</div>
|
||
<div class="line"><a name="l10472"></a><span class="lineno">10472</span>  {</div>
|
||
<div class="line"><a name="l10473"></a><span class="lineno">10473</span>  <span class="comment">// create an entry in the array</span></div>
|
||
<div class="line"><a name="l10474"></a><span class="lineno">10474</span>  <a class="code" href="json_8hpp.html#a985d3b82445302c57257f6432f261fe9">JSON_TRY</a></div>
|
||
<div class="line"><a name="l10475"></a><span class="lineno">10475</span>  {</div>
|
||
<div class="line"><a name="l10476"></a><span class="lineno">10476</span>  result = &result->operator[](<span class="keyword">static_cast<</span>size_type<span class="keyword">></span>(array_index(reference_token)));</div>
|
||
<div class="line"><a name="l10477"></a><span class="lineno">10477</span>  }</div>
|
||
<div class="line"><a name="l10478"></a><span class="lineno">10478</span>  <a class="code" href="json_8hpp.html#a6954bec49ed2a2dfb938c1131c82740a">JSON_CATCH</a>(std::invalid_argument&)</div>
|
||
<div class="line"><a name="l10479"></a><span class="lineno">10479</span>  {</div>
|
||
<div class="line"><a name="l10480"></a><span class="lineno">10480</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1parse__error.html#a137ea4d27de45d8a844fd13451d40f3d">detail::parse_error::create</a>(109, 0, <span class="stringliteral">"array index '"</span> + reference_token + <span class="stringliteral">"' is not a number"</span>));</div>
|
||
<div class="line"><a name="l10481"></a><span class="lineno">10481</span>  }</div>
|
||
<div class="line"><a name="l10482"></a><span class="lineno">10482</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l10483"></a><span class="lineno">10483</span>  }</div>
|
||
<div class="line"><a name="l10484"></a><span class="lineno">10484</span>  </div>
|
||
<div class="line"><a name="l10485"></a><span class="lineno">10485</span>  <span class="comment">/*</span></div>
|
||
<div class="line"><a name="l10486"></a><span class="lineno">10486</span> <span class="comment"> The following code is only reached if there exists a reference</span></div>
|
||
<div class="line"><a name="l10487"></a><span class="lineno">10487</span> <span class="comment"> token _and_ the current value is primitive. In this case, we have</span></div>
|
||
<div class="line"><a name="l10488"></a><span class="lineno">10488</span> <span class="comment"> an error situation, because primitive values may only occur as</span></div>
|
||
<div class="line"><a name="l10489"></a><span class="lineno">10489</span> <span class="comment"> single value; that is, with an empty list of reference tokens.</span></div>
|
||
<div class="line"><a name="l10490"></a><span class="lineno">10490</span> <span class="comment"> */</span></div>
|
||
<div class="line"><a name="l10491"></a><span class="lineno">10491</span>  <span class="keywordflow">default</span>:</div>
|
||
<div class="line"><a name="l10492"></a><span class="lineno">10492</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">detail::type_error::create</a>(313, <span class="stringliteral">"invalid value to unflatten"</span>));</div>
|
||
<div class="line"><a name="l10493"></a><span class="lineno">10493</span>  }</div>
|
||
<div class="line"><a name="l10494"></a><span class="lineno">10494</span>  }</div>
|
||
<div class="line"><a name="l10495"></a><span class="lineno">10495</span>  </div>
|
||
<div class="line"><a name="l10496"></a><span class="lineno">10496</span>  <span class="keywordflow">return</span> *result;</div>
|
||
<div class="line"><a name="l10497"></a><span class="lineno">10497</span>  }</div>
|
||
<div class="line"><a name="l10498"></a><span class="lineno">10498</span>  </div>
|
||
<div class="line"><a name="l10518"></a><span class="lineno">10518</span>  BasicJsonType& get_unchecked(BasicJsonType* ptr)<span class="keyword"> const</span></div>
|
||
<div class="line"><a name="l10519"></a><span class="lineno">10519</span> <span class="keyword"> </span>{</div>
|
||
<div class="line"><a name="l10520"></a><span class="lineno">10520</span>  <span class="keyword">using</span> size_type = <span class="keyword">typename</span> BasicJsonType::size_type;</div>
|
||
<div class="line"><a name="l10521"></a><span class="lineno">10521</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>& reference_token : reference_tokens)</div>
|
||
<div class="line"><a name="l10522"></a><span class="lineno">10522</span>  {</div>
|
||
<div class="line"><a name="l10523"></a><span class="lineno">10523</span>  <span class="comment">// convert null values to arrays or objects before continuing</span></div>
|
||
<div class="line"><a name="l10524"></a><span class="lineno">10524</span>  <span class="keywordflow">if</span> (ptr->is_null())</div>
|
||
<div class="line"><a name="l10525"></a><span class="lineno">10525</span>  {</div>
|
||
<div class="line"><a name="l10526"></a><span class="lineno">10526</span>  <span class="comment">// check if reference token is a number</span></div>
|
||
<div class="line"><a name="l10527"></a><span class="lineno">10527</span>  <span class="keyword">const</span> <span class="keywordtype">bool</span> nums =</div>
|
||
<div class="line"><a name="l10528"></a><span class="lineno">10528</span>  std::all_of(reference_token.begin(), reference_token.end(),</div>
|
||
<div class="line"><a name="l10529"></a><span class="lineno">10529</span>  [](<span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> x)</div>
|
||
<div class="line"><a name="l10530"></a><span class="lineno">10530</span>  {</div>
|
||
<div class="line"><a name="l10531"></a><span class="lineno">10531</span>  return std::isdigit(x);</div>
|
||
<div class="line"><a name="l10532"></a><span class="lineno">10532</span>  });</div>
|
||
<div class="line"><a name="l10533"></a><span class="lineno">10533</span>  </div>
|
||
<div class="line"><a name="l10534"></a><span class="lineno">10534</span>  <span class="comment">// change value to array for numbers or "-" or to object otherwise</span></div>
|
||
<div class="line"><a name="l10535"></a><span class="lineno">10535</span>  *ptr = (nums or reference_token == <span class="stringliteral">"-"</span>)</div>
|
||
<div class="line"><a name="l10536"></a><span class="lineno">10536</span>  ? <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">detail::value_t::array</a></div>
|
||
<div class="line"><a name="l10537"></a><span class="lineno">10537</span>  : <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">detail::value_t::object</a>;</div>
|
||
<div class="line"><a name="l10538"></a><span class="lineno">10538</span>  }</div>
|
||
<div class="line"><a name="l10539"></a><span class="lineno">10539</span>  </div>
|
||
<div class="line"><a name="l10540"></a><span class="lineno">10540</span>  <span class="keywordflow">switch</span> (ptr->type())</div>
|
||
<div class="line"><a name="l10541"></a><span class="lineno">10541</span>  {</div>
|
||
<div class="line"><a name="l10542"></a><span class="lineno">10542</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">detail::value_t::object</a>:</div>
|
||
<div class="line"><a name="l10543"></a><span class="lineno">10543</span>  {</div>
|
||
<div class="line"><a name="l10544"></a><span class="lineno">10544</span>  <span class="comment">// use unchecked object access</span></div>
|
||
<div class="line"><a name="l10545"></a><span class="lineno">10545</span>  ptr = &ptr->operator[](reference_token);</div>
|
||
<div class="line"><a name="l10546"></a><span class="lineno">10546</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l10547"></a><span class="lineno">10547</span>  }</div>
|
||
<div class="line"><a name="l10548"></a><span class="lineno">10548</span>  </div>
|
||
<div class="line"><a name="l10549"></a><span class="lineno">10549</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">detail::value_t::array</a>:</div>
|
||
<div class="line"><a name="l10550"></a><span class="lineno">10550</span>  {</div>
|
||
<div class="line"><a name="l10551"></a><span class="lineno">10551</span>  <span class="comment">// error condition (cf. RFC 6901, Sect. 4)</span></div>
|
||
<div class="line"><a name="l10552"></a><span class="lineno">10552</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(reference_token.size() > 1 and reference_token[0] == <span class="charliteral">'0'</span>))</div>
|
||
<div class="line"><a name="l10553"></a><span class="lineno">10553</span>  {</div>
|
||
<div class="line"><a name="l10554"></a><span class="lineno">10554</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1parse__error.html#a137ea4d27de45d8a844fd13451d40f3d">detail::parse_error::create</a>(106, 0,</div>
|
||
<div class="line"><a name="l10555"></a><span class="lineno">10555</span>  <span class="stringliteral">"array index '"</span> + reference_token +</div>
|
||
<div class="line"><a name="l10556"></a><span class="lineno">10556</span>  <span class="stringliteral">"' must not begin with '0'"</span>));</div>
|
||
<div class="line"><a name="l10557"></a><span class="lineno">10557</span>  }</div>
|
||
<div class="line"><a name="l10558"></a><span class="lineno">10558</span>  </div>
|
||
<div class="line"><a name="l10559"></a><span class="lineno">10559</span>  <span class="keywordflow">if</span> (reference_token == <span class="stringliteral">"-"</span>)</div>
|
||
<div class="line"><a name="l10560"></a><span class="lineno">10560</span>  {</div>
|
||
<div class="line"><a name="l10561"></a><span class="lineno">10561</span>  <span class="comment">// explicitly treat "-" as index beyond the end</span></div>
|
||
<div class="line"><a name="l10562"></a><span class="lineno">10562</span>  ptr = &ptr->operator[](ptr->m_value.array->size());</div>
|
||
<div class="line"><a name="l10563"></a><span class="lineno">10563</span>  }</div>
|
||
<div class="line"><a name="l10564"></a><span class="lineno">10564</span>  <span class="keywordflow">else</span></div>
|
||
<div class="line"><a name="l10565"></a><span class="lineno">10565</span>  {</div>
|
||
<div class="line"><a name="l10566"></a><span class="lineno">10566</span>  <span class="comment">// convert array index to number; unchecked access</span></div>
|
||
<div class="line"><a name="l10567"></a><span class="lineno">10567</span>  <a class="code" href="json_8hpp.html#a985d3b82445302c57257f6432f261fe9">JSON_TRY</a></div>
|
||
<div class="line"><a name="l10568"></a><span class="lineno">10568</span>  {</div>
|
||
<div class="line"><a name="l10569"></a><span class="lineno">10569</span>  ptr = &ptr->operator[](</div>
|
||
<div class="line"><a name="l10570"></a><span class="lineno">10570</span>  <span class="keyword">static_cast<</span>size_type<span class="keyword">></span>(array_index(reference_token)));</div>
|
||
<div class="line"><a name="l10571"></a><span class="lineno">10571</span>  }</div>
|
||
<div class="line"><a name="l10572"></a><span class="lineno">10572</span>  <a class="code" href="json_8hpp.html#a6954bec49ed2a2dfb938c1131c82740a">JSON_CATCH</a>(std::invalid_argument&)</div>
|
||
<div class="line"><a name="l10573"></a><span class="lineno">10573</span>  {</div>
|
||
<div class="line"><a name="l10574"></a><span class="lineno">10574</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1parse__error.html#a137ea4d27de45d8a844fd13451d40f3d">detail::parse_error::create</a>(109, 0, <span class="stringliteral">"array index '"</span> + reference_token + <span class="stringliteral">"' is not a number"</span>));</div>
|
||
<div class="line"><a name="l10575"></a><span class="lineno">10575</span>  }</div>
|
||
<div class="line"><a name="l10576"></a><span class="lineno">10576</span>  }</div>
|
||
<div class="line"><a name="l10577"></a><span class="lineno">10577</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l10578"></a><span class="lineno">10578</span>  }</div>
|
||
<div class="line"><a name="l10579"></a><span class="lineno">10579</span>  </div>
|
||
<div class="line"><a name="l10580"></a><span class="lineno">10580</span>  <span class="keywordflow">default</span>:</div>
|
||
<div class="line"><a name="l10581"></a><span class="lineno">10581</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1out__of__range.html#a3f6d82a6f967c4728a1ec735a7867073">detail::out_of_range::create</a>(404, <span class="stringliteral">"unresolved reference token '"</span> + reference_token + <span class="stringliteral">"'"</span>));</div>
|
||
<div class="line"><a name="l10582"></a><span class="lineno">10582</span>  }</div>
|
||
<div class="line"><a name="l10583"></a><span class="lineno">10583</span>  }</div>
|
||
<div class="line"><a name="l10584"></a><span class="lineno">10584</span>  </div>
|
||
<div class="line"><a name="l10585"></a><span class="lineno">10585</span>  <span class="keywordflow">return</span> *ptr;</div>
|
||
<div class="line"><a name="l10586"></a><span class="lineno">10586</span>  }</div>
|
||
<div class="line"><a name="l10587"></a><span class="lineno">10587</span>  </div>
|
||
<div class="line"><a name="l10594"></a><span class="lineno">10594</span>  BasicJsonType& get_checked(BasicJsonType* ptr)<span class="keyword"> const</span></div>
|
||
<div class="line"><a name="l10595"></a><span class="lineno">10595</span> <span class="keyword"> </span>{</div>
|
||
<div class="line"><a name="l10596"></a><span class="lineno">10596</span>  <span class="keyword">using</span> size_type = <span class="keyword">typename</span> BasicJsonType::size_type;</div>
|
||
<div class="line"><a name="l10597"></a><span class="lineno">10597</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>& reference_token : reference_tokens)</div>
|
||
<div class="line"><a name="l10598"></a><span class="lineno">10598</span>  {</div>
|
||
<div class="line"><a name="l10599"></a><span class="lineno">10599</span>  <span class="keywordflow">switch</span> (ptr->type())</div>
|
||
<div class="line"><a name="l10600"></a><span class="lineno">10600</span>  {</div>
|
||
<div class="line"><a name="l10601"></a><span class="lineno">10601</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">detail::value_t::object</a>:</div>
|
||
<div class="line"><a name="l10602"></a><span class="lineno">10602</span>  {</div>
|
||
<div class="line"><a name="l10603"></a><span class="lineno">10603</span>  <span class="comment">// note: at performs range check</span></div>
|
||
<div class="line"><a name="l10604"></a><span class="lineno">10604</span>  ptr = &ptr->at(reference_token);</div>
|
||
<div class="line"><a name="l10605"></a><span class="lineno">10605</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l10606"></a><span class="lineno">10606</span>  }</div>
|
||
<div class="line"><a name="l10607"></a><span class="lineno">10607</span>  </div>
|
||
<div class="line"><a name="l10608"></a><span class="lineno">10608</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">detail::value_t::array</a>:</div>
|
||
<div class="line"><a name="l10609"></a><span class="lineno">10609</span>  {</div>
|
||
<div class="line"><a name="l10610"></a><span class="lineno">10610</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(reference_token == <span class="stringliteral">"-"</span>))</div>
|
||
<div class="line"><a name="l10611"></a><span class="lineno">10611</span>  {</div>
|
||
<div class="line"><a name="l10612"></a><span class="lineno">10612</span>  <span class="comment">// "-" always fails the range check</span></div>
|
||
<div class="line"><a name="l10613"></a><span class="lineno">10613</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1out__of__range.html#a3f6d82a6f967c4728a1ec735a7867073">detail::out_of_range::create</a>(402,</div>
|
||
<div class="line"><a name="l10614"></a><span class="lineno">10614</span>  <span class="stringliteral">"array index '-' ("</span> + <a class="code" href="namespacenlohmann.html#a6ce645a0b8717757e096a5b5773b7a16">std::to_string</a>(ptr->m_value.array->size()) +</div>
|
||
<div class="line"><a name="l10615"></a><span class="lineno">10615</span>  <span class="stringliteral">") is out of range"</span>));</div>
|
||
<div class="line"><a name="l10616"></a><span class="lineno">10616</span>  }</div>
|
||
<div class="line"><a name="l10617"></a><span class="lineno">10617</span>  </div>
|
||
<div class="line"><a name="l10618"></a><span class="lineno">10618</span>  <span class="comment">// error condition (cf. RFC 6901, Sect. 4)</span></div>
|
||
<div class="line"><a name="l10619"></a><span class="lineno">10619</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(reference_token.size() > 1 and reference_token[0] == <span class="charliteral">'0'</span>))</div>
|
||
<div class="line"><a name="l10620"></a><span class="lineno">10620</span>  {</div>
|
||
<div class="line"><a name="l10621"></a><span class="lineno">10621</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1parse__error.html#a137ea4d27de45d8a844fd13451d40f3d">detail::parse_error::create</a>(106, 0,</div>
|
||
<div class="line"><a name="l10622"></a><span class="lineno">10622</span>  <span class="stringliteral">"array index '"</span> + reference_token +</div>
|
||
<div class="line"><a name="l10623"></a><span class="lineno">10623</span>  <span class="stringliteral">"' must not begin with '0'"</span>));</div>
|
||
<div class="line"><a name="l10624"></a><span class="lineno">10624</span>  }</div>
|
||
<div class="line"><a name="l10625"></a><span class="lineno">10625</span>  </div>
|
||
<div class="line"><a name="l10626"></a><span class="lineno">10626</span>  <span class="comment">// note: at performs range check</span></div>
|
||
<div class="line"><a name="l10627"></a><span class="lineno">10627</span>  <a class="code" href="json_8hpp.html#a985d3b82445302c57257f6432f261fe9">JSON_TRY</a></div>
|
||
<div class="line"><a name="l10628"></a><span class="lineno">10628</span>  {</div>
|
||
<div class="line"><a name="l10629"></a><span class="lineno">10629</span>  ptr = &ptr->at(<span class="keyword">static_cast<</span>size_type<span class="keyword">></span>(array_index(reference_token)));</div>
|
||
<div class="line"><a name="l10630"></a><span class="lineno">10630</span>  }</div>
|
||
<div class="line"><a name="l10631"></a><span class="lineno">10631</span>  <a class="code" href="json_8hpp.html#a6954bec49ed2a2dfb938c1131c82740a">JSON_CATCH</a>(std::invalid_argument&)</div>
|
||
<div class="line"><a name="l10632"></a><span class="lineno">10632</span>  {</div>
|
||
<div class="line"><a name="l10633"></a><span class="lineno">10633</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1parse__error.html#a137ea4d27de45d8a844fd13451d40f3d">detail::parse_error::create</a>(109, 0, <span class="stringliteral">"array index '"</span> + reference_token + <span class="stringliteral">"' is not a number"</span>));</div>
|
||
<div class="line"><a name="l10634"></a><span class="lineno">10634</span>  }</div>
|
||
<div class="line"><a name="l10635"></a><span class="lineno">10635</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l10636"></a><span class="lineno">10636</span>  }</div>
|
||
<div class="line"><a name="l10637"></a><span class="lineno">10637</span>  </div>
|
||
<div class="line"><a name="l10638"></a><span class="lineno">10638</span>  <span class="keywordflow">default</span>:</div>
|
||
<div class="line"><a name="l10639"></a><span class="lineno">10639</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1out__of__range.html#a3f6d82a6f967c4728a1ec735a7867073">detail::out_of_range::create</a>(404, <span class="stringliteral">"unresolved reference token '"</span> + reference_token + <span class="stringliteral">"'"</span>));</div>
|
||
<div class="line"><a name="l10640"></a><span class="lineno">10640</span>  }</div>
|
||
<div class="line"><a name="l10641"></a><span class="lineno">10641</span>  }</div>
|
||
<div class="line"><a name="l10642"></a><span class="lineno">10642</span>  </div>
|
||
<div class="line"><a name="l10643"></a><span class="lineno">10643</span>  <span class="keywordflow">return</span> *ptr;</div>
|
||
<div class="line"><a name="l10644"></a><span class="lineno">10644</span>  }</div>
|
||
<div class="line"><a name="l10645"></a><span class="lineno">10645</span>  </div>
|
||
<div class="line"><a name="l10659"></a><span class="lineno">10659</span>  <span class="keyword">const</span> BasicJsonType& get_unchecked(<span class="keyword">const</span> BasicJsonType* ptr)<span class="keyword"> const</span></div>
|
||
<div class="line"><a name="l10660"></a><span class="lineno">10660</span> <span class="keyword"> </span>{</div>
|
||
<div class="line"><a name="l10661"></a><span class="lineno">10661</span>  <span class="keyword">using</span> size_type = <span class="keyword">typename</span> BasicJsonType::size_type;</div>
|
||
<div class="line"><a name="l10662"></a><span class="lineno">10662</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>& reference_token : reference_tokens)</div>
|
||
<div class="line"><a name="l10663"></a><span class="lineno">10663</span>  {</div>
|
||
<div class="line"><a name="l10664"></a><span class="lineno">10664</span>  <span class="keywordflow">switch</span> (ptr->type())</div>
|
||
<div class="line"><a name="l10665"></a><span class="lineno">10665</span>  {</div>
|
||
<div class="line"><a name="l10666"></a><span class="lineno">10666</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">detail::value_t::object</a>:</div>
|
||
<div class="line"><a name="l10667"></a><span class="lineno">10667</span>  {</div>
|
||
<div class="line"><a name="l10668"></a><span class="lineno">10668</span>  <span class="comment">// use unchecked object access</span></div>
|
||
<div class="line"><a name="l10669"></a><span class="lineno">10669</span>  ptr = &ptr->operator[](reference_token);</div>
|
||
<div class="line"><a name="l10670"></a><span class="lineno">10670</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l10671"></a><span class="lineno">10671</span>  }</div>
|
||
<div class="line"><a name="l10672"></a><span class="lineno">10672</span>  </div>
|
||
<div class="line"><a name="l10673"></a><span class="lineno">10673</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">detail::value_t::array</a>:</div>
|
||
<div class="line"><a name="l10674"></a><span class="lineno">10674</span>  {</div>
|
||
<div class="line"><a name="l10675"></a><span class="lineno">10675</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(reference_token == <span class="stringliteral">"-"</span>))</div>
|
||
<div class="line"><a name="l10676"></a><span class="lineno">10676</span>  {</div>
|
||
<div class="line"><a name="l10677"></a><span class="lineno">10677</span>  <span class="comment">// "-" cannot be used for const access</span></div>
|
||
<div class="line"><a name="l10678"></a><span class="lineno">10678</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1out__of__range.html#a3f6d82a6f967c4728a1ec735a7867073">detail::out_of_range::create</a>(402,</div>
|
||
<div class="line"><a name="l10679"></a><span class="lineno">10679</span>  <span class="stringliteral">"array index '-' ("</span> + <a class="code" href="namespacenlohmann.html#a6ce645a0b8717757e096a5b5773b7a16">std::to_string</a>(ptr->m_value.array->size()) +</div>
|
||
<div class="line"><a name="l10680"></a><span class="lineno">10680</span>  <span class="stringliteral">") is out of range"</span>));</div>
|
||
<div class="line"><a name="l10681"></a><span class="lineno">10681</span>  }</div>
|
||
<div class="line"><a name="l10682"></a><span class="lineno">10682</span>  </div>
|
||
<div class="line"><a name="l10683"></a><span class="lineno">10683</span>  <span class="comment">// error condition (cf. RFC 6901, Sect. 4)</span></div>
|
||
<div class="line"><a name="l10684"></a><span class="lineno">10684</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(reference_token.size() > 1 and reference_token[0] == <span class="charliteral">'0'</span>))</div>
|
||
<div class="line"><a name="l10685"></a><span class="lineno">10685</span>  {</div>
|
||
<div class="line"><a name="l10686"></a><span class="lineno">10686</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1parse__error.html#a137ea4d27de45d8a844fd13451d40f3d">detail::parse_error::create</a>(106, 0,</div>
|
||
<div class="line"><a name="l10687"></a><span class="lineno">10687</span>  <span class="stringliteral">"array index '"</span> + reference_token +</div>
|
||
<div class="line"><a name="l10688"></a><span class="lineno">10688</span>  <span class="stringliteral">"' must not begin with '0'"</span>));</div>
|
||
<div class="line"><a name="l10689"></a><span class="lineno">10689</span>  }</div>
|
||
<div class="line"><a name="l10690"></a><span class="lineno">10690</span>  </div>
|
||
<div class="line"><a name="l10691"></a><span class="lineno">10691</span>  <span class="comment">// use unchecked array access</span></div>
|
||
<div class="line"><a name="l10692"></a><span class="lineno">10692</span>  <a class="code" href="json_8hpp.html#a985d3b82445302c57257f6432f261fe9">JSON_TRY</a></div>
|
||
<div class="line"><a name="l10693"></a><span class="lineno">10693</span>  {</div>
|
||
<div class="line"><a name="l10694"></a><span class="lineno">10694</span>  ptr = &ptr->operator[](</div>
|
||
<div class="line"><a name="l10695"></a><span class="lineno">10695</span>  <span class="keyword">static_cast<</span>size_type<span class="keyword">></span>(array_index(reference_token)));</div>
|
||
<div class="line"><a name="l10696"></a><span class="lineno">10696</span>  }</div>
|
||
<div class="line"><a name="l10697"></a><span class="lineno">10697</span>  <a class="code" href="json_8hpp.html#a6954bec49ed2a2dfb938c1131c82740a">JSON_CATCH</a>(std::invalid_argument&)</div>
|
||
<div class="line"><a name="l10698"></a><span class="lineno">10698</span>  {</div>
|
||
<div class="line"><a name="l10699"></a><span class="lineno">10699</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1parse__error.html#a137ea4d27de45d8a844fd13451d40f3d">detail::parse_error::create</a>(109, 0, <span class="stringliteral">"array index '"</span> + reference_token + <span class="stringliteral">"' is not a number"</span>));</div>
|
||
<div class="line"><a name="l10700"></a><span class="lineno">10700</span>  }</div>
|
||
<div class="line"><a name="l10701"></a><span class="lineno">10701</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l10702"></a><span class="lineno">10702</span>  }</div>
|
||
<div class="line"><a name="l10703"></a><span class="lineno">10703</span>  </div>
|
||
<div class="line"><a name="l10704"></a><span class="lineno">10704</span>  <span class="keywordflow">default</span>:</div>
|
||
<div class="line"><a name="l10705"></a><span class="lineno">10705</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1out__of__range.html#a3f6d82a6f967c4728a1ec735a7867073">detail::out_of_range::create</a>(404, <span class="stringliteral">"unresolved reference token '"</span> + reference_token + <span class="stringliteral">"'"</span>));</div>
|
||
<div class="line"><a name="l10706"></a><span class="lineno">10706</span>  }</div>
|
||
<div class="line"><a name="l10707"></a><span class="lineno">10707</span>  }</div>
|
||
<div class="line"><a name="l10708"></a><span class="lineno">10708</span>  </div>
|
||
<div class="line"><a name="l10709"></a><span class="lineno">10709</span>  <span class="keywordflow">return</span> *ptr;</div>
|
||
<div class="line"><a name="l10710"></a><span class="lineno">10710</span>  }</div>
|
||
<div class="line"><a name="l10711"></a><span class="lineno">10711</span>  </div>
|
||
<div class="line"><a name="l10718"></a><span class="lineno">10718</span>  <span class="keyword">const</span> BasicJsonType& get_checked(<span class="keyword">const</span> BasicJsonType* ptr)<span class="keyword"> const</span></div>
|
||
<div class="line"><a name="l10719"></a><span class="lineno">10719</span> <span class="keyword"> </span>{</div>
|
||
<div class="line"><a name="l10720"></a><span class="lineno">10720</span>  <span class="keyword">using</span> size_type = <span class="keyword">typename</span> BasicJsonType::size_type;</div>
|
||
<div class="line"><a name="l10721"></a><span class="lineno">10721</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>& reference_token : reference_tokens)</div>
|
||
<div class="line"><a name="l10722"></a><span class="lineno">10722</span>  {</div>
|
||
<div class="line"><a name="l10723"></a><span class="lineno">10723</span>  <span class="keywordflow">switch</span> (ptr->type())</div>
|
||
<div class="line"><a name="l10724"></a><span class="lineno">10724</span>  {</div>
|
||
<div class="line"><a name="l10725"></a><span class="lineno">10725</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">detail::value_t::object</a>:</div>
|
||
<div class="line"><a name="l10726"></a><span class="lineno">10726</span>  {</div>
|
||
<div class="line"><a name="l10727"></a><span class="lineno">10727</span>  <span class="comment">// note: at performs range check</span></div>
|
||
<div class="line"><a name="l10728"></a><span class="lineno">10728</span>  ptr = &ptr->at(reference_token);</div>
|
||
<div class="line"><a name="l10729"></a><span class="lineno">10729</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l10730"></a><span class="lineno">10730</span>  }</div>
|
||
<div class="line"><a name="l10731"></a><span class="lineno">10731</span>  </div>
|
||
<div class="line"><a name="l10732"></a><span class="lineno">10732</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">detail::value_t::array</a>:</div>
|
||
<div class="line"><a name="l10733"></a><span class="lineno">10733</span>  {</div>
|
||
<div class="line"><a name="l10734"></a><span class="lineno">10734</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(reference_token == <span class="stringliteral">"-"</span>))</div>
|
||
<div class="line"><a name="l10735"></a><span class="lineno">10735</span>  {</div>
|
||
<div class="line"><a name="l10736"></a><span class="lineno">10736</span>  <span class="comment">// "-" always fails the range check</span></div>
|
||
<div class="line"><a name="l10737"></a><span class="lineno">10737</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1out__of__range.html#a3f6d82a6f967c4728a1ec735a7867073">detail::out_of_range::create</a>(402,</div>
|
||
<div class="line"><a name="l10738"></a><span class="lineno">10738</span>  <span class="stringliteral">"array index '-' ("</span> + <a class="code" href="namespacenlohmann.html#a6ce645a0b8717757e096a5b5773b7a16">std::to_string</a>(ptr->m_value.array->size()) +</div>
|
||
<div class="line"><a name="l10739"></a><span class="lineno">10739</span>  <span class="stringliteral">") is out of range"</span>));</div>
|
||
<div class="line"><a name="l10740"></a><span class="lineno">10740</span>  }</div>
|
||
<div class="line"><a name="l10741"></a><span class="lineno">10741</span>  </div>
|
||
<div class="line"><a name="l10742"></a><span class="lineno">10742</span>  <span class="comment">// error condition (cf. RFC 6901, Sect. 4)</span></div>
|
||
<div class="line"><a name="l10743"></a><span class="lineno">10743</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(reference_token.size() > 1 and reference_token[0] == <span class="charliteral">'0'</span>))</div>
|
||
<div class="line"><a name="l10744"></a><span class="lineno">10744</span>  {</div>
|
||
<div class="line"><a name="l10745"></a><span class="lineno">10745</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1parse__error.html#a137ea4d27de45d8a844fd13451d40f3d">detail::parse_error::create</a>(106, 0,</div>
|
||
<div class="line"><a name="l10746"></a><span class="lineno">10746</span>  <span class="stringliteral">"array index '"</span> + reference_token +</div>
|
||
<div class="line"><a name="l10747"></a><span class="lineno">10747</span>  <span class="stringliteral">"' must not begin with '0'"</span>));</div>
|
||
<div class="line"><a name="l10748"></a><span class="lineno">10748</span>  }</div>
|
||
<div class="line"><a name="l10749"></a><span class="lineno">10749</span>  </div>
|
||
<div class="line"><a name="l10750"></a><span class="lineno">10750</span>  <span class="comment">// note: at performs range check</span></div>
|
||
<div class="line"><a name="l10751"></a><span class="lineno">10751</span>  <a class="code" href="json_8hpp.html#a985d3b82445302c57257f6432f261fe9">JSON_TRY</a></div>
|
||
<div class="line"><a name="l10752"></a><span class="lineno">10752</span>  {</div>
|
||
<div class="line"><a name="l10753"></a><span class="lineno">10753</span>  ptr = &ptr->at(<span class="keyword">static_cast<</span>size_type<span class="keyword">></span>(array_index(reference_token)));</div>
|
||
<div class="line"><a name="l10754"></a><span class="lineno">10754</span>  }</div>
|
||
<div class="line"><a name="l10755"></a><span class="lineno">10755</span>  <a class="code" href="json_8hpp.html#a6954bec49ed2a2dfb938c1131c82740a">JSON_CATCH</a>(std::invalid_argument&)</div>
|
||
<div class="line"><a name="l10756"></a><span class="lineno">10756</span>  {</div>
|
||
<div class="line"><a name="l10757"></a><span class="lineno">10757</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1parse__error.html#a137ea4d27de45d8a844fd13451d40f3d">detail::parse_error::create</a>(109, 0, <span class="stringliteral">"array index '"</span> + reference_token + <span class="stringliteral">"' is not a number"</span>));</div>
|
||
<div class="line"><a name="l10758"></a><span class="lineno">10758</span>  }</div>
|
||
<div class="line"><a name="l10759"></a><span class="lineno">10759</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l10760"></a><span class="lineno">10760</span>  }</div>
|
||
<div class="line"><a name="l10761"></a><span class="lineno">10761</span>  </div>
|
||
<div class="line"><a name="l10762"></a><span class="lineno">10762</span>  <span class="keywordflow">default</span>:</div>
|
||
<div class="line"><a name="l10763"></a><span class="lineno">10763</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1out__of__range.html#a3f6d82a6f967c4728a1ec735a7867073">detail::out_of_range::create</a>(404, <span class="stringliteral">"unresolved reference token '"</span> + reference_token + <span class="stringliteral">"'"</span>));</div>
|
||
<div class="line"><a name="l10764"></a><span class="lineno">10764</span>  }</div>
|
||
<div class="line"><a name="l10765"></a><span class="lineno">10765</span>  }</div>
|
||
<div class="line"><a name="l10766"></a><span class="lineno">10766</span>  </div>
|
||
<div class="line"><a name="l10767"></a><span class="lineno">10767</span>  <span class="keywordflow">return</span> *ptr;</div>
|
||
<div class="line"><a name="l10768"></a><span class="lineno">10768</span>  }</div>
|
||
<div class="line"><a name="l10769"></a><span class="lineno">10769</span>  </div>
|
||
<div class="line"><a name="l10774"></a><span class="lineno">10774</span>  <span class="keywordtype">bool</span> contains(<span class="keyword">const</span> BasicJsonType* ptr)<span class="keyword"> const</span></div>
|
||
<div class="line"><a name="l10775"></a><span class="lineno">10775</span> <span class="keyword"> </span>{</div>
|
||
<div class="line"><a name="l10776"></a><span class="lineno">10776</span>  <span class="keyword">using</span> size_type = <span class="keyword">typename</span> BasicJsonType::size_type;</div>
|
||
<div class="line"><a name="l10777"></a><span class="lineno">10777</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>& reference_token : reference_tokens)</div>
|
||
<div class="line"><a name="l10778"></a><span class="lineno">10778</span>  {</div>
|
||
<div class="line"><a name="l10779"></a><span class="lineno">10779</span>  <span class="keywordflow">switch</span> (ptr->type())</div>
|
||
<div class="line"><a name="l10780"></a><span class="lineno">10780</span>  {</div>
|
||
<div class="line"><a name="l10781"></a><span class="lineno">10781</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">detail::value_t::object</a>:</div>
|
||
<div class="line"><a name="l10782"></a><span class="lineno">10782</span>  {</div>
|
||
<div class="line"><a name="l10783"></a><span class="lineno">10783</span>  <span class="keywordflow">if</span> (not ptr->contains(reference_token))</div>
|
||
<div class="line"><a name="l10784"></a><span class="lineno">10784</span>  {</div>
|
||
<div class="line"><a name="l10785"></a><span class="lineno">10785</span>  <span class="comment">// we did not find the key in the object</span></div>
|
||
<div class="line"><a name="l10786"></a><span class="lineno">10786</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||
<div class="line"><a name="l10787"></a><span class="lineno">10787</span>  }</div>
|
||
<div class="line"><a name="l10788"></a><span class="lineno">10788</span>  </div>
|
||
<div class="line"><a name="l10789"></a><span class="lineno">10789</span>  ptr = &ptr->operator[](reference_token);</div>
|
||
<div class="line"><a name="l10790"></a><span class="lineno">10790</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l10791"></a><span class="lineno">10791</span>  }</div>
|
||
<div class="line"><a name="l10792"></a><span class="lineno">10792</span>  </div>
|
||
<div class="line"><a name="l10793"></a><span class="lineno">10793</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">detail::value_t::array</a>:</div>
|
||
<div class="line"><a name="l10794"></a><span class="lineno">10794</span>  {</div>
|
||
<div class="line"><a name="l10795"></a><span class="lineno">10795</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(reference_token == <span class="stringliteral">"-"</span>))</div>
|
||
<div class="line"><a name="l10796"></a><span class="lineno">10796</span>  {</div>
|
||
<div class="line"><a name="l10797"></a><span class="lineno">10797</span>  <span class="comment">// "-" always fails the range check</span></div>
|
||
<div class="line"><a name="l10798"></a><span class="lineno">10798</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||
<div class="line"><a name="l10799"></a><span class="lineno">10799</span>  }</div>
|
||
<div class="line"><a name="l10800"></a><span class="lineno">10800</span>  </div>
|
||
<div class="line"><a name="l10801"></a><span class="lineno">10801</span>  <span class="comment">// error condition (cf. RFC 6901, Sect. 4)</span></div>
|
||
<div class="line"><a name="l10802"></a><span class="lineno">10802</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(reference_token.size() > 1 and reference_token[0] == <span class="charliteral">'0'</span>))</div>
|
||
<div class="line"><a name="l10803"></a><span class="lineno">10803</span>  {</div>
|
||
<div class="line"><a name="l10804"></a><span class="lineno">10804</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1parse__error.html#a137ea4d27de45d8a844fd13451d40f3d">detail::parse_error::create</a>(106, 0,</div>
|
||
<div class="line"><a name="l10805"></a><span class="lineno">10805</span>  <span class="stringliteral">"array index '"</span> + reference_token +</div>
|
||
<div class="line"><a name="l10806"></a><span class="lineno">10806</span>  <span class="stringliteral">"' must not begin with '0'"</span>));</div>
|
||
<div class="line"><a name="l10807"></a><span class="lineno">10807</span>  }</div>
|
||
<div class="line"><a name="l10808"></a><span class="lineno">10808</span>  </div>
|
||
<div class="line"><a name="l10809"></a><span class="lineno">10809</span>  <a class="code" href="json_8hpp.html#a985d3b82445302c57257f6432f261fe9">JSON_TRY</a></div>
|
||
<div class="line"><a name="l10810"></a><span class="lineno">10810</span>  {</div>
|
||
<div class="line"><a name="l10811"></a><span class="lineno">10811</span>  <span class="keyword">const</span> <span class="keyword">auto</span> idx = <span class="keyword">static_cast<</span>size_type<span class="keyword">></span>(array_index(reference_token));</div>
|
||
<div class="line"><a name="l10812"></a><span class="lineno">10812</span>  <span class="keywordflow">if</span> (idx >= ptr->size())</div>
|
||
<div class="line"><a name="l10813"></a><span class="lineno">10813</span>  {</div>
|
||
<div class="line"><a name="l10814"></a><span class="lineno">10814</span>  <span class="comment">// index out of range</span></div>
|
||
<div class="line"><a name="l10815"></a><span class="lineno">10815</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||
<div class="line"><a name="l10816"></a><span class="lineno">10816</span>  }</div>
|
||
<div class="line"><a name="l10817"></a><span class="lineno">10817</span>  </div>
|
||
<div class="line"><a name="l10818"></a><span class="lineno">10818</span>  ptr = &ptr->operator[](idx);</div>
|
||
<div class="line"><a name="l10819"></a><span class="lineno">10819</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l10820"></a><span class="lineno">10820</span>  }</div>
|
||
<div class="line"><a name="l10821"></a><span class="lineno">10821</span>  <a class="code" href="json_8hpp.html#a6954bec49ed2a2dfb938c1131c82740a">JSON_CATCH</a>(std::invalid_argument&)</div>
|
||
<div class="line"><a name="l10822"></a><span class="lineno">10822</span>  {</div>
|
||
<div class="line"><a name="l10823"></a><span class="lineno">10823</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1parse__error.html#a137ea4d27de45d8a844fd13451d40f3d">detail::parse_error::create</a>(109, 0, <span class="stringliteral">"array index '"</span> + reference_token + <span class="stringliteral">"' is not a number"</span>));</div>
|
||
<div class="line"><a name="l10824"></a><span class="lineno">10824</span>  }</div>
|
||
<div class="line"><a name="l10825"></a><span class="lineno">10825</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l10826"></a><span class="lineno">10826</span>  }</div>
|
||
<div class="line"><a name="l10827"></a><span class="lineno">10827</span>  </div>
|
||
<div class="line"><a name="l10828"></a><span class="lineno">10828</span>  <span class="keywordflow">default</span>:</div>
|
||
<div class="line"><a name="l10829"></a><span class="lineno">10829</span>  {</div>
|
||
<div class="line"><a name="l10830"></a><span class="lineno">10830</span>  <span class="comment">// we do not expect primitive values if there is still a</span></div>
|
||
<div class="line"><a name="l10831"></a><span class="lineno">10831</span>  <span class="comment">// reference token to process</span></div>
|
||
<div class="line"><a name="l10832"></a><span class="lineno">10832</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||
<div class="line"><a name="l10833"></a><span class="lineno">10833</span>  }</div>
|
||
<div class="line"><a name="l10834"></a><span class="lineno">10834</span>  }</div>
|
||
<div class="line"><a name="l10835"></a><span class="lineno">10835</span>  }</div>
|
||
<div class="line"><a name="l10836"></a><span class="lineno">10836</span>  </div>
|
||
<div class="line"><a name="l10837"></a><span class="lineno">10837</span>  <span class="comment">// no reference token left means we found a primitive value</span></div>
|
||
<div class="line"><a name="l10838"></a><span class="lineno">10838</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
||
<div class="line"><a name="l10839"></a><span class="lineno">10839</span>  }</div>
|
||
<div class="line"><a name="l10840"></a><span class="lineno">10840</span>  </div>
|
||
<div class="line"><a name="l10850"></a><span class="lineno">10850</span>  <span class="keyword">static</span> std::vector<std::string> split(<span class="keyword">const</span> std::string& reference_string)</div>
|
||
<div class="line"><a name="l10851"></a><span class="lineno">10851</span>  {</div>
|
||
<div class="line"><a name="l10852"></a><span class="lineno">10852</span>  std::vector<std::string> result;</div>
|
||
<div class="line"><a name="l10853"></a><span class="lineno">10853</span>  </div>
|
||
<div class="line"><a name="l10854"></a><span class="lineno">10854</span>  <span class="comment">// special case: empty reference string -> no reference tokens</span></div>
|
||
<div class="line"><a name="l10855"></a><span class="lineno">10855</span>  <span class="keywordflow">if</span> (reference_string.empty())</div>
|
||
<div class="line"><a name="l10856"></a><span class="lineno">10856</span>  {</div>
|
||
<div class="line"><a name="l10857"></a><span class="lineno">10857</span>  <span class="keywordflow">return</span> result;</div>
|
||
<div class="line"><a name="l10858"></a><span class="lineno">10858</span>  }</div>
|
||
<div class="line"><a name="l10859"></a><span class="lineno">10859</span>  </div>
|
||
<div class="line"><a name="l10860"></a><span class="lineno">10860</span>  <span class="comment">// check if nonempty reference string begins with slash</span></div>
|
||
<div class="line"><a name="l10861"></a><span class="lineno">10861</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(reference_string[0] != <span class="charliteral">'/'</span>))</div>
|
||
<div class="line"><a name="l10862"></a><span class="lineno">10862</span>  {</div>
|
||
<div class="line"><a name="l10863"></a><span class="lineno">10863</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1parse__error.html#a137ea4d27de45d8a844fd13451d40f3d">detail::parse_error::create</a>(107, 1,</div>
|
||
<div class="line"><a name="l10864"></a><span class="lineno">10864</span>  <span class="stringliteral">"JSON pointer must be empty or begin with '/' - was: '"</span> +</div>
|
||
<div class="line"><a name="l10865"></a><span class="lineno">10865</span>  reference_string + <span class="stringliteral">"'"</span>));</div>
|
||
<div class="line"><a name="l10866"></a><span class="lineno">10866</span>  }</div>
|
||
<div class="line"><a name="l10867"></a><span class="lineno">10867</span>  </div>
|
||
<div class="line"><a name="l10868"></a><span class="lineno">10868</span>  <span class="comment">// extract the reference tokens:</span></div>
|
||
<div class="line"><a name="l10869"></a><span class="lineno">10869</span>  <span class="comment">// - slash: position of the last read slash (or end of string)</span></div>
|
||
<div class="line"><a name="l10870"></a><span class="lineno">10870</span>  <span class="comment">// - start: position after the previous slash</span></div>
|
||
<div class="line"><a name="l10871"></a><span class="lineno">10871</span>  <span class="keywordflow">for</span> (</div>
|
||
<div class="line"><a name="l10872"></a><span class="lineno">10872</span>  <span class="comment">// search for the first slash after the first character</span></div>
|
||
<div class="line"><a name="l10873"></a><span class="lineno">10873</span>  std::size_t slash = reference_string.find_first_of(<span class="charliteral">'/'</span>, 1),</div>
|
||
<div class="line"><a name="l10874"></a><span class="lineno">10874</span>  <span class="comment">// set the beginning of the first reference token</span></div>
|
||
<div class="line"><a name="l10875"></a><span class="lineno">10875</span>  start = 1;</div>
|
||
<div class="line"><a name="l10876"></a><span class="lineno">10876</span>  <span class="comment">// we can stop if start == 0 (if slash == std::string::npos)</span></div>
|
||
<div class="line"><a name="l10877"></a><span class="lineno">10877</span>  start != 0;</div>
|
||
<div class="line"><a name="l10878"></a><span class="lineno">10878</span>  <span class="comment">// set the beginning of the next reference token</span></div>
|
||
<div class="line"><a name="l10879"></a><span class="lineno">10879</span>  <span class="comment">// (will eventually be 0 if slash == std::string::npos)</span></div>
|
||
<div class="line"><a name="l10880"></a><span class="lineno">10880</span>  start = (slash == std::string::npos) ? 0 : slash + 1,</div>
|
||
<div class="line"><a name="l10881"></a><span class="lineno">10881</span>  <span class="comment">// find next slash</span></div>
|
||
<div class="line"><a name="l10882"></a><span class="lineno">10882</span>  slash = reference_string.find_first_of(<span class="charliteral">'/'</span>, start))</div>
|
||
<div class="line"><a name="l10883"></a><span class="lineno">10883</span>  {</div>
|
||
<div class="line"><a name="l10884"></a><span class="lineno">10884</span>  <span class="comment">// use the text between the beginning of the reference token</span></div>
|
||
<div class="line"><a name="l10885"></a><span class="lineno">10885</span>  <span class="comment">// (start) and the last slash (slash).</span></div>
|
||
<div class="line"><a name="l10886"></a><span class="lineno">10886</span>  <span class="keyword">auto</span> reference_token = reference_string.substr(start, slash - start);</div>
|
||
<div class="line"><a name="l10887"></a><span class="lineno">10887</span>  </div>
|
||
<div class="line"><a name="l10888"></a><span class="lineno">10888</span>  <span class="comment">// check reference tokens are properly escaped</span></div>
|
||
<div class="line"><a name="l10889"></a><span class="lineno">10889</span>  <span class="keywordflow">for</span> (std::size_t pos = reference_token.find_first_of(<span class="charliteral">'~'</span>);</div>
|
||
<div class="line"><a name="l10890"></a><span class="lineno">10890</span>  pos != std::string::npos;</div>
|
||
<div class="line"><a name="l10891"></a><span class="lineno">10891</span>  pos = reference_token.find_first_of(<span class="charliteral">'~'</span>, pos + 1))</div>
|
||
<div class="line"><a name="l10892"></a><span class="lineno">10892</span>  {</div>
|
||
<div class="line"><a name="l10893"></a><span class="lineno">10893</span>  assert(reference_token[pos] == <span class="charliteral">'~'</span>);</div>
|
||
<div class="line"><a name="l10894"></a><span class="lineno">10894</span>  </div>
|
||
<div class="line"><a name="l10895"></a><span class="lineno">10895</span>  <span class="comment">// ~ must be followed by 0 or 1</span></div>
|
||
<div class="line"><a name="l10896"></a><span class="lineno">10896</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(pos == reference_token.size() - 1 or</div>
|
||
<div class="line"><a name="l10897"></a><span class="lineno">10897</span>  (reference_token[pos + 1] != <span class="charliteral">'0'</span> and</div>
|
||
<div class="line"><a name="l10898"></a><span class="lineno">10898</span>  reference_token[pos + 1] != <span class="charliteral">'1'</span>)))</div>
|
||
<div class="line"><a name="l10899"></a><span class="lineno">10899</span>  {</div>
|
||
<div class="line"><a name="l10900"></a><span class="lineno">10900</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1parse__error.html#a137ea4d27de45d8a844fd13451d40f3d">detail::parse_error::create</a>(108, 0, <span class="stringliteral">"escape character '~' must be followed with '0' or '1'"</span>));</div>
|
||
<div class="line"><a name="l10901"></a><span class="lineno">10901</span>  }</div>
|
||
<div class="line"><a name="l10902"></a><span class="lineno">10902</span>  }</div>
|
||
<div class="line"><a name="l10903"></a><span class="lineno">10903</span>  </div>
|
||
<div class="line"><a name="l10904"></a><span class="lineno">10904</span>  <span class="comment">// finally, store the reference token</span></div>
|
||
<div class="line"><a name="l10905"></a><span class="lineno">10905</span>  unescape(reference_token);</div>
|
||
<div class="line"><a name="l10906"></a><span class="lineno">10906</span>  result.push_back(reference_token);</div>
|
||
<div class="line"><a name="l10907"></a><span class="lineno">10907</span>  }</div>
|
||
<div class="line"><a name="l10908"></a><span class="lineno">10908</span>  </div>
|
||
<div class="line"><a name="l10909"></a><span class="lineno">10909</span>  <span class="keywordflow">return</span> result;</div>
|
||
<div class="line"><a name="l10910"></a><span class="lineno">10910</span>  }</div>
|
||
<div class="line"><a name="l10911"></a><span class="lineno">10911</span>  </div>
|
||
<div class="line"><a name="l10925"></a><span class="lineno">10925</span>  <span class="keyword">static</span> <span class="keywordtype">void</span> replace_substring(std::string& s, <span class="keyword">const</span> std::string& f,</div>
|
||
<div class="line"><a name="l10926"></a><span class="lineno">10926</span>  <span class="keyword">const</span> std::string& t)</div>
|
||
<div class="line"><a name="l10927"></a><span class="lineno">10927</span>  {</div>
|
||
<div class="line"><a name="l10928"></a><span class="lineno">10928</span>  assert(not f.empty());</div>
|
||
<div class="line"><a name="l10929"></a><span class="lineno">10929</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span> pos = s.find(f); <span class="comment">// find first occurrence of f</span></div>
|
||
<div class="line"><a name="l10930"></a><span class="lineno">10930</span>  pos != std::string::npos; <span class="comment">// make sure f was found</span></div>
|
||
<div class="line"><a name="l10931"></a><span class="lineno">10931</span>  s.replace(pos, f.size(), t), <span class="comment">// replace with t, and</span></div>
|
||
<div class="line"><a name="l10932"></a><span class="lineno">10932</span>  pos = s.find(f, pos + t.size())) <span class="comment">// find next occurrence of f</span></div>
|
||
<div class="line"><a name="l10933"></a><span class="lineno">10933</span>  {}</div>
|
||
<div class="line"><a name="l10934"></a><span class="lineno">10934</span>  }</div>
|
||
<div class="line"><a name="l10935"></a><span class="lineno">10935</span>  </div>
|
||
<div class="line"><a name="l10937"></a><span class="lineno">10937</span>  <span class="keyword">static</span> std::string escape(std::string s)</div>
|
||
<div class="line"><a name="l10938"></a><span class="lineno">10938</span>  {</div>
|
||
<div class="line"><a name="l10939"></a><span class="lineno">10939</span>  replace_substring(s, <span class="stringliteral">"~"</span>, <span class="stringliteral">"~0"</span>);</div>
|
||
<div class="line"><a name="l10940"></a><span class="lineno">10940</span>  replace_substring(s, <span class="stringliteral">"/"</span>, <span class="stringliteral">"~1"</span>);</div>
|
||
<div class="line"><a name="l10941"></a><span class="lineno">10941</span>  <span class="keywordflow">return</span> s;</div>
|
||
<div class="line"><a name="l10942"></a><span class="lineno">10942</span>  }</div>
|
||
<div class="line"><a name="l10943"></a><span class="lineno">10943</span>  </div>
|
||
<div class="line"><a name="l10945"></a><span class="lineno">10945</span>  <span class="keyword">static</span> <span class="keywordtype">void</span> unescape(std::string& s)</div>
|
||
<div class="line"><a name="l10946"></a><span class="lineno">10946</span>  {</div>
|
||
<div class="line"><a name="l10947"></a><span class="lineno">10947</span>  replace_substring(s, <span class="stringliteral">"~1"</span>, <span class="stringliteral">"/"</span>);</div>
|
||
<div class="line"><a name="l10948"></a><span class="lineno">10948</span>  replace_substring(s, <span class="stringliteral">"~0"</span>, <span class="stringliteral">"~"</span>);</div>
|
||
<div class="line"><a name="l10949"></a><span class="lineno">10949</span>  }</div>
|
||
<div class="line"><a name="l10950"></a><span class="lineno">10950</span>  </div>
|
||
<div class="line"><a name="l10958"></a><span class="lineno">10958</span>  <span class="keyword">static</span> <span class="keywordtype">void</span> flatten(<span class="keyword">const</span> std::string& reference_string,</div>
|
||
<div class="line"><a name="l10959"></a><span class="lineno">10959</span>  <span class="keyword">const</span> BasicJsonType& value,</div>
|
||
<div class="line"><a name="l10960"></a><span class="lineno">10960</span>  BasicJsonType& result)</div>
|
||
<div class="line"><a name="l10961"></a><span class="lineno">10961</span>  {</div>
|
||
<div class="line"><a name="l10962"></a><span class="lineno">10962</span>  <span class="keywordflow">switch</span> (value.type())</div>
|
||
<div class="line"><a name="l10963"></a><span class="lineno">10963</span>  {</div>
|
||
<div class="line"><a name="l10964"></a><span class="lineno">10964</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">detail::value_t::array</a>:</div>
|
||
<div class="line"><a name="l10965"></a><span class="lineno">10965</span>  {</div>
|
||
<div class="line"><a name="l10966"></a><span class="lineno">10966</span>  <span class="keywordflow">if</span> (value.m_value.array->empty())</div>
|
||
<div class="line"><a name="l10967"></a><span class="lineno">10967</span>  {</div>
|
||
<div class="line"><a name="l10968"></a><span class="lineno">10968</span>  <span class="comment">// flatten empty array as null</span></div>
|
||
<div class="line"><a name="l10969"></a><span class="lineno">10969</span>  result[reference_string] = <span class="keyword">nullptr</span>;</div>
|
||
<div class="line"><a name="l10970"></a><span class="lineno">10970</span>  }</div>
|
||
<div class="line"><a name="l10971"></a><span class="lineno">10971</span>  <span class="keywordflow">else</span></div>
|
||
<div class="line"><a name="l10972"></a><span class="lineno">10972</span>  {</div>
|
||
<div class="line"><a name="l10973"></a><span class="lineno">10973</span>  <span class="comment">// iterate array and use index as reference string</span></div>
|
||
<div class="line"><a name="l10974"></a><span class="lineno">10974</span>  <span class="keywordflow">for</span> (std::size_t i = 0; i < value.m_value.array->size(); ++i)</div>
|
||
<div class="line"><a name="l10975"></a><span class="lineno">10975</span>  {</div>
|
||
<div class="line"><a name="l10976"></a><span class="lineno">10976</span>  flatten(reference_string + <span class="stringliteral">"/"</span> + <a class="code" href="namespacenlohmann.html#a6ce645a0b8717757e096a5b5773b7a16">std::to_string</a>(i),</div>
|
||
<div class="line"><a name="l10977"></a><span class="lineno">10977</span>  value.m_value.array->operator[](i), result);</div>
|
||
<div class="line"><a name="l10978"></a><span class="lineno">10978</span>  }</div>
|
||
<div class="line"><a name="l10979"></a><span class="lineno">10979</span>  }</div>
|
||
<div class="line"><a name="l10980"></a><span class="lineno">10980</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l10981"></a><span class="lineno">10981</span>  }</div>
|
||
<div class="line"><a name="l10982"></a><span class="lineno">10982</span>  </div>
|
||
<div class="line"><a name="l10983"></a><span class="lineno">10983</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">detail::value_t::object</a>:</div>
|
||
<div class="line"><a name="l10984"></a><span class="lineno">10984</span>  {</div>
|
||
<div class="line"><a name="l10985"></a><span class="lineno">10985</span>  <span class="keywordflow">if</span> (value.m_value.object->empty())</div>
|
||
<div class="line"><a name="l10986"></a><span class="lineno">10986</span>  {</div>
|
||
<div class="line"><a name="l10987"></a><span class="lineno">10987</span>  <span class="comment">// flatten empty object as null</span></div>
|
||
<div class="line"><a name="l10988"></a><span class="lineno">10988</span>  result[reference_string] = <span class="keyword">nullptr</span>;</div>
|
||
<div class="line"><a name="l10989"></a><span class="lineno">10989</span>  }</div>
|
||
<div class="line"><a name="l10990"></a><span class="lineno">10990</span>  <span class="keywordflow">else</span></div>
|
||
<div class="line"><a name="l10991"></a><span class="lineno">10991</span>  {</div>
|
||
<div class="line"><a name="l10992"></a><span class="lineno">10992</span>  <span class="comment">// iterate object and use keys as reference string</span></div>
|
||
<div class="line"><a name="l10993"></a><span class="lineno">10993</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>& element : *value.m_value.object)</div>
|
||
<div class="line"><a name="l10994"></a><span class="lineno">10994</span>  {</div>
|
||
<div class="line"><a name="l10995"></a><span class="lineno">10995</span>  flatten(reference_string + <span class="stringliteral">"/"</span> + escape(element.first), element.second, result);</div>
|
||
<div class="line"><a name="l10996"></a><span class="lineno">10996</span>  }</div>
|
||
<div class="line"><a name="l10997"></a><span class="lineno">10997</span>  }</div>
|
||
<div class="line"><a name="l10998"></a><span class="lineno">10998</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l10999"></a><span class="lineno">10999</span>  }</div>
|
||
<div class="line"><a name="l11000"></a><span class="lineno">11000</span>  </div>
|
||
<div class="line"><a name="l11001"></a><span class="lineno">11001</span>  <span class="keywordflow">default</span>:</div>
|
||
<div class="line"><a name="l11002"></a><span class="lineno">11002</span>  {</div>
|
||
<div class="line"><a name="l11003"></a><span class="lineno">11003</span>  <span class="comment">// add primitive value with its reference string</span></div>
|
||
<div class="line"><a name="l11004"></a><span class="lineno">11004</span>  result[reference_string] = value;</div>
|
||
<div class="line"><a name="l11005"></a><span class="lineno">11005</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l11006"></a><span class="lineno">11006</span>  }</div>
|
||
<div class="line"><a name="l11007"></a><span class="lineno">11007</span>  }</div>
|
||
<div class="line"><a name="l11008"></a><span class="lineno">11008</span>  }</div>
|
||
<div class="line"><a name="l11009"></a><span class="lineno">11009</span>  </div>
|
||
<div class="line"><a name="l11020"></a><span class="lineno">11020</span>  <span class="keyword">static</span> BasicJsonType</div>
|
||
<div class="line"><a name="l11021"></a><span class="lineno">11021</span>  unflatten(<span class="keyword">const</span> BasicJsonType& value)</div>
|
||
<div class="line"><a name="l11022"></a><span class="lineno">11022</span>  {</div>
|
||
<div class="line"><a name="l11023"></a><span class="lineno">11023</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not value.is_object()))</div>
|
||
<div class="line"><a name="l11024"></a><span class="lineno">11024</span>  {</div>
|
||
<div class="line"><a name="l11025"></a><span class="lineno">11025</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">detail::type_error::create</a>(314, <span class="stringliteral">"only objects can be unflattened"</span>));</div>
|
||
<div class="line"><a name="l11026"></a><span class="lineno">11026</span>  }</div>
|
||
<div class="line"><a name="l11027"></a><span class="lineno">11027</span>  </div>
|
||
<div class="line"><a name="l11028"></a><span class="lineno">11028</span>  BasicJsonType result;</div>
|
||
<div class="line"><a name="l11029"></a><span class="lineno">11029</span>  </div>
|
||
<div class="line"><a name="l11030"></a><span class="lineno">11030</span>  <span class="comment">// iterate the JSON object values</span></div>
|
||
<div class="line"><a name="l11031"></a><span class="lineno">11031</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>& element : *value.m_value.object)</div>
|
||
<div class="line"><a name="l11032"></a><span class="lineno">11032</span>  {</div>
|
||
<div class="line"><a name="l11033"></a><span class="lineno">11033</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not element.second.is_primitive()))</div>
|
||
<div class="line"><a name="l11034"></a><span class="lineno">11034</span>  {</div>
|
||
<div class="line"><a name="l11035"></a><span class="lineno">11035</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">detail::type_error::create</a>(315, <span class="stringliteral">"values in object must be primitive"</span>));</div>
|
||
<div class="line"><a name="l11036"></a><span class="lineno">11036</span>  }</div>
|
||
<div class="line"><a name="l11037"></a><span class="lineno">11037</span>  </div>
|
||
<div class="line"><a name="l11038"></a><span class="lineno">11038</span>  <span class="comment">// assign value to reference pointed to by JSON pointer; Note that if</span></div>
|
||
<div class="line"><a name="l11039"></a><span class="lineno">11039</span>  <span class="comment">// the JSON pointer is "" (i.e., points to the whole value), function</span></div>
|
||
<div class="line"><a name="l11040"></a><span class="lineno">11040</span>  <span class="comment">// get_and_create returns a reference to result itself. An assignment</span></div>
|
||
<div class="line"><a name="l11041"></a><span class="lineno">11041</span>  <span class="comment">// will then create a primitive value.</span></div>
|
||
<div class="line"><a name="l11042"></a><span class="lineno">11042</span>  <a class="code" href="classnlohmann_1_1json__pointer.html#a7f32d7c62841f0c4a6784cf741a6e4f8">json_pointer</a>(element.first).get_and_create(result) = element.second;</div>
|
||
<div class="line"><a name="l11043"></a><span class="lineno">11043</span>  }</div>
|
||
<div class="line"><a name="l11044"></a><span class="lineno">11044</span>  </div>
|
||
<div class="line"><a name="l11045"></a><span class="lineno">11045</span>  <span class="keywordflow">return</span> result;</div>
|
||
<div class="line"><a name="l11046"></a><span class="lineno">11046</span>  }</div>
|
||
<div class="line"><a name="l11047"></a><span class="lineno">11047</span>  </div>
|
||
<div class="line"><a name="l11059"></a><span class="lineno"><a class="line" href="classnlohmann_1_1json__pointer.html#a4667ef558c8c3f8a646bfda0c6654653">11059</a></span>  <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1json__pointer.html#a4667ef558c8c3f8a646bfda0c6654653">operator==</a>(<a class="code" href="classnlohmann_1_1json__pointer.html">json_pointer</a> <span class="keyword">const</span>& lhs,</div>
|
||
<div class="line"><a name="l11060"></a><span class="lineno">11060</span>  <a class="code" href="classnlohmann_1_1json__pointer.html">json_pointer</a> <span class="keyword">const</span>& rhs) noexcept</div>
|
||
<div class="line"><a name="l11061"></a><span class="lineno">11061</span>  {</div>
|
||
<div class="line"><a name="l11062"></a><span class="lineno">11062</span>  <span class="keywordflow">return</span> lhs.reference_tokens == rhs.reference_tokens;</div>
|
||
<div class="line"><a name="l11063"></a><span class="lineno">11063</span>  }</div>
|
||
<div class="line"><a name="l11064"></a><span class="lineno">11064</span>  </div>
|
||
<div class="line"><a name="l11076"></a><span class="lineno"><a class="line" href="classnlohmann_1_1json__pointer.html#a6779edcf28e6f018a3bbb29c0b4b5e1e">11076</a></span>  <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1json__pointer.html#a6779edcf28e6f018a3bbb29c0b4b5e1e">operator!=</a>(<a class="code" href="classnlohmann_1_1json__pointer.html">json_pointer</a> <span class="keyword">const</span>& lhs,</div>
|
||
<div class="line"><a name="l11077"></a><span class="lineno">11077</span>  <a class="code" href="classnlohmann_1_1json__pointer.html">json_pointer</a> <span class="keyword">const</span>& rhs) noexcept</div>
|
||
<div class="line"><a name="l11078"></a><span class="lineno">11078</span>  {</div>
|
||
<div class="line"><a name="l11079"></a><span class="lineno">11079</span>  <span class="keywordflow">return</span> not (lhs == rhs);</div>
|
||
<div class="line"><a name="l11080"></a><span class="lineno">11080</span>  }</div>
|
||
<div class="line"><a name="l11081"></a><span class="lineno">11081</span>  </div>
|
||
<div class="line"><a name="l11083"></a><span class="lineno">11083</span>  std::vector<std::string> reference_tokens;</div>
|
||
<div class="line"><a name="l11084"></a><span class="lineno">11084</span> };</div>
|
||
<div class="line"><a name="l11085"></a><span class="lineno">11085</span> } <span class="comment">// namespace nlohmann</span></div>
|
||
<div class="line"><a name="l11086"></a><span class="lineno">11086</span>  </div>
|
||
<div class="line"><a name="l11087"></a><span class="lineno">11087</span> <span class="comment">// #include <nlohmann/detail/json_ref.hpp></span></div>
|
||
<div class="line"><a name="l11088"></a><span class="lineno">11088</span>  </div>
|
||
<div class="line"><a name="l11089"></a><span class="lineno">11089</span>  </div>
|
||
<div class="line"><a name="l11090"></a><span class="lineno">11090</span> <span class="preprocessor">#include <initializer_list></span></div>
|
||
<div class="line"><a name="l11091"></a><span class="lineno">11091</span> <span class="preprocessor">#include <utility></span></div>
|
||
<div class="line"><a name="l11092"></a><span class="lineno">11092</span>  </div>
|
||
<div class="line"><a name="l11093"></a><span class="lineno">11093</span> <span class="comment">// #include <nlohmann/detail/meta/type_traits.hpp></span></div>
|
||
<div class="line"><a name="l11094"></a><span class="lineno">11094</span>  </div>
|
||
<div class="line"><a name="l11095"></a><span class="lineno">11095</span>  </div>
|
||
<div class="line"><a name="l11096"></a><span class="lineno">11096</span> <span class="keyword">namespace </span><a class="code" href="namespacenlohmann.html">nlohmann</a></div>
|
||
<div class="line"><a name="l11097"></a><span class="lineno">11097</span> {</div>
|
||
<div class="line"><a name="l11098"></a><span class="lineno">11098</span> <span class="keyword">namespace </span>detail</div>
|
||
<div class="line"><a name="l11099"></a><span class="lineno">11099</span> {</div>
|
||
<div class="line"><a name="l11100"></a><span class="lineno">11100</span> <span class="keyword">template</span><<span class="keyword">typename</span> BasicJsonType></div>
|
||
<div class="line"><a name="l11101"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__ref.html">11101</a></span> <span class="keyword">class </span><a class="code" href="classnlohmann_1_1detail_1_1json__ref.html">json_ref</a></div>
|
||
<div class="line"><a name="l11102"></a><span class="lineno">11102</span> {</div>
|
||
<div class="line"><a name="l11103"></a><span class="lineno">11103</span>  <span class="keyword">public</span>:</div>
|
||
<div class="line"><a name="l11104"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__ref.html#a78d76cf288141049568c0d670ed670ef">11104</a></span>  <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1detail_1_1json__ref.html#a78d76cf288141049568c0d670ed670ef">value_type</a> = BasicJsonType;</div>
|
||
<div class="line"><a name="l11105"></a><span class="lineno">11105</span>  </div>
|
||
<div class="line"><a name="l11106"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__ref.html#ae1adf5bcee8b6fa0c358710604fb1938">11106</a></span>  <a class="code" href="classnlohmann_1_1detail_1_1json__ref.html#ae1adf5bcee8b6fa0c358710604fb1938">json_ref</a>(<a class="code" href="classnlohmann_1_1detail_1_1json__ref.html#a78d76cf288141049568c0d670ed670ef">value_type</a>&& value)</div>
|
||
<div class="line"><a name="l11107"></a><span class="lineno">11107</span>  : owned_value(<a class="code" href="namespacestd.html">std</a>::move(value)), value_ref(&owned_value), is_rvalue(true)</div>
|
||
<div class="line"><a name="l11108"></a><span class="lineno">11108</span>  {}</div>
|
||
<div class="line"><a name="l11109"></a><span class="lineno">11109</span>  </div>
|
||
<div class="line"><a name="l11110"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__ref.html#a8c3eb3c6e952ed0cd7eece586ab4047c">11110</a></span>  <a class="code" href="classnlohmann_1_1detail_1_1json__ref.html#a8c3eb3c6e952ed0cd7eece586ab4047c">json_ref</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1json__ref.html#a78d76cf288141049568c0d670ed670ef">value_type</a>& value)</div>
|
||
<div class="line"><a name="l11111"></a><span class="lineno">11111</span>  : value_ref(const_cast<<a class="code" href="classnlohmann_1_1detail_1_1json__ref.html#a78d76cf288141049568c0d670ed670ef">value_type</a>*>(&value)), is_rvalue(false)</div>
|
||
<div class="line"><a name="l11112"></a><span class="lineno">11112</span>  {}</div>
|
||
<div class="line"><a name="l11113"></a><span class="lineno">11113</span>  </div>
|
||
<div class="line"><a name="l11114"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__ref.html#adfba2db547283a7c6a5df9a32e72efc5">11114</a></span>  <a class="code" href="classnlohmann_1_1detail_1_1json__ref.html#adfba2db547283a7c6a5df9a32e72efc5">json_ref</a>(std::initializer_list<json_ref> init)</div>
|
||
<div class="line"><a name="l11115"></a><span class="lineno">11115</span>  : owned_value(init), value_ref(&owned_value), is_rvalue(true)</div>
|
||
<div class="line"><a name="l11116"></a><span class="lineno">11116</span>  {}</div>
|
||
<div class="line"><a name="l11117"></a><span class="lineno">11117</span>  </div>
|
||
<div class="line"><a name="l11118"></a><span class="lineno">11118</span>  <span class="keyword">template</span> <</div>
|
||
<div class="line"><a name="l11119"></a><span class="lineno">11119</span>  <span class="keyword">class</span>... Args,</div>
|
||
<div class="line"><a name="l11120"></a><span class="lineno">11120</span>  <a class="code" href="namespacenlohmann_1_1detail.html#a02bcbc878bee413f25b985ada771aa9c">enable_if_t</a><std::is_constructible<<a class="code" href="classnlohmann_1_1detail_1_1json__ref.html#a78d76cf288141049568c0d670ed670ef">value_type</a>, Args...>::value, <span class="keywordtype">int</span>> = 0 ></div>
|
||
<div class="line"><a name="l11121"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__ref.html#a8a31d6c588d6c3c06b62008fd5d36c6c">11121</a></span>  <a class="code" href="classnlohmann_1_1detail_1_1json__ref.html#a8a31d6c588d6c3c06b62008fd5d36c6c">json_ref</a>(Args && ... args)</div>
|
||
<div class="line"><a name="l11122"></a><span class="lineno">11122</span>  : owned_value(<a class="code" href="namespacestd.html">std</a>::forward<Args>(args)...), value_ref(&owned_value),</div>
|
||
<div class="line"><a name="l11123"></a><span class="lineno">11123</span>  is_rvalue(true) {}</div>
|
||
<div class="line"><a name="l11124"></a><span class="lineno">11124</span>  </div>
|
||
<div class="line"><a name="l11125"></a><span class="lineno">11125</span>  <span class="comment">// class should be movable only</span></div>
|
||
<div class="line"><a name="l11126"></a><span class="lineno">11126</span>  <a class="code" href="classnlohmann_1_1detail_1_1json__ref.html#ae1adf5bcee8b6fa0c358710604fb1938">json_ref</a>(<a class="code" href="classnlohmann_1_1detail_1_1json__ref.html">json_ref</a>&&) = <span class="keywordflow">default</span>;</div>
|
||
<div class="line"><a name="l11127"></a><span class="lineno">11127</span>  <a class="code" href="classnlohmann_1_1detail_1_1json__ref.html#ae1adf5bcee8b6fa0c358710604fb1938">json_ref</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1json__ref.html">json_ref</a>&) = <span class="keyword">delete</span>;</div>
|
||
<div class="line"><a name="l11128"></a><span class="lineno">11128</span>  <a class="code" href="classnlohmann_1_1detail_1_1json__ref.html">json_ref</a>& <a class="code" href="classnlohmann_1_1detail_1_1json__ref.html#a98956ba676b1ae16b62346f9c4fb752e">operator=</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1json__ref.html">json_ref</a>&) = <span class="keyword">delete</span>;</div>
|
||
<div class="line"><a name="l11129"></a><span class="lineno">11129</span>  <a class="code" href="classnlohmann_1_1detail_1_1json__ref.html">json_ref</a>& <a class="code" href="classnlohmann_1_1detail_1_1json__ref.html#a98956ba676b1ae16b62346f9c4fb752e">operator=</a>(<a class="code" href="classnlohmann_1_1detail_1_1json__ref.html">json_ref</a>&&) = <span class="keyword">delete</span>;</div>
|
||
<div class="line"><a name="l11130"></a><span class="lineno">11130</span>  <a class="code" href="classnlohmann_1_1detail_1_1json__ref.html#a8bcd4cfcafe952ce5140f8cb35ebe2f6">~json_ref</a>() = <span class="keywordflow">default</span>;</div>
|
||
<div class="line"><a name="l11131"></a><span class="lineno">11131</span>  </div>
|
||
<div class="line"><a name="l11132"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__ref.html#ae39e523218bf05cac3fb5b5b1cd5efb6">11132</a></span>  <a class="code" href="classnlohmann_1_1detail_1_1json__ref.html#a78d76cf288141049568c0d670ed670ef">value_type</a> <a class="code" href="classnlohmann_1_1detail_1_1json__ref.html#ae39e523218bf05cac3fb5b5b1cd5efb6">moved_or_copied</a>()<span class="keyword"> const</span></div>
|
||
<div class="line"><a name="l11133"></a><span class="lineno">11133</span> <span class="keyword"> </span>{</div>
|
||
<div class="line"><a name="l11134"></a><span class="lineno">11134</span>  <span class="keywordflow">if</span> (is_rvalue)</div>
|
||
<div class="line"><a name="l11135"></a><span class="lineno">11135</span>  {</div>
|
||
<div class="line"><a name="l11136"></a><span class="lineno">11136</span>  <span class="keywordflow">return</span> std::move(*value_ref);</div>
|
||
<div class="line"><a name="l11137"></a><span class="lineno">11137</span>  }</div>
|
||
<div class="line"><a name="l11138"></a><span class="lineno">11138</span>  <span class="keywordflow">return</span> *value_ref;</div>
|
||
<div class="line"><a name="l11139"></a><span class="lineno">11139</span>  }</div>
|
||
<div class="line"><a name="l11140"></a><span class="lineno">11140</span>  </div>
|
||
<div class="line"><a name="l11141"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__ref.html#aa3100e41472dba02ab78ccc1607e44ab">11141</a></span>  <a class="code" href="classnlohmann_1_1detail_1_1json__ref.html#a78d76cf288141049568c0d670ed670ef">value_type</a> <span class="keyword">const</span>& <a class="code" href="classnlohmann_1_1detail_1_1json__ref.html#aa3100e41472dba02ab78ccc1607e44ab">operator*</a>()<span class="keyword"> const</span></div>
|
||
<div class="line"><a name="l11142"></a><span class="lineno">11142</span> <span class="keyword"> </span>{</div>
|
||
<div class="line"><a name="l11143"></a><span class="lineno">11143</span>  <span class="keywordflow">return</span> *<span class="keyword">static_cast<</span><a class="code" href="classnlohmann_1_1detail_1_1json__ref.html#a78d76cf288141049568c0d670ed670ef">value_type</a> const*<span class="keyword">></span>(value_ref);</div>
|
||
<div class="line"><a name="l11144"></a><span class="lineno">11144</span>  }</div>
|
||
<div class="line"><a name="l11145"></a><span class="lineno">11145</span>  </div>
|
||
<div class="line"><a name="l11146"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1json__ref.html#adb652774a67829876449dc0b30637456">11146</a></span>  <a class="code" href="classnlohmann_1_1detail_1_1json__ref.html#a78d76cf288141049568c0d670ed670ef">value_type</a> <span class="keyword">const</span>* <a class="code" href="classnlohmann_1_1detail_1_1json__ref.html#adb652774a67829876449dc0b30637456">operator-></a>()<span class="keyword"> const</span></div>
|
||
<div class="line"><a name="l11147"></a><span class="lineno">11147</span> <span class="keyword"> </span>{</div>
|
||
<div class="line"><a name="l11148"></a><span class="lineno">11148</span>  <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><a class="code" href="classnlohmann_1_1detail_1_1json__ref.html#a78d76cf288141049568c0d670ed670ef">value_type</a> const*<span class="keyword">></span>(value_ref);</div>
|
||
<div class="line"><a name="l11149"></a><span class="lineno">11149</span>  }</div>
|
||
<div class="line"><a name="l11150"></a><span class="lineno">11150</span>  </div>
|
||
<div class="line"><a name="l11151"></a><span class="lineno">11151</span>  <span class="keyword">private</span>:</div>
|
||
<div class="line"><a name="l11152"></a><span class="lineno">11152</span>  <span class="keyword">mutable</span> <a class="code" href="classnlohmann_1_1detail_1_1json__ref.html#a78d76cf288141049568c0d670ed670ef">value_type</a> owned_value = <span class="keyword">nullptr</span>;</div>
|
||
<div class="line"><a name="l11153"></a><span class="lineno">11153</span>  <a class="code" href="classnlohmann_1_1detail_1_1json__ref.html#a78d76cf288141049568c0d670ed670ef">value_type</a>* value_ref = <span class="keyword">nullptr</span>;</div>
|
||
<div class="line"><a name="l11154"></a><span class="lineno">11154</span>  <span class="keyword">const</span> <span class="keywordtype">bool</span> is_rvalue;</div>
|
||
<div class="line"><a name="l11155"></a><span class="lineno">11155</span> };</div>
|
||
<div class="line"><a name="l11156"></a><span class="lineno">11156</span> } <span class="comment">// namespace detail</span></div>
|
||
<div class="line"><a name="l11157"></a><span class="lineno">11157</span> } <span class="comment">// namespace nlohmann</span></div>
|
||
<div class="line"><a name="l11158"></a><span class="lineno">11158</span>  </div>
|
||
<div class="line"><a name="l11159"></a><span class="lineno">11159</span> <span class="comment">// #include <nlohmann/detail/macro_scope.hpp></span></div>
|
||
<div class="line"><a name="l11160"></a><span class="lineno">11160</span>  </div>
|
||
<div class="line"><a name="l11161"></a><span class="lineno">11161</span> <span class="comment">// #include <nlohmann/detail/meta/cpp_future.hpp></span></div>
|
||
<div class="line"><a name="l11162"></a><span class="lineno">11162</span>  </div>
|
||
<div class="line"><a name="l11163"></a><span class="lineno">11163</span> <span class="comment">// #include <nlohmann/detail/meta/type_traits.hpp></span></div>
|
||
<div class="line"><a name="l11164"></a><span class="lineno">11164</span>  </div>
|
||
<div class="line"><a name="l11165"></a><span class="lineno">11165</span> <span class="comment">// #include <nlohmann/detail/output/binary_writer.hpp></span></div>
|
||
<div class="line"><a name="l11166"></a><span class="lineno">11166</span>  </div>
|
||
<div class="line"><a name="l11167"></a><span class="lineno">11167</span>  </div>
|
||
<div class="line"><a name="l11168"></a><span class="lineno">11168</span> <span class="preprocessor">#include <algorithm></span> <span class="comment">// reverse</span></div>
|
||
<div class="line"><a name="l11169"></a><span class="lineno">11169</span> <span class="preprocessor">#include <array></span> <span class="comment">// array</span></div>
|
||
<div class="line"><a name="l11170"></a><span class="lineno">11170</span> <span class="preprocessor">#include <cstdint></span> <span class="comment">// uint8_t, uint16_t, uint32_t, uint64_t</span></div>
|
||
<div class="line"><a name="l11171"></a><span class="lineno">11171</span> <span class="preprocessor">#include <cstring></span> <span class="comment">// memcpy</span></div>
|
||
<div class="line"><a name="l11172"></a><span class="lineno">11172</span> <span class="preprocessor">#include <limits></span> <span class="comment">// numeric_limits</span></div>
|
||
<div class="line"><a name="l11173"></a><span class="lineno">11173</span> <span class="preprocessor">#include <string></span> <span class="comment">// string</span></div>
|
||
<div class="line"><a name="l11174"></a><span class="lineno">11174</span>  </div>
|
||
<div class="line"><a name="l11175"></a><span class="lineno">11175</span> <span class="comment">// #include <nlohmann/detail/input/binary_reader.hpp></span></div>
|
||
<div class="line"><a name="l11176"></a><span class="lineno">11176</span>  </div>
|
||
<div class="line"><a name="l11177"></a><span class="lineno">11177</span> <span class="comment">// #include <nlohmann/detail/macro_scope.hpp></span></div>
|
||
<div class="line"><a name="l11178"></a><span class="lineno">11178</span>  </div>
|
||
<div class="line"><a name="l11179"></a><span class="lineno">11179</span> <span class="comment">// #include <nlohmann/detail/output/output_adapters.hpp></span></div>
|
||
<div class="line"><a name="l11180"></a><span class="lineno">11180</span>  </div>
|
||
<div class="line"><a name="l11181"></a><span class="lineno">11181</span>  </div>
|
||
<div class="line"><a name="l11182"></a><span class="lineno">11182</span> <span class="preprocessor">#include <algorithm></span> <span class="comment">// copy</span></div>
|
||
<div class="line"><a name="l11183"></a><span class="lineno">11183</span> <span class="preprocessor">#include <cstddef></span> <span class="comment">// size_t</span></div>
|
||
<div class="line"><a name="l11184"></a><span class="lineno">11184</span> <span class="preprocessor">#include <ios></span> <span class="comment">// streamsize</span></div>
|
||
<div class="line"><a name="l11185"></a><span class="lineno">11185</span> <span class="preprocessor">#include <iterator></span> <span class="comment">// back_inserter</span></div>
|
||
<div class="line"><a name="l11186"></a><span class="lineno">11186</span> <span class="preprocessor">#include <memory></span> <span class="comment">// shared_ptr, make_shared</span></div>
|
||
<div class="line"><a name="l11187"></a><span class="lineno">11187</span> <span class="preprocessor">#include <ostream></span> <span class="comment">// basic_ostream</span></div>
|
||
<div class="line"><a name="l11188"></a><span class="lineno">11188</span> <span class="preprocessor">#include <string></span> <span class="comment">// basic_string</span></div>
|
||
<div class="line"><a name="l11189"></a><span class="lineno">11189</span> <span class="preprocessor">#include <vector></span> <span class="comment">// vector</span></div>
|
||
<div class="line"><a name="l11190"></a><span class="lineno">11190</span> <span class="comment">// #include <nlohmann/detail/macro_scope.hpp></span></div>
|
||
<div class="line"><a name="l11191"></a><span class="lineno">11191</span>  </div>
|
||
<div class="line"><a name="l11192"></a><span class="lineno">11192</span>  </div>
|
||
<div class="line"><a name="l11193"></a><span class="lineno">11193</span> <span class="keyword">namespace </span><a class="code" href="namespacenlohmann.html">nlohmann</a></div>
|
||
<div class="line"><a name="l11194"></a><span class="lineno">11194</span> {</div>
|
||
<div class="line"><a name="l11195"></a><span class="lineno">11195</span> <span class="keyword">namespace </span>detail</div>
|
||
<div class="line"><a name="l11196"></a><span class="lineno">11196</span> {</div>
|
||
<div class="line"><a name="l11198"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1output__adapter__protocol.html">11198</a></span> <span class="keyword">template</span><<span class="keyword">typename</span> CharType> <span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1output__adapter__protocol.html">output_adapter_protocol</a></div>
|
||
<div class="line"><a name="l11199"></a><span class="lineno">11199</span> {</div>
|
||
<div class="line"><a name="l11200"></a><span class="lineno">11200</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> write_character(CharType c) = 0;</div>
|
||
<div class="line"><a name="l11201"></a><span class="lineno">11201</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> write_characters(<span class="keyword">const</span> CharType* s, std::size_t length) = 0;</div>
|
||
<div class="line"><a name="l11202"></a><span class="lineno">11202</span>  <span class="keyword">virtual</span> ~<a class="code" href="structnlohmann_1_1detail_1_1output__adapter__protocol.html">output_adapter_protocol</a>() = <span class="keywordflow">default</span>;</div>
|
||
<div class="line"><a name="l11203"></a><span class="lineno">11203</span> };</div>
|
||
<div class="line"><a name="l11204"></a><span class="lineno">11204</span>  </div>
|
||
<div class="line"><a name="l11206"></a><span class="lineno">11206</span> <span class="keyword">template</span><<span class="keyword">typename</span> CharType></div>
|
||
<div class="line"><a name="l11207"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a9b680ddfb58f27eb53a67229447fc556">11207</a></span> <span class="keyword">using</span> <a class="code" href="namespacenlohmann_1_1detail.html#a9b680ddfb58f27eb53a67229447fc556">output_adapter_t</a> = std::shared_ptr<output_adapter_protocol<CharType>>;</div>
|
||
<div class="line"><a name="l11208"></a><span class="lineno">11208</span>  </div>
|
||
<div class="line"><a name="l11210"></a><span class="lineno">11210</span> <span class="keyword">template</span><<span class="keyword">typename</span> CharType></div>
|
||
<div class="line"><a name="l11211"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1output__vector__adapter.html">11211</a></span> <span class="keyword">class </span><a class="code" href="classnlohmann_1_1detail_1_1output__vector__adapter.html">output_vector_adapter</a> : <span class="keyword">public</span> <a class="code" href="structnlohmann_1_1detail_1_1output__adapter__protocol.html">output_adapter_protocol</a><CharType></div>
|
||
<div class="line"><a name="l11212"></a><span class="lineno">11212</span> {</div>
|
||
<div class="line"><a name="l11213"></a><span class="lineno">11213</span>  <span class="keyword">public</span>:</div>
|
||
<div class="line"><a name="l11214"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1output__vector__adapter.html#a9c4fbf88fda356837038ec30a264cd3e">11214</a></span>  <span class="keyword">explicit</span> <a class="code" href="classnlohmann_1_1detail_1_1output__vector__adapter.html#a9c4fbf88fda356837038ec30a264cd3e">output_vector_adapter</a>(std::vector<CharType>& vec) noexcept</div>
|
||
<div class="line"><a name="l11215"></a><span class="lineno">11215</span>  : v(vec)</div>
|
||
<div class="line"><a name="l11216"></a><span class="lineno">11216</span>  {}</div>
|
||
<div class="line"><a name="l11217"></a><span class="lineno">11217</span>  </div>
|
||
<div class="line"><a name="l11218"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1output__vector__adapter.html#af6a22d4210bb7bc2da66021300ddd6db">11218</a></span>  <span class="keywordtype">void</span> <a class="code" href="classnlohmann_1_1detail_1_1output__vector__adapter.html#af6a22d4210bb7bc2da66021300ddd6db">write_character</a>(CharType c)<span class="keyword"> override</span></div>
|
||
<div class="line"><a name="l11219"></a><span class="lineno">11219</span> <span class="keyword"> </span>{</div>
|
||
<div class="line"><a name="l11220"></a><span class="lineno">11220</span>  v.push_back(c);</div>
|
||
<div class="line"><a name="l11221"></a><span class="lineno">11221</span>  }</div>
|
||
<div class="line"><a name="l11222"></a><span class="lineno">11222</span>  </div>
|
||
<div class="line"><a name="l11223"></a><span class="lineno">11223</span>  <a class="code" href="json_8hpp.html#a5338981b5ad9027c9e54b1c5597f4344">JSON_HEDLEY_NON_NULL</a>(2)</div>
|
||
<div class="line"><a name="l11224"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1output__vector__adapter.html#ad6f6c461dec7bedd5359454dc22fc9aa">11224</a></span>  <a class="code" href="namespacenlohmann_1_1detail.html#a59fca69799f6b9e366710cb9043aa77d">void</a> write_characters(const CharType* s, <a class="code" href="namespacestd.html">std</a>::<span class="keywordtype">size_t</span> length)<span class="keyword"> override</span></div>
|
||
<div class="line"><a name="l11225"></a><span class="lineno">11225</span> <span class="keyword"> </span>{</div>
|
||
<div class="line"><a name="l11226"></a><span class="lineno">11226</span>  std::copy(s, s + length, std::back_inserter(v));</div>
|
||
<div class="line"><a name="l11227"></a><span class="lineno">11227</span>  }</div>
|
||
<div class="line"><a name="l11228"></a><span class="lineno">11228</span>  </div>
|
||
<div class="line"><a name="l11229"></a><span class="lineno">11229</span>  <span class="keyword">private</span>:</div>
|
||
<div class="line"><a name="l11230"></a><span class="lineno">11230</span>  std::vector<CharType>& v;</div>
|
||
<div class="line"><a name="l11231"></a><span class="lineno">11231</span> };</div>
|
||
<div class="line"><a name="l11232"></a><span class="lineno">11232</span>  </div>
|
||
<div class="line"><a name="l11234"></a><span class="lineno">11234</span> <span class="keyword">template</span><<span class="keyword">typename</span> CharType></div>
|
||
<div class="line"><a name="l11235"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1output__stream__adapter.html">11235</a></span> <span class="keyword">class </span><a class="code" href="classnlohmann_1_1detail_1_1output__stream__adapter.html">output_stream_adapter</a> : <span class="keyword">public</span> <a class="code" href="structnlohmann_1_1detail_1_1output__adapter__protocol.html">output_adapter_protocol</a><CharType></div>
|
||
<div class="line"><a name="l11236"></a><span class="lineno">11236</span> {</div>
|
||
<div class="line"><a name="l11237"></a><span class="lineno">11237</span>  <span class="keyword">public</span>:</div>
|
||
<div class="line"><a name="l11238"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1output__stream__adapter.html#ae44ed343cb1a716248547f48dd045b6a">11238</a></span>  <span class="keyword">explicit</span> <a class="code" href="classnlohmann_1_1detail_1_1output__stream__adapter.html#ae44ed343cb1a716248547f48dd045b6a">output_stream_adapter</a>(std::basic_ostream<CharType>& s) noexcept</div>
|
||
<div class="line"><a name="l11239"></a><span class="lineno">11239</span>  : stream(s)</div>
|
||
<div class="line"><a name="l11240"></a><span class="lineno">11240</span>  {}</div>
|
||
<div class="line"><a name="l11241"></a><span class="lineno">11241</span>  </div>
|
||
<div class="line"><a name="l11242"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1output__stream__adapter.html#a6e2698c76b200b2d8fac6cebfc43a245">11242</a></span>  <span class="keywordtype">void</span> <a class="code" href="classnlohmann_1_1detail_1_1output__stream__adapter.html#a6e2698c76b200b2d8fac6cebfc43a245">write_character</a>(CharType c)<span class="keyword"> override</span></div>
|
||
<div class="line"><a name="l11243"></a><span class="lineno">11243</span> <span class="keyword"> </span>{</div>
|
||
<div class="line"><a name="l11244"></a><span class="lineno">11244</span>  stream.put(c);</div>
|
||
<div class="line"><a name="l11245"></a><span class="lineno">11245</span>  }</div>
|
||
<div class="line"><a name="l11246"></a><span class="lineno">11246</span>  </div>
|
||
<div class="line"><a name="l11247"></a><span class="lineno">11247</span>  <a class="code" href="json_8hpp.html#a5338981b5ad9027c9e54b1c5597f4344">JSON_HEDLEY_NON_NULL</a>(2)</div>
|
||
<div class="line"><a name="l11248"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1output__stream__adapter.html#ad61375497a7d03cb0bdcddfdaad185d0">11248</a></span>  <a class="code" href="namespacenlohmann_1_1detail.html#a59fca69799f6b9e366710cb9043aa77d">void</a> write_characters(const CharType* s, <a class="code" href="namespacestd.html">std</a>::<span class="keywordtype">size_t</span> length)<span class="keyword"> override</span></div>
|
||
<div class="line"><a name="l11249"></a><span class="lineno">11249</span> <span class="keyword"> </span>{</div>
|
||
<div class="line"><a name="l11250"></a><span class="lineno">11250</span>  stream.write(s, <span class="keyword">static_cast<</span>std::streamsize<span class="keyword">></span>(length));</div>
|
||
<div class="line"><a name="l11251"></a><span class="lineno">11251</span>  }</div>
|
||
<div class="line"><a name="l11252"></a><span class="lineno">11252</span>  </div>
|
||
<div class="line"><a name="l11253"></a><span class="lineno">11253</span>  <span class="keyword">private</span>:</div>
|
||
<div class="line"><a name="l11254"></a><span class="lineno">11254</span>  std::basic_ostream<CharType>& stream;</div>
|
||
<div class="line"><a name="l11255"></a><span class="lineno">11255</span> };</div>
|
||
<div class="line"><a name="l11256"></a><span class="lineno">11256</span>  </div>
|
||
<div class="line"><a name="l11258"></a><span class="lineno">11258</span> <span class="keyword">template</span><<span class="keyword">typename</span> CharType, <span class="keyword">typename</span> StringType = std::basic_<span class="keywordtype">string</span><CharType>></div>
|
||
<div class="line"><a name="l11259"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1output__string__adapter.html">11259</a></span> <span class="keyword">class </span><a class="code" href="classnlohmann_1_1detail_1_1output__string__adapter.html">output_string_adapter</a> : <span class="keyword">public</span> <a class="code" href="structnlohmann_1_1detail_1_1output__adapter__protocol.html">output_adapter_protocol</a><CharType></div>
|
||
<div class="line"><a name="l11260"></a><span class="lineno">11260</span> {</div>
|
||
<div class="line"><a name="l11261"></a><span class="lineno">11261</span>  <span class="keyword">public</span>:</div>
|
||
<div class="line"><a name="l11262"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1output__string__adapter.html#af3a49ecd0d23fe56ac21e13d8752abc7">11262</a></span>  <span class="keyword">explicit</span> <a class="code" href="classnlohmann_1_1detail_1_1output__string__adapter.html#af3a49ecd0d23fe56ac21e13d8752abc7">output_string_adapter</a>(StringType& s) noexcept</div>
|
||
<div class="line"><a name="l11263"></a><span class="lineno">11263</span>  : str(s)</div>
|
||
<div class="line"><a name="l11264"></a><span class="lineno">11264</span>  {}</div>
|
||
<div class="line"><a name="l11265"></a><span class="lineno">11265</span>  </div>
|
||
<div class="line"><a name="l11266"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1output__string__adapter.html#a2d76cc6c88ddbc196a63fcfcac9ee7d1">11266</a></span>  <span class="keywordtype">void</span> <a class="code" href="classnlohmann_1_1detail_1_1output__string__adapter.html#a2d76cc6c88ddbc196a63fcfcac9ee7d1">write_character</a>(CharType c)<span class="keyword"> override</span></div>
|
||
<div class="line"><a name="l11267"></a><span class="lineno">11267</span> <span class="keyword"> </span>{</div>
|
||
<div class="line"><a name="l11268"></a><span class="lineno">11268</span>  str.push_back(c);</div>
|
||
<div class="line"><a name="l11269"></a><span class="lineno">11269</span>  }</div>
|
||
<div class="line"><a name="l11270"></a><span class="lineno">11270</span>  </div>
|
||
<div class="line"><a name="l11271"></a><span class="lineno">11271</span>  <a class="code" href="json_8hpp.html#a5338981b5ad9027c9e54b1c5597f4344">JSON_HEDLEY_NON_NULL</a>(2)</div>
|
||
<div class="line"><a name="l11272"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1output__string__adapter.html#ab5ea4da075305d225dfd84ad997e8747">11272</a></span>  <a class="code" href="namespacenlohmann_1_1detail.html#a59fca69799f6b9e366710cb9043aa77d">void</a> write_characters(const CharType* s, <a class="code" href="namespacestd.html">std</a>::<span class="keywordtype">size_t</span> length)<span class="keyword"> override</span></div>
|
||
<div class="line"><a name="l11273"></a><span class="lineno">11273</span> <span class="keyword"> </span>{</div>
|
||
<div class="line"><a name="l11274"></a><span class="lineno">11274</span>  str.append(s, length);</div>
|
||
<div class="line"><a name="l11275"></a><span class="lineno">11275</span>  }</div>
|
||
<div class="line"><a name="l11276"></a><span class="lineno">11276</span>  </div>
|
||
<div class="line"><a name="l11277"></a><span class="lineno">11277</span>  <span class="keyword">private</span>:</div>
|
||
<div class="line"><a name="l11278"></a><span class="lineno">11278</span>  StringType& str;</div>
|
||
<div class="line"><a name="l11279"></a><span class="lineno">11279</span> };</div>
|
||
<div class="line"><a name="l11280"></a><span class="lineno">11280</span>  </div>
|
||
<div class="line"><a name="l11281"></a><span class="lineno">11281</span> <span class="keyword">template</span><<span class="keyword">typename</span> CharType, <span class="keyword">typename</span> StringType = std::basic_<span class="keywordtype">string</span><CharType>></div>
|
||
<div class="line"><a name="l11282"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1output__adapter.html">11282</a></span> <span class="keyword">class </span><a class="code" href="classnlohmann_1_1detail_1_1output__adapter.html">output_adapter</a></div>
|
||
<div class="line"><a name="l11283"></a><span class="lineno">11283</span> {</div>
|
||
<div class="line"><a name="l11284"></a><span class="lineno">11284</span>  <span class="keyword">public</span>:</div>
|
||
<div class="line"><a name="l11285"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1output__adapter.html#a05a30a77b568fd84676078d938cbd484">11285</a></span>  <a class="code" href="classnlohmann_1_1detail_1_1output__adapter.html#a05a30a77b568fd84676078d938cbd484">output_adapter</a>(std::vector<CharType>& vec)</div>
|
||
<div class="line"><a name="l11286"></a><span class="lineno">11286</span>  : oa(<a class="code" href="namespacestd.html">std</a>::make_shared<<a class="code" href="classnlohmann_1_1detail_1_1output__vector__adapter.html">output_vector_adapter</a><CharType>>(vec)) {}</div>
|
||
<div class="line"><a name="l11287"></a><span class="lineno">11287</span>  </div>
|
||
<div class="line"><a name="l11288"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1output__adapter.html#a43b3ba852e6a2c3f4d312543bb04c00d">11288</a></span>  <a class="code" href="classnlohmann_1_1detail_1_1output__adapter.html#a43b3ba852e6a2c3f4d312543bb04c00d">output_adapter</a>(std::basic_ostream<CharType>& s)</div>
|
||
<div class="line"><a name="l11289"></a><span class="lineno">11289</span>  : oa(<a class="code" href="namespacestd.html">std</a>::make_shared<<a class="code" href="classnlohmann_1_1detail_1_1output__stream__adapter.html">output_stream_adapter</a><CharType>>(s)) {}</div>
|
||
<div class="line"><a name="l11290"></a><span class="lineno">11290</span>  </div>
|
||
<div class="line"><a name="l11291"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1output__adapter.html#a6ad59d1ec534383b430cd7ef8a518539">11291</a></span>  <a class="code" href="classnlohmann_1_1detail_1_1output__adapter.html#a6ad59d1ec534383b430cd7ef8a518539">output_adapter</a>(StringType& s)</div>
|
||
<div class="line"><a name="l11292"></a><span class="lineno">11292</span>  : oa(<a class="code" href="namespacestd.html">std</a>::make_shared<<a class="code" href="classnlohmann_1_1detail_1_1output__string__adapter.html">output_string_adapter</a><CharType, StringType>>(s)) {}</div>
|
||
<div class="line"><a name="l11293"></a><span class="lineno">11293</span>  </div>
|
||
<div class="line"><a name="l11294"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1output__adapter.html#a5fdac7aec8ade2f4bb0b5df30550d90c">11294</a></span>  <span class="keyword">operator</span> <a class="code" href="namespacenlohmann_1_1detail.html#a9b680ddfb58f27eb53a67229447fc556">output_adapter_t<CharType></a>()</div>
|
||
<div class="line"><a name="l11295"></a><span class="lineno">11295</span>  {</div>
|
||
<div class="line"><a name="l11296"></a><span class="lineno">11296</span>  <span class="keywordflow">return</span> oa;</div>
|
||
<div class="line"><a name="l11297"></a><span class="lineno">11297</span>  }</div>
|
||
<div class="line"><a name="l11298"></a><span class="lineno">11298</span>  </div>
|
||
<div class="line"><a name="l11299"></a><span class="lineno">11299</span>  <span class="keyword">private</span>:</div>
|
||
<div class="line"><a name="l11300"></a><span class="lineno">11300</span>  <a class="code" href="namespacenlohmann_1_1detail.html#a9b680ddfb58f27eb53a67229447fc556">output_adapter_t<CharType></a> oa = <span class="keyword">nullptr</span>;</div>
|
||
<div class="line"><a name="l11301"></a><span class="lineno">11301</span> };</div>
|
||
<div class="line"><a name="l11302"></a><span class="lineno">11302</span> } <span class="comment">// namespace detail</span></div>
|
||
<div class="line"><a name="l11303"></a><span class="lineno">11303</span> } <span class="comment">// namespace nlohmann</span></div>
|
||
<div class="line"><a name="l11304"></a><span class="lineno">11304</span>  </div>
|
||
<div class="line"><a name="l11305"></a><span class="lineno">11305</span>  </div>
|
||
<div class="line"><a name="l11306"></a><span class="lineno">11306</span> <span class="keyword">namespace </span><a class="code" href="namespacenlohmann.html">nlohmann</a></div>
|
||
<div class="line"><a name="l11307"></a><span class="lineno">11307</span> {</div>
|
||
<div class="line"><a name="l11308"></a><span class="lineno">11308</span> <span class="keyword">namespace </span>detail</div>
|
||
<div class="line"><a name="l11309"></a><span class="lineno">11309</span> {</div>
|
||
<div class="line"><a name="l11311"></a><span class="lineno">11311</span> <span class="comment">// binary writer //</span></div>
|
||
<div class="line"><a name="l11313"></a><span class="lineno">11313</span> <span class="comment"></span> </div>
|
||
<div class="line"><a name="l11317"></a><span class="lineno">11317</span> <span class="keyword">template</span><<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> CharType></div>
|
||
<div class="line"><a name="l11318"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1binary__writer.html">11318</a></span> <span class="keyword">class </span><a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html">binary_writer</a></div>
|
||
<div class="line"><a name="l11319"></a><span class="lineno">11319</span> {</div>
|
||
<div class="line"><a name="l11320"></a><span class="lineno">11320</span>  <span class="keyword">using</span> string_t = <span class="keyword">typename</span> BasicJsonType::string_t;</div>
|
||
<div class="line"><a name="l11321"></a><span class="lineno">11321</span>  </div>
|
||
<div class="line"><a name="l11322"></a><span class="lineno">11322</span>  <span class="keyword">public</span>:</div>
|
||
<div class="line"><a name="l11328"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1binary__writer.html#a373289af95a946c19bb4a58a5df71a78">11328</a></span>  <span class="keyword">explicit</span> <a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#a373289af95a946c19bb4a58a5df71a78">binary_writer</a>(<a class="code" href="namespacenlohmann_1_1detail.html#a9b680ddfb58f27eb53a67229447fc556">output_adapter_t<CharType></a> adapter) : oa(adapter)</div>
|
||
<div class="line"><a name="l11329"></a><span class="lineno">11329</span>  {</div>
|
||
<div class="line"><a name="l11330"></a><span class="lineno">11330</span>  assert(oa);</div>
|
||
<div class="line"><a name="l11331"></a><span class="lineno">11331</span>  }</div>
|
||
<div class="line"><a name="l11332"></a><span class="lineno">11332</span>  </div>
|
||
<div class="line"><a name="l11337"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1binary__writer.html#a9ffc566db5219b473762462234b47db9">11337</a></span>  <span class="keywordtype">void</span> <a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#a9ffc566db5219b473762462234b47db9">write_bson</a>(<span class="keyword">const</span> BasicJsonType& j)</div>
|
||
<div class="line"><a name="l11338"></a><span class="lineno">11338</span>  {</div>
|
||
<div class="line"><a name="l11339"></a><span class="lineno">11339</span>  <span class="keywordflow">switch</span> (j.type())</div>
|
||
<div class="line"><a name="l11340"></a><span class="lineno">11340</span>  {</div>
|
||
<div class="line"><a name="l11341"></a><span class="lineno">11341</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>:</div>
|
||
<div class="line"><a name="l11342"></a><span class="lineno">11342</span>  {</div>
|
||
<div class="line"><a name="l11343"></a><span class="lineno">11343</span>  write_bson_object(*j.m_value.object);</div>
|
||
<div class="line"><a name="l11344"></a><span class="lineno">11344</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l11345"></a><span class="lineno">11345</span>  }</div>
|
||
<div class="line"><a name="l11346"></a><span class="lineno">11346</span>  </div>
|
||
<div class="line"><a name="l11347"></a><span class="lineno">11347</span>  <span class="keywordflow">default</span>:</div>
|
||
<div class="line"><a name="l11348"></a><span class="lineno">11348</span>  {</div>
|
||
<div class="line"><a name="l11349"></a><span class="lineno">11349</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(317, <span class="stringliteral">"to serialize to BSON, top-level type must be object, but is "</span> + std::string(j.type_name())));</div>
|
||
<div class="line"><a name="l11350"></a><span class="lineno">11350</span>  }</div>
|
||
<div class="line"><a name="l11351"></a><span class="lineno">11351</span>  }</div>
|
||
<div class="line"><a name="l11352"></a><span class="lineno">11352</span>  }</div>
|
||
<div class="line"><a name="l11353"></a><span class="lineno">11353</span>  </div>
|
||
<div class="line"><a name="l11357"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1binary__writer.html#aa0ab8d27fd88a33a2f801413ac4c7fbc">11357</a></span>  <span class="keywordtype">void</span> <a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#aa0ab8d27fd88a33a2f801413ac4c7fbc">write_cbor</a>(<span class="keyword">const</span> BasicJsonType& j)</div>
|
||
<div class="line"><a name="l11358"></a><span class="lineno">11358</span>  {</div>
|
||
<div class="line"><a name="l11359"></a><span class="lineno">11359</span>  <span class="keywordflow">switch</span> (j.type())</div>
|
||
<div class="line"><a name="l11360"></a><span class="lineno">11360</span>  {</div>
|
||
<div class="line"><a name="l11361"></a><span class="lineno">11361</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a37a6259cc0c1dae299a7866489dff0bd">value_t::null</a>:</div>
|
||
<div class="line"><a name="l11362"></a><span class="lineno">11362</span>  {</div>
|
||
<div class="line"><a name="l11363"></a><span class="lineno">11363</span>  oa->write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0xF6));</div>
|
||
<div class="line"><a name="l11364"></a><span class="lineno">11364</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l11365"></a><span class="lineno">11365</span>  }</div>
|
||
<div class="line"><a name="l11366"></a><span class="lineno">11366</span>  </div>
|
||
<div class="line"><a name="l11367"></a><span class="lineno">11367</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a84e2c64f38f78ba3ea5c905ab5a2da27">value_t::boolean</a>:</div>
|
||
<div class="line"><a name="l11368"></a><span class="lineno">11368</span>  {</div>
|
||
<div class="line"><a name="l11369"></a><span class="lineno">11369</span>  oa->write_character(j.m_value.boolean</div>
|
||
<div class="line"><a name="l11370"></a><span class="lineno">11370</span>  ? <a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0xF5)</div>
|
||
<div class="line"><a name="l11371"></a><span class="lineno">11371</span>  : <a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0xF4));</div>
|
||
<div class="line"><a name="l11372"></a><span class="lineno">11372</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l11373"></a><span class="lineno">11373</span>  }</div>
|
||
<div class="line"><a name="l11374"></a><span class="lineno">11374</span>  </div>
|
||
<div class="line"><a name="l11375"></a><span class="lineno">11375</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a5763da164f8659d94a56e29df64b4bcc">value_t::number_integer</a>:</div>
|
||
<div class="line"><a name="l11376"></a><span class="lineno">11376</span>  {</div>
|
||
<div class="line"><a name="l11377"></a><span class="lineno">11377</span>  <span class="keywordflow">if</span> (j.m_value.number_integer >= 0)</div>
|
||
<div class="line"><a name="l11378"></a><span class="lineno">11378</span>  {</div>
|
||
<div class="line"><a name="l11379"></a><span class="lineno">11379</span>  <span class="comment">// CBOR does not differentiate between positive signed</span></div>
|
||
<div class="line"><a name="l11380"></a><span class="lineno">11380</span>  <span class="comment">// integers and unsigned integers. Therefore, we used the</span></div>
|
||
<div class="line"><a name="l11381"></a><span class="lineno">11381</span>  <span class="comment">// code from the value_t::number_unsigned case here.</span></div>
|
||
<div class="line"><a name="l11382"></a><span class="lineno">11382</span>  <span class="keywordflow">if</span> (j.m_value.number_integer <= 0x17)</div>
|
||
<div class="line"><a name="l11383"></a><span class="lineno">11383</span>  {</div>
|
||
<div class="line"><a name="l11384"></a><span class="lineno">11384</span>  write_number(<span class="keyword">static_cast<</span>std::uint8_t<span class="keyword">></span>(j.m_value.number_integer));</div>
|
||
<div class="line"><a name="l11385"></a><span class="lineno">11385</span>  }</div>
|
||
<div class="line"><a name="l11386"></a><span class="lineno">11386</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (j.m_value.number_integer <= (std::numeric_limits<std::uint8_t>::max)())</div>
|
||
<div class="line"><a name="l11387"></a><span class="lineno">11387</span>  {</div>
|
||
<div class="line"><a name="l11388"></a><span class="lineno">11388</span>  oa->write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0x18));</div>
|
||
<div class="line"><a name="l11389"></a><span class="lineno">11389</span>  write_number(<span class="keyword">static_cast<</span>std::uint8_t<span class="keyword">></span>(j.m_value.number_integer));</div>
|
||
<div class="line"><a name="l11390"></a><span class="lineno">11390</span>  }</div>
|
||
<div class="line"><a name="l11391"></a><span class="lineno">11391</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (j.m_value.number_integer <= (std::numeric_limits<std::uint16_t>::max)())</div>
|
||
<div class="line"><a name="l11392"></a><span class="lineno">11392</span>  {</div>
|
||
<div class="line"><a name="l11393"></a><span class="lineno">11393</span>  oa->write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0x19));</div>
|
||
<div class="line"><a name="l11394"></a><span class="lineno">11394</span>  write_number(<span class="keyword">static_cast<</span>std::uint16_t<span class="keyword">></span>(j.m_value.number_integer));</div>
|
||
<div class="line"><a name="l11395"></a><span class="lineno">11395</span>  }</div>
|
||
<div class="line"><a name="l11396"></a><span class="lineno">11396</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (j.m_value.number_integer <= (std::numeric_limits<std::uint32_t>::max)())</div>
|
||
<div class="line"><a name="l11397"></a><span class="lineno">11397</span>  {</div>
|
||
<div class="line"><a name="l11398"></a><span class="lineno">11398</span>  oa->write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0x1A));</div>
|
||
<div class="line"><a name="l11399"></a><span class="lineno">11399</span>  write_number(<span class="keyword">static_cast<</span>std::uint32_t<span class="keyword">></span>(j.m_value.number_integer));</div>
|
||
<div class="line"><a name="l11400"></a><span class="lineno">11400</span>  }</div>
|
||
<div class="line"><a name="l11401"></a><span class="lineno">11401</span>  <span class="keywordflow">else</span></div>
|
||
<div class="line"><a name="l11402"></a><span class="lineno">11402</span>  {</div>
|
||
<div class="line"><a name="l11403"></a><span class="lineno">11403</span>  oa->write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0x1B));</div>
|
||
<div class="line"><a name="l11404"></a><span class="lineno">11404</span>  write_number(<span class="keyword">static_cast<</span>std::uint64_t<span class="keyword">></span>(j.m_value.number_integer));</div>
|
||
<div class="line"><a name="l11405"></a><span class="lineno">11405</span>  }</div>
|
||
<div class="line"><a name="l11406"></a><span class="lineno">11406</span>  }</div>
|
||
<div class="line"><a name="l11407"></a><span class="lineno">11407</span>  <span class="keywordflow">else</span></div>
|
||
<div class="line"><a name="l11408"></a><span class="lineno">11408</span>  {</div>
|
||
<div class="line"><a name="l11409"></a><span class="lineno">11409</span>  <span class="comment">// The conversions below encode the sign in the first</span></div>
|
||
<div class="line"><a name="l11410"></a><span class="lineno">11410</span>  <span class="comment">// byte, and the value is converted to a positive number.</span></div>
|
||
<div class="line"><a name="l11411"></a><span class="lineno">11411</span>  <span class="keyword">const</span> <span class="keyword">auto</span> positive_number = -1 - j.m_value.number_integer;</div>
|
||
<div class="line"><a name="l11412"></a><span class="lineno">11412</span>  <span class="keywordflow">if</span> (j.m_value.number_integer >= -24)</div>
|
||
<div class="line"><a name="l11413"></a><span class="lineno">11413</span>  {</div>
|
||
<div class="line"><a name="l11414"></a><span class="lineno">11414</span>  write_number(<span class="keyword">static_cast<</span>std::uint8_t<span class="keyword">></span>(0x20 + positive_number));</div>
|
||
<div class="line"><a name="l11415"></a><span class="lineno">11415</span>  }</div>
|
||
<div class="line"><a name="l11416"></a><span class="lineno">11416</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (positive_number <= (std::numeric_limits<std::uint8_t>::max)())</div>
|
||
<div class="line"><a name="l11417"></a><span class="lineno">11417</span>  {</div>
|
||
<div class="line"><a name="l11418"></a><span class="lineno">11418</span>  oa->write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0x38));</div>
|
||
<div class="line"><a name="l11419"></a><span class="lineno">11419</span>  write_number(<span class="keyword">static_cast<</span>std::uint8_t<span class="keyword">></span>(positive_number));</div>
|
||
<div class="line"><a name="l11420"></a><span class="lineno">11420</span>  }</div>
|
||
<div class="line"><a name="l11421"></a><span class="lineno">11421</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (positive_number <= (std::numeric_limits<std::uint16_t>::max)())</div>
|
||
<div class="line"><a name="l11422"></a><span class="lineno">11422</span>  {</div>
|
||
<div class="line"><a name="l11423"></a><span class="lineno">11423</span>  oa->write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0x39));</div>
|
||
<div class="line"><a name="l11424"></a><span class="lineno">11424</span>  write_number(<span class="keyword">static_cast<</span>std::uint16_t<span class="keyword">></span>(positive_number));</div>
|
||
<div class="line"><a name="l11425"></a><span class="lineno">11425</span>  }</div>
|
||
<div class="line"><a name="l11426"></a><span class="lineno">11426</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (positive_number <= (std::numeric_limits<std::uint32_t>::max)())</div>
|
||
<div class="line"><a name="l11427"></a><span class="lineno">11427</span>  {</div>
|
||
<div class="line"><a name="l11428"></a><span class="lineno">11428</span>  oa->write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0x3A));</div>
|
||
<div class="line"><a name="l11429"></a><span class="lineno">11429</span>  write_number(<span class="keyword">static_cast<</span>std::uint32_t<span class="keyword">></span>(positive_number));</div>
|
||
<div class="line"><a name="l11430"></a><span class="lineno">11430</span>  }</div>
|
||
<div class="line"><a name="l11431"></a><span class="lineno">11431</span>  <span class="keywordflow">else</span></div>
|
||
<div class="line"><a name="l11432"></a><span class="lineno">11432</span>  {</div>
|
||
<div class="line"><a name="l11433"></a><span class="lineno">11433</span>  oa->write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0x3B));</div>
|
||
<div class="line"><a name="l11434"></a><span class="lineno">11434</span>  write_number(<span class="keyword">static_cast<</span>std::uint64_t<span class="keyword">></span>(positive_number));</div>
|
||
<div class="line"><a name="l11435"></a><span class="lineno">11435</span>  }</div>
|
||
<div class="line"><a name="l11436"></a><span class="lineno">11436</span>  }</div>
|
||
<div class="line"><a name="l11437"></a><span class="lineno">11437</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l11438"></a><span class="lineno">11438</span>  }</div>
|
||
<div class="line"><a name="l11439"></a><span class="lineno">11439</span>  </div>
|
||
<div class="line"><a name="l11440"></a><span class="lineno">11440</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985adce7cc8ec29055c4158828921f2f265e">value_t::number_unsigned</a>:</div>
|
||
<div class="line"><a name="l11441"></a><span class="lineno">11441</span>  {</div>
|
||
<div class="line"><a name="l11442"></a><span class="lineno">11442</span>  <span class="keywordflow">if</span> (j.m_value.number_unsigned <= 0x17)</div>
|
||
<div class="line"><a name="l11443"></a><span class="lineno">11443</span>  {</div>
|
||
<div class="line"><a name="l11444"></a><span class="lineno">11444</span>  write_number(<span class="keyword">static_cast<</span>std::uint8_t<span class="keyword">></span>(j.m_value.number_unsigned));</div>
|
||
<div class="line"><a name="l11445"></a><span class="lineno">11445</span>  }</div>
|
||
<div class="line"><a name="l11446"></a><span class="lineno">11446</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (j.m_value.number_unsigned <= (std::numeric_limits<std::uint8_t>::max)())</div>
|
||
<div class="line"><a name="l11447"></a><span class="lineno">11447</span>  {</div>
|
||
<div class="line"><a name="l11448"></a><span class="lineno">11448</span>  oa->write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0x18));</div>
|
||
<div class="line"><a name="l11449"></a><span class="lineno">11449</span>  write_number(<span class="keyword">static_cast<</span>std::uint8_t<span class="keyword">></span>(j.m_value.number_unsigned));</div>
|
||
<div class="line"><a name="l11450"></a><span class="lineno">11450</span>  }</div>
|
||
<div class="line"><a name="l11451"></a><span class="lineno">11451</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (j.m_value.number_unsigned <= (std::numeric_limits<std::uint16_t>::max)())</div>
|
||
<div class="line"><a name="l11452"></a><span class="lineno">11452</span>  {</div>
|
||
<div class="line"><a name="l11453"></a><span class="lineno">11453</span>  oa->write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0x19));</div>
|
||
<div class="line"><a name="l11454"></a><span class="lineno">11454</span>  write_number(<span class="keyword">static_cast<</span>std::uint16_t<span class="keyword">></span>(j.m_value.number_unsigned));</div>
|
||
<div class="line"><a name="l11455"></a><span class="lineno">11455</span>  }</div>
|
||
<div class="line"><a name="l11456"></a><span class="lineno">11456</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (j.m_value.number_unsigned <= (std::numeric_limits<std::uint32_t>::max)())</div>
|
||
<div class="line"><a name="l11457"></a><span class="lineno">11457</span>  {</div>
|
||
<div class="line"><a name="l11458"></a><span class="lineno">11458</span>  oa->write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0x1A));</div>
|
||
<div class="line"><a name="l11459"></a><span class="lineno">11459</span>  write_number(<span class="keyword">static_cast<</span>std::uint32_t<span class="keyword">></span>(j.m_value.number_unsigned));</div>
|
||
<div class="line"><a name="l11460"></a><span class="lineno">11460</span>  }</div>
|
||
<div class="line"><a name="l11461"></a><span class="lineno">11461</span>  <span class="keywordflow">else</span></div>
|
||
<div class="line"><a name="l11462"></a><span class="lineno">11462</span>  {</div>
|
||
<div class="line"><a name="l11463"></a><span class="lineno">11463</span>  oa->write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0x1B));</div>
|
||
<div class="line"><a name="l11464"></a><span class="lineno">11464</span>  write_number(<span class="keyword">static_cast<</span>std::uint64_t<span class="keyword">></span>(j.m_value.number_unsigned));</div>
|
||
<div class="line"><a name="l11465"></a><span class="lineno">11465</span>  }</div>
|
||
<div class="line"><a name="l11466"></a><span class="lineno">11466</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l11467"></a><span class="lineno">11467</span>  }</div>
|
||
<div class="line"><a name="l11468"></a><span class="lineno">11468</span>  </div>
|
||
<div class="line"><a name="l11469"></a><span class="lineno">11469</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ad9966ecb59667235a57b4b999a649eef">value_t::number_float</a>:</div>
|
||
<div class="line"><a name="l11470"></a><span class="lineno">11470</span>  {</div>
|
||
<div class="line"><a name="l11471"></a><span class="lineno">11471</span>  oa->write_character(get_cbor_float_prefix(j.m_value.number_float));</div>
|
||
<div class="line"><a name="l11472"></a><span class="lineno">11472</span>  write_number(j.m_value.number_float);</div>
|
||
<div class="line"><a name="l11473"></a><span class="lineno">11473</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l11474"></a><span class="lineno">11474</span>  }</div>
|
||
<div class="line"><a name="l11475"></a><span class="lineno">11475</span>  </div>
|
||
<div class="line"><a name="l11476"></a><span class="lineno">11476</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ab45cffe084dd3d20d928bee85e7b0f21">value_t::string</a>:</div>
|
||
<div class="line"><a name="l11477"></a><span class="lineno">11477</span>  {</div>
|
||
<div class="line"><a name="l11478"></a><span class="lineno">11478</span>  <span class="comment">// step 1: write control byte and the string length</span></div>
|
||
<div class="line"><a name="l11479"></a><span class="lineno">11479</span>  <span class="keyword">const</span> <span class="keyword">auto</span> N = j.m_value.string->size();</div>
|
||
<div class="line"><a name="l11480"></a><span class="lineno">11480</span>  <span class="keywordflow">if</span> (N <= 0x17)</div>
|
||
<div class="line"><a name="l11481"></a><span class="lineno">11481</span>  {</div>
|
||
<div class="line"><a name="l11482"></a><span class="lineno">11482</span>  write_number(<span class="keyword">static_cast<</span>std::uint8_t<span class="keyword">></span>(0x60 + N));</div>
|
||
<div class="line"><a name="l11483"></a><span class="lineno">11483</span>  }</div>
|
||
<div class="line"><a name="l11484"></a><span class="lineno">11484</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (N <= (std::numeric_limits<std::uint8_t>::max)())</div>
|
||
<div class="line"><a name="l11485"></a><span class="lineno">11485</span>  {</div>
|
||
<div class="line"><a name="l11486"></a><span class="lineno">11486</span>  oa->write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0x78));</div>
|
||
<div class="line"><a name="l11487"></a><span class="lineno">11487</span>  write_number(<span class="keyword">static_cast<</span>std::uint8_t<span class="keyword">></span>(N));</div>
|
||
<div class="line"><a name="l11488"></a><span class="lineno">11488</span>  }</div>
|
||
<div class="line"><a name="l11489"></a><span class="lineno">11489</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (N <= (std::numeric_limits<std::uint16_t>::max)())</div>
|
||
<div class="line"><a name="l11490"></a><span class="lineno">11490</span>  {</div>
|
||
<div class="line"><a name="l11491"></a><span class="lineno">11491</span>  oa->write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0x79));</div>
|
||
<div class="line"><a name="l11492"></a><span class="lineno">11492</span>  write_number(<span class="keyword">static_cast<</span>std::uint16_t<span class="keyword">></span>(N));</div>
|
||
<div class="line"><a name="l11493"></a><span class="lineno">11493</span>  }</div>
|
||
<div class="line"><a name="l11494"></a><span class="lineno">11494</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (N <= (std::numeric_limits<std::uint32_t>::max)())</div>
|
||
<div class="line"><a name="l11495"></a><span class="lineno">11495</span>  {</div>
|
||
<div class="line"><a name="l11496"></a><span class="lineno">11496</span>  oa->write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0x7A));</div>
|
||
<div class="line"><a name="l11497"></a><span class="lineno">11497</span>  write_number(<span class="keyword">static_cast<</span>std::uint32_t<span class="keyword">></span>(N));</div>
|
||
<div class="line"><a name="l11498"></a><span class="lineno">11498</span>  }</div>
|
||
<div class="line"><a name="l11499"></a><span class="lineno">11499</span>  <span class="comment">// LCOV_EXCL_START</span></div>
|
||
<div class="line"><a name="l11500"></a><span class="lineno">11500</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (N <= (std::numeric_limits<std::uint64_t>::max)())</div>
|
||
<div class="line"><a name="l11501"></a><span class="lineno">11501</span>  {</div>
|
||
<div class="line"><a name="l11502"></a><span class="lineno">11502</span>  oa->write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0x7B));</div>
|
||
<div class="line"><a name="l11503"></a><span class="lineno">11503</span>  write_number(<span class="keyword">static_cast<</span>std::uint64_t<span class="keyword">></span>(N));</div>
|
||
<div class="line"><a name="l11504"></a><span class="lineno">11504</span>  }</div>
|
||
<div class="line"><a name="l11505"></a><span class="lineno">11505</span>  <span class="comment">// LCOV_EXCL_STOP</span></div>
|
||
<div class="line"><a name="l11506"></a><span class="lineno">11506</span>  </div>
|
||
<div class="line"><a name="l11507"></a><span class="lineno">11507</span>  <span class="comment">// step 2: write the string</span></div>
|
||
<div class="line"><a name="l11508"></a><span class="lineno">11508</span>  oa->write_characters(</div>
|
||
<div class="line"><a name="l11509"></a><span class="lineno">11509</span>  <span class="keyword">reinterpret_cast<</span><span class="keyword">const </span>CharType*<span class="keyword">></span>(j.m_value.string->c_str()),</div>
|
||
<div class="line"><a name="l11510"></a><span class="lineno">11510</span>  j.m_value.string->size());</div>
|
||
<div class="line"><a name="l11511"></a><span class="lineno">11511</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l11512"></a><span class="lineno">11512</span>  }</div>
|
||
<div class="line"><a name="l11513"></a><span class="lineno">11513</span>  </div>
|
||
<div class="line"><a name="l11514"></a><span class="lineno">11514</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>:</div>
|
||
<div class="line"><a name="l11515"></a><span class="lineno">11515</span>  {</div>
|
||
<div class="line"><a name="l11516"></a><span class="lineno">11516</span>  <span class="comment">// step 1: write control byte and the array size</span></div>
|
||
<div class="line"><a name="l11517"></a><span class="lineno">11517</span>  <span class="keyword">const</span> <span class="keyword">auto</span> N = j.m_value.array->size();</div>
|
||
<div class="line"><a name="l11518"></a><span class="lineno">11518</span>  <span class="keywordflow">if</span> (N <= 0x17)</div>
|
||
<div class="line"><a name="l11519"></a><span class="lineno">11519</span>  {</div>
|
||
<div class="line"><a name="l11520"></a><span class="lineno">11520</span>  write_number(<span class="keyword">static_cast<</span>std::uint8_t<span class="keyword">></span>(0x80 + N));</div>
|
||
<div class="line"><a name="l11521"></a><span class="lineno">11521</span>  }</div>
|
||
<div class="line"><a name="l11522"></a><span class="lineno">11522</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (N <= (std::numeric_limits<std::uint8_t>::max)())</div>
|
||
<div class="line"><a name="l11523"></a><span class="lineno">11523</span>  {</div>
|
||
<div class="line"><a name="l11524"></a><span class="lineno">11524</span>  oa->write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0x98));</div>
|
||
<div class="line"><a name="l11525"></a><span class="lineno">11525</span>  write_number(<span class="keyword">static_cast<</span>std::uint8_t<span class="keyword">></span>(N));</div>
|
||
<div class="line"><a name="l11526"></a><span class="lineno">11526</span>  }</div>
|
||
<div class="line"><a name="l11527"></a><span class="lineno">11527</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (N <= (std::numeric_limits<std::uint16_t>::max)())</div>
|
||
<div class="line"><a name="l11528"></a><span class="lineno">11528</span>  {</div>
|
||
<div class="line"><a name="l11529"></a><span class="lineno">11529</span>  oa->write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0x99));</div>
|
||
<div class="line"><a name="l11530"></a><span class="lineno">11530</span>  write_number(<span class="keyword">static_cast<</span>std::uint16_t<span class="keyword">></span>(N));</div>
|
||
<div class="line"><a name="l11531"></a><span class="lineno">11531</span>  }</div>
|
||
<div class="line"><a name="l11532"></a><span class="lineno">11532</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (N <= (std::numeric_limits<std::uint32_t>::max)())</div>
|
||
<div class="line"><a name="l11533"></a><span class="lineno">11533</span>  {</div>
|
||
<div class="line"><a name="l11534"></a><span class="lineno">11534</span>  oa->write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0x9A));</div>
|
||
<div class="line"><a name="l11535"></a><span class="lineno">11535</span>  write_number(<span class="keyword">static_cast<</span>std::uint32_t<span class="keyword">></span>(N));</div>
|
||
<div class="line"><a name="l11536"></a><span class="lineno">11536</span>  }</div>
|
||
<div class="line"><a name="l11537"></a><span class="lineno">11537</span>  <span class="comment">// LCOV_EXCL_START</span></div>
|
||
<div class="line"><a name="l11538"></a><span class="lineno">11538</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (N <= (std::numeric_limits<std::uint64_t>::max)())</div>
|
||
<div class="line"><a name="l11539"></a><span class="lineno">11539</span>  {</div>
|
||
<div class="line"><a name="l11540"></a><span class="lineno">11540</span>  oa->write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0x9B));</div>
|
||
<div class="line"><a name="l11541"></a><span class="lineno">11541</span>  write_number(<span class="keyword">static_cast<</span>std::uint64_t<span class="keyword">></span>(N));</div>
|
||
<div class="line"><a name="l11542"></a><span class="lineno">11542</span>  }</div>
|
||
<div class="line"><a name="l11543"></a><span class="lineno">11543</span>  <span class="comment">// LCOV_EXCL_STOP</span></div>
|
||
<div class="line"><a name="l11544"></a><span class="lineno">11544</span>  </div>
|
||
<div class="line"><a name="l11545"></a><span class="lineno">11545</span>  <span class="comment">// step 2: write each element</span></div>
|
||
<div class="line"><a name="l11546"></a><span class="lineno">11546</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>& el : *j.m_value.array)</div>
|
||
<div class="line"><a name="l11547"></a><span class="lineno">11547</span>  {</div>
|
||
<div class="line"><a name="l11548"></a><span class="lineno">11548</span>  <a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#aa0ab8d27fd88a33a2f801413ac4c7fbc">write_cbor</a>(el);</div>
|
||
<div class="line"><a name="l11549"></a><span class="lineno">11549</span>  }</div>
|
||
<div class="line"><a name="l11550"></a><span class="lineno">11550</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l11551"></a><span class="lineno">11551</span>  }</div>
|
||
<div class="line"><a name="l11552"></a><span class="lineno">11552</span>  </div>
|
||
<div class="line"><a name="l11553"></a><span class="lineno">11553</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>:</div>
|
||
<div class="line"><a name="l11554"></a><span class="lineno">11554</span>  {</div>
|
||
<div class="line"><a name="l11555"></a><span class="lineno">11555</span>  <span class="comment">// step 1: write control byte and the object size</span></div>
|
||
<div class="line"><a name="l11556"></a><span class="lineno">11556</span>  <span class="keyword">const</span> <span class="keyword">auto</span> N = j.m_value.object->size();</div>
|
||
<div class="line"><a name="l11557"></a><span class="lineno">11557</span>  <span class="keywordflow">if</span> (N <= 0x17)</div>
|
||
<div class="line"><a name="l11558"></a><span class="lineno">11558</span>  {</div>
|
||
<div class="line"><a name="l11559"></a><span class="lineno">11559</span>  write_number(<span class="keyword">static_cast<</span>std::uint8_t<span class="keyword">></span>(0xA0 + N));</div>
|
||
<div class="line"><a name="l11560"></a><span class="lineno">11560</span>  }</div>
|
||
<div class="line"><a name="l11561"></a><span class="lineno">11561</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (N <= (std::numeric_limits<std::uint8_t>::max)())</div>
|
||
<div class="line"><a name="l11562"></a><span class="lineno">11562</span>  {</div>
|
||
<div class="line"><a name="l11563"></a><span class="lineno">11563</span>  oa->write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0xB8));</div>
|
||
<div class="line"><a name="l11564"></a><span class="lineno">11564</span>  write_number(<span class="keyword">static_cast<</span>std::uint8_t<span class="keyword">></span>(N));</div>
|
||
<div class="line"><a name="l11565"></a><span class="lineno">11565</span>  }</div>
|
||
<div class="line"><a name="l11566"></a><span class="lineno">11566</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (N <= (std::numeric_limits<std::uint16_t>::max)())</div>
|
||
<div class="line"><a name="l11567"></a><span class="lineno">11567</span>  {</div>
|
||
<div class="line"><a name="l11568"></a><span class="lineno">11568</span>  oa->write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0xB9));</div>
|
||
<div class="line"><a name="l11569"></a><span class="lineno">11569</span>  write_number(<span class="keyword">static_cast<</span>std::uint16_t<span class="keyword">></span>(N));</div>
|
||
<div class="line"><a name="l11570"></a><span class="lineno">11570</span>  }</div>
|
||
<div class="line"><a name="l11571"></a><span class="lineno">11571</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (N <= (std::numeric_limits<std::uint32_t>::max)())</div>
|
||
<div class="line"><a name="l11572"></a><span class="lineno">11572</span>  {</div>
|
||
<div class="line"><a name="l11573"></a><span class="lineno">11573</span>  oa->write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0xBA));</div>
|
||
<div class="line"><a name="l11574"></a><span class="lineno">11574</span>  write_number(<span class="keyword">static_cast<</span>std::uint32_t<span class="keyword">></span>(N));</div>
|
||
<div class="line"><a name="l11575"></a><span class="lineno">11575</span>  }</div>
|
||
<div class="line"><a name="l11576"></a><span class="lineno">11576</span>  <span class="comment">// LCOV_EXCL_START</span></div>
|
||
<div class="line"><a name="l11577"></a><span class="lineno">11577</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (N <= (std::numeric_limits<std::uint64_t>::max)())</div>
|
||
<div class="line"><a name="l11578"></a><span class="lineno">11578</span>  {</div>
|
||
<div class="line"><a name="l11579"></a><span class="lineno">11579</span>  oa->write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0xBB));</div>
|
||
<div class="line"><a name="l11580"></a><span class="lineno">11580</span>  write_number(<span class="keyword">static_cast<</span>std::uint64_t<span class="keyword">></span>(N));</div>
|
||
<div class="line"><a name="l11581"></a><span class="lineno">11581</span>  }</div>
|
||
<div class="line"><a name="l11582"></a><span class="lineno">11582</span>  <span class="comment">// LCOV_EXCL_STOP</span></div>
|
||
<div class="line"><a name="l11583"></a><span class="lineno">11583</span>  </div>
|
||
<div class="line"><a name="l11584"></a><span class="lineno">11584</span>  <span class="comment">// step 2: write each element</span></div>
|
||
<div class="line"><a name="l11585"></a><span class="lineno">11585</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>& el : *j.m_value.object)</div>
|
||
<div class="line"><a name="l11586"></a><span class="lineno">11586</span>  {</div>
|
||
<div class="line"><a name="l11587"></a><span class="lineno">11587</span>  <a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#aa0ab8d27fd88a33a2f801413ac4c7fbc">write_cbor</a>(el.first);</div>
|
||
<div class="line"><a name="l11588"></a><span class="lineno">11588</span>  <a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#aa0ab8d27fd88a33a2f801413ac4c7fbc">write_cbor</a>(el.second);</div>
|
||
<div class="line"><a name="l11589"></a><span class="lineno">11589</span>  }</div>
|
||
<div class="line"><a name="l11590"></a><span class="lineno">11590</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l11591"></a><span class="lineno">11591</span>  }</div>
|
||
<div class="line"><a name="l11592"></a><span class="lineno">11592</span>  </div>
|
||
<div class="line"><a name="l11593"></a><span class="lineno">11593</span>  <span class="keywordflow">default</span>:</div>
|
||
<div class="line"><a name="l11594"></a><span class="lineno">11594</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l11595"></a><span class="lineno">11595</span>  }</div>
|
||
<div class="line"><a name="l11596"></a><span class="lineno">11596</span>  }</div>
|
||
<div class="line"><a name="l11597"></a><span class="lineno">11597</span>  </div>
|
||
<div class="line"><a name="l11601"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1binary__writer.html#ae4e0852b64102ce4b07d99f08f828b7c">11601</a></span>  <span class="keywordtype">void</span> <a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ae4e0852b64102ce4b07d99f08f828b7c">write_msgpack</a>(<span class="keyword">const</span> BasicJsonType& j)</div>
|
||
<div class="line"><a name="l11602"></a><span class="lineno">11602</span>  {</div>
|
||
<div class="line"><a name="l11603"></a><span class="lineno">11603</span>  <span class="keywordflow">switch</span> (j.type())</div>
|
||
<div class="line"><a name="l11604"></a><span class="lineno">11604</span>  {</div>
|
||
<div class="line"><a name="l11605"></a><span class="lineno">11605</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a37a6259cc0c1dae299a7866489dff0bd">value_t::null</a>: <span class="comment">// nil</span></div>
|
||
<div class="line"><a name="l11606"></a><span class="lineno">11606</span>  {</div>
|
||
<div class="line"><a name="l11607"></a><span class="lineno">11607</span>  oa->write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0xC0));</div>
|
||
<div class="line"><a name="l11608"></a><span class="lineno">11608</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l11609"></a><span class="lineno">11609</span>  }</div>
|
||
<div class="line"><a name="l11610"></a><span class="lineno">11610</span>  </div>
|
||
<div class="line"><a name="l11611"></a><span class="lineno">11611</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a84e2c64f38f78ba3ea5c905ab5a2da27">value_t::boolean</a>: <span class="comment">// true and false</span></div>
|
||
<div class="line"><a name="l11612"></a><span class="lineno">11612</span>  {</div>
|
||
<div class="line"><a name="l11613"></a><span class="lineno">11613</span>  oa->write_character(j.m_value.boolean</div>
|
||
<div class="line"><a name="l11614"></a><span class="lineno">11614</span>  ? <a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0xC3)</div>
|
||
<div class="line"><a name="l11615"></a><span class="lineno">11615</span>  : <a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0xC2));</div>
|
||
<div class="line"><a name="l11616"></a><span class="lineno">11616</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l11617"></a><span class="lineno">11617</span>  }</div>
|
||
<div class="line"><a name="l11618"></a><span class="lineno">11618</span>  </div>
|
||
<div class="line"><a name="l11619"></a><span class="lineno">11619</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a5763da164f8659d94a56e29df64b4bcc">value_t::number_integer</a>:</div>
|
||
<div class="line"><a name="l11620"></a><span class="lineno">11620</span>  {</div>
|
||
<div class="line"><a name="l11621"></a><span class="lineno">11621</span>  <span class="keywordflow">if</span> (j.m_value.number_integer >= 0)</div>
|
||
<div class="line"><a name="l11622"></a><span class="lineno">11622</span>  {</div>
|
||
<div class="line"><a name="l11623"></a><span class="lineno">11623</span>  <span class="comment">// MessagePack does not differentiate between positive</span></div>
|
||
<div class="line"><a name="l11624"></a><span class="lineno">11624</span>  <span class="comment">// signed integers and unsigned integers. Therefore, we used</span></div>
|
||
<div class="line"><a name="l11625"></a><span class="lineno">11625</span>  <span class="comment">// the code from the value_t::number_unsigned case here.</span></div>
|
||
<div class="line"><a name="l11626"></a><span class="lineno">11626</span>  <span class="keywordflow">if</span> (j.m_value.number_unsigned < 128)</div>
|
||
<div class="line"><a name="l11627"></a><span class="lineno">11627</span>  {</div>
|
||
<div class="line"><a name="l11628"></a><span class="lineno">11628</span>  <span class="comment">// positive fixnum</span></div>
|
||
<div class="line"><a name="l11629"></a><span class="lineno">11629</span>  write_number(<span class="keyword">static_cast<</span>std::uint8_t<span class="keyword">></span>(j.m_value.number_integer));</div>
|
||
<div class="line"><a name="l11630"></a><span class="lineno">11630</span>  }</div>
|
||
<div class="line"><a name="l11631"></a><span class="lineno">11631</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (j.m_value.number_unsigned <= (std::numeric_limits<std::uint8_t>::max)())</div>
|
||
<div class="line"><a name="l11632"></a><span class="lineno">11632</span>  {</div>
|
||
<div class="line"><a name="l11633"></a><span class="lineno">11633</span>  <span class="comment">// uint 8</span></div>
|
||
<div class="line"><a name="l11634"></a><span class="lineno">11634</span>  oa->write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0xCC));</div>
|
||
<div class="line"><a name="l11635"></a><span class="lineno">11635</span>  write_number(<span class="keyword">static_cast<</span>std::uint8_t<span class="keyword">></span>(j.m_value.number_integer));</div>
|
||
<div class="line"><a name="l11636"></a><span class="lineno">11636</span>  }</div>
|
||
<div class="line"><a name="l11637"></a><span class="lineno">11637</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (j.m_value.number_unsigned <= (std::numeric_limits<std::uint16_t>::max)())</div>
|
||
<div class="line"><a name="l11638"></a><span class="lineno">11638</span>  {</div>
|
||
<div class="line"><a name="l11639"></a><span class="lineno">11639</span>  <span class="comment">// uint 16</span></div>
|
||
<div class="line"><a name="l11640"></a><span class="lineno">11640</span>  oa->write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0xCD));</div>
|
||
<div class="line"><a name="l11641"></a><span class="lineno">11641</span>  write_number(<span class="keyword">static_cast<</span>std::uint16_t<span class="keyword">></span>(j.m_value.number_integer));</div>
|
||
<div class="line"><a name="l11642"></a><span class="lineno">11642</span>  }</div>
|
||
<div class="line"><a name="l11643"></a><span class="lineno">11643</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (j.m_value.number_unsigned <= (std::numeric_limits<std::uint32_t>::max)())</div>
|
||
<div class="line"><a name="l11644"></a><span class="lineno">11644</span>  {</div>
|
||
<div class="line"><a name="l11645"></a><span class="lineno">11645</span>  <span class="comment">// uint 32</span></div>
|
||
<div class="line"><a name="l11646"></a><span class="lineno">11646</span>  oa->write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0xCE));</div>
|
||
<div class="line"><a name="l11647"></a><span class="lineno">11647</span>  write_number(<span class="keyword">static_cast<</span>std::uint32_t<span class="keyword">></span>(j.m_value.number_integer));</div>
|
||
<div class="line"><a name="l11648"></a><span class="lineno">11648</span>  }</div>
|
||
<div class="line"><a name="l11649"></a><span class="lineno">11649</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (j.m_value.number_unsigned <= (std::numeric_limits<std::uint64_t>::max)())</div>
|
||
<div class="line"><a name="l11650"></a><span class="lineno">11650</span>  {</div>
|
||
<div class="line"><a name="l11651"></a><span class="lineno">11651</span>  <span class="comment">// uint 64</span></div>
|
||
<div class="line"><a name="l11652"></a><span class="lineno">11652</span>  oa->write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0xCF));</div>
|
||
<div class="line"><a name="l11653"></a><span class="lineno">11653</span>  write_number(<span class="keyword">static_cast<</span>std::uint64_t<span class="keyword">></span>(j.m_value.number_integer));</div>
|
||
<div class="line"><a name="l11654"></a><span class="lineno">11654</span>  }</div>
|
||
<div class="line"><a name="l11655"></a><span class="lineno">11655</span>  }</div>
|
||
<div class="line"><a name="l11656"></a><span class="lineno">11656</span>  <span class="keywordflow">else</span></div>
|
||
<div class="line"><a name="l11657"></a><span class="lineno">11657</span>  {</div>
|
||
<div class="line"><a name="l11658"></a><span class="lineno">11658</span>  <span class="keywordflow">if</span> (j.m_value.number_integer >= -32)</div>
|
||
<div class="line"><a name="l11659"></a><span class="lineno">11659</span>  {</div>
|
||
<div class="line"><a name="l11660"></a><span class="lineno">11660</span>  <span class="comment">// negative fixnum</span></div>
|
||
<div class="line"><a name="l11661"></a><span class="lineno">11661</span>  write_number(<span class="keyword">static_cast<</span>std::int8_t<span class="keyword">></span>(j.m_value.number_integer));</div>
|
||
<div class="line"><a name="l11662"></a><span class="lineno">11662</span>  }</div>
|
||
<div class="line"><a name="l11663"></a><span class="lineno">11663</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (j.m_value.number_integer >= (std::numeric_limits<std::int8_t>::min)() and</div>
|
||
<div class="line"><a name="l11664"></a><span class="lineno">11664</span>  j.m_value.number_integer <= (std::numeric_limits<std::int8_t>::max)())</div>
|
||
<div class="line"><a name="l11665"></a><span class="lineno">11665</span>  {</div>
|
||
<div class="line"><a name="l11666"></a><span class="lineno">11666</span>  <span class="comment">// int 8</span></div>
|
||
<div class="line"><a name="l11667"></a><span class="lineno">11667</span>  oa->write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0xD0));</div>
|
||
<div class="line"><a name="l11668"></a><span class="lineno">11668</span>  write_number(<span class="keyword">static_cast<</span>std::int8_t<span class="keyword">></span>(j.m_value.number_integer));</div>
|
||
<div class="line"><a name="l11669"></a><span class="lineno">11669</span>  }</div>
|
||
<div class="line"><a name="l11670"></a><span class="lineno">11670</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (j.m_value.number_integer >= (std::numeric_limits<std::int16_t>::min)() and</div>
|
||
<div class="line"><a name="l11671"></a><span class="lineno">11671</span>  j.m_value.number_integer <= (std::numeric_limits<std::int16_t>::max)())</div>
|
||
<div class="line"><a name="l11672"></a><span class="lineno">11672</span>  {</div>
|
||
<div class="line"><a name="l11673"></a><span class="lineno">11673</span>  <span class="comment">// int 16</span></div>
|
||
<div class="line"><a name="l11674"></a><span class="lineno">11674</span>  oa->write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0xD1));</div>
|
||
<div class="line"><a name="l11675"></a><span class="lineno">11675</span>  write_number(<span class="keyword">static_cast<</span>std::int16_t<span class="keyword">></span>(j.m_value.number_integer));</div>
|
||
<div class="line"><a name="l11676"></a><span class="lineno">11676</span>  }</div>
|
||
<div class="line"><a name="l11677"></a><span class="lineno">11677</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (j.m_value.number_integer >= (std::numeric_limits<std::int32_t>::min)() and</div>
|
||
<div class="line"><a name="l11678"></a><span class="lineno">11678</span>  j.m_value.number_integer <= (std::numeric_limits<std::int32_t>::max)())</div>
|
||
<div class="line"><a name="l11679"></a><span class="lineno">11679</span>  {</div>
|
||
<div class="line"><a name="l11680"></a><span class="lineno">11680</span>  <span class="comment">// int 32</span></div>
|
||
<div class="line"><a name="l11681"></a><span class="lineno">11681</span>  oa->write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0xD2));</div>
|
||
<div class="line"><a name="l11682"></a><span class="lineno">11682</span>  write_number(<span class="keyword">static_cast<</span>std::int32_t<span class="keyword">></span>(j.m_value.number_integer));</div>
|
||
<div class="line"><a name="l11683"></a><span class="lineno">11683</span>  }</div>
|
||
<div class="line"><a name="l11684"></a><span class="lineno">11684</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (j.m_value.number_integer >= (std::numeric_limits<std::int64_t>::min)() and</div>
|
||
<div class="line"><a name="l11685"></a><span class="lineno">11685</span>  j.m_value.number_integer <= (std::numeric_limits<std::int64_t>::max)())</div>
|
||
<div class="line"><a name="l11686"></a><span class="lineno">11686</span>  {</div>
|
||
<div class="line"><a name="l11687"></a><span class="lineno">11687</span>  <span class="comment">// int 64</span></div>
|
||
<div class="line"><a name="l11688"></a><span class="lineno">11688</span>  oa->write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0xD3));</div>
|
||
<div class="line"><a name="l11689"></a><span class="lineno">11689</span>  write_number(<span class="keyword">static_cast<</span>std::int64_t<span class="keyword">></span>(j.m_value.number_integer));</div>
|
||
<div class="line"><a name="l11690"></a><span class="lineno">11690</span>  }</div>
|
||
<div class="line"><a name="l11691"></a><span class="lineno">11691</span>  }</div>
|
||
<div class="line"><a name="l11692"></a><span class="lineno">11692</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l11693"></a><span class="lineno">11693</span>  }</div>
|
||
<div class="line"><a name="l11694"></a><span class="lineno">11694</span>  </div>
|
||
<div class="line"><a name="l11695"></a><span class="lineno">11695</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985adce7cc8ec29055c4158828921f2f265e">value_t::number_unsigned</a>:</div>
|
||
<div class="line"><a name="l11696"></a><span class="lineno">11696</span>  {</div>
|
||
<div class="line"><a name="l11697"></a><span class="lineno">11697</span>  <span class="keywordflow">if</span> (j.m_value.number_unsigned < 128)</div>
|
||
<div class="line"><a name="l11698"></a><span class="lineno">11698</span>  {</div>
|
||
<div class="line"><a name="l11699"></a><span class="lineno">11699</span>  <span class="comment">// positive fixnum</span></div>
|
||
<div class="line"><a name="l11700"></a><span class="lineno">11700</span>  write_number(<span class="keyword">static_cast<</span>std::uint8_t<span class="keyword">></span>(j.m_value.number_integer));</div>
|
||
<div class="line"><a name="l11701"></a><span class="lineno">11701</span>  }</div>
|
||
<div class="line"><a name="l11702"></a><span class="lineno">11702</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (j.m_value.number_unsigned <= (std::numeric_limits<std::uint8_t>::max)())</div>
|
||
<div class="line"><a name="l11703"></a><span class="lineno">11703</span>  {</div>
|
||
<div class="line"><a name="l11704"></a><span class="lineno">11704</span>  <span class="comment">// uint 8</span></div>
|
||
<div class="line"><a name="l11705"></a><span class="lineno">11705</span>  oa->write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0xCC));</div>
|
||
<div class="line"><a name="l11706"></a><span class="lineno">11706</span>  write_number(<span class="keyword">static_cast<</span>std::uint8_t<span class="keyword">></span>(j.m_value.number_integer));</div>
|
||
<div class="line"><a name="l11707"></a><span class="lineno">11707</span>  }</div>
|
||
<div class="line"><a name="l11708"></a><span class="lineno">11708</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (j.m_value.number_unsigned <= (std::numeric_limits<std::uint16_t>::max)())</div>
|
||
<div class="line"><a name="l11709"></a><span class="lineno">11709</span>  {</div>
|
||
<div class="line"><a name="l11710"></a><span class="lineno">11710</span>  <span class="comment">// uint 16</span></div>
|
||
<div class="line"><a name="l11711"></a><span class="lineno">11711</span>  oa->write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0xCD));</div>
|
||
<div class="line"><a name="l11712"></a><span class="lineno">11712</span>  write_number(<span class="keyword">static_cast<</span>std::uint16_t<span class="keyword">></span>(j.m_value.number_integer));</div>
|
||
<div class="line"><a name="l11713"></a><span class="lineno">11713</span>  }</div>
|
||
<div class="line"><a name="l11714"></a><span class="lineno">11714</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (j.m_value.number_unsigned <= (std::numeric_limits<std::uint32_t>::max)())</div>
|
||
<div class="line"><a name="l11715"></a><span class="lineno">11715</span>  {</div>
|
||
<div class="line"><a name="l11716"></a><span class="lineno">11716</span>  <span class="comment">// uint 32</span></div>
|
||
<div class="line"><a name="l11717"></a><span class="lineno">11717</span>  oa->write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0xCE));</div>
|
||
<div class="line"><a name="l11718"></a><span class="lineno">11718</span>  write_number(<span class="keyword">static_cast<</span>std::uint32_t<span class="keyword">></span>(j.m_value.number_integer));</div>
|
||
<div class="line"><a name="l11719"></a><span class="lineno">11719</span>  }</div>
|
||
<div class="line"><a name="l11720"></a><span class="lineno">11720</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (j.m_value.number_unsigned <= (std::numeric_limits<std::uint64_t>::max)())</div>
|
||
<div class="line"><a name="l11721"></a><span class="lineno">11721</span>  {</div>
|
||
<div class="line"><a name="l11722"></a><span class="lineno">11722</span>  <span class="comment">// uint 64</span></div>
|
||
<div class="line"><a name="l11723"></a><span class="lineno">11723</span>  oa->write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0xCF));</div>
|
||
<div class="line"><a name="l11724"></a><span class="lineno">11724</span>  write_number(<span class="keyword">static_cast<</span>std::uint64_t<span class="keyword">></span>(j.m_value.number_integer));</div>
|
||
<div class="line"><a name="l11725"></a><span class="lineno">11725</span>  }</div>
|
||
<div class="line"><a name="l11726"></a><span class="lineno">11726</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l11727"></a><span class="lineno">11727</span>  }</div>
|
||
<div class="line"><a name="l11728"></a><span class="lineno">11728</span>  </div>
|
||
<div class="line"><a name="l11729"></a><span class="lineno">11729</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ad9966ecb59667235a57b4b999a649eef">value_t::number_float</a>:</div>
|
||
<div class="line"><a name="l11730"></a><span class="lineno">11730</span>  {</div>
|
||
<div class="line"><a name="l11731"></a><span class="lineno">11731</span>  oa->write_character(get_msgpack_float_prefix(j.m_value.number_float));</div>
|
||
<div class="line"><a name="l11732"></a><span class="lineno">11732</span>  write_number(j.m_value.number_float);</div>
|
||
<div class="line"><a name="l11733"></a><span class="lineno">11733</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l11734"></a><span class="lineno">11734</span>  }</div>
|
||
<div class="line"><a name="l11735"></a><span class="lineno">11735</span>  </div>
|
||
<div class="line"><a name="l11736"></a><span class="lineno">11736</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ab45cffe084dd3d20d928bee85e7b0f21">value_t::string</a>:</div>
|
||
<div class="line"><a name="l11737"></a><span class="lineno">11737</span>  {</div>
|
||
<div class="line"><a name="l11738"></a><span class="lineno">11738</span>  <span class="comment">// step 1: write control byte and the string length</span></div>
|
||
<div class="line"><a name="l11739"></a><span class="lineno">11739</span>  <span class="keyword">const</span> <span class="keyword">auto</span> N = j.m_value.string->size();</div>
|
||
<div class="line"><a name="l11740"></a><span class="lineno">11740</span>  <span class="keywordflow">if</span> (N <= 31)</div>
|
||
<div class="line"><a name="l11741"></a><span class="lineno">11741</span>  {</div>
|
||
<div class="line"><a name="l11742"></a><span class="lineno">11742</span>  <span class="comment">// fixstr</span></div>
|
||
<div class="line"><a name="l11743"></a><span class="lineno">11743</span>  write_number(<span class="keyword">static_cast<</span>std::uint8_t<span class="keyword">></span>(0xA0 | N));</div>
|
||
<div class="line"><a name="l11744"></a><span class="lineno">11744</span>  }</div>
|
||
<div class="line"><a name="l11745"></a><span class="lineno">11745</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (N <= (std::numeric_limits<std::uint8_t>::max)())</div>
|
||
<div class="line"><a name="l11746"></a><span class="lineno">11746</span>  {</div>
|
||
<div class="line"><a name="l11747"></a><span class="lineno">11747</span>  <span class="comment">// str 8</span></div>
|
||
<div class="line"><a name="l11748"></a><span class="lineno">11748</span>  oa->write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0xD9));</div>
|
||
<div class="line"><a name="l11749"></a><span class="lineno">11749</span>  write_number(<span class="keyword">static_cast<</span>std::uint8_t<span class="keyword">></span>(N));</div>
|
||
<div class="line"><a name="l11750"></a><span class="lineno">11750</span>  }</div>
|
||
<div class="line"><a name="l11751"></a><span class="lineno">11751</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (N <= (std::numeric_limits<std::uint16_t>::max)())</div>
|
||
<div class="line"><a name="l11752"></a><span class="lineno">11752</span>  {</div>
|
||
<div class="line"><a name="l11753"></a><span class="lineno">11753</span>  <span class="comment">// str 16</span></div>
|
||
<div class="line"><a name="l11754"></a><span class="lineno">11754</span>  oa->write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0xDA));</div>
|
||
<div class="line"><a name="l11755"></a><span class="lineno">11755</span>  write_number(<span class="keyword">static_cast<</span>std::uint16_t<span class="keyword">></span>(N));</div>
|
||
<div class="line"><a name="l11756"></a><span class="lineno">11756</span>  }</div>
|
||
<div class="line"><a name="l11757"></a><span class="lineno">11757</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (N <= (std::numeric_limits<std::uint32_t>::max)())</div>
|
||
<div class="line"><a name="l11758"></a><span class="lineno">11758</span>  {</div>
|
||
<div class="line"><a name="l11759"></a><span class="lineno">11759</span>  <span class="comment">// str 32</span></div>
|
||
<div class="line"><a name="l11760"></a><span class="lineno">11760</span>  oa->write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0xDB));</div>
|
||
<div class="line"><a name="l11761"></a><span class="lineno">11761</span>  write_number(<span class="keyword">static_cast<</span>std::uint32_t<span class="keyword">></span>(N));</div>
|
||
<div class="line"><a name="l11762"></a><span class="lineno">11762</span>  }</div>
|
||
<div class="line"><a name="l11763"></a><span class="lineno">11763</span>  </div>
|
||
<div class="line"><a name="l11764"></a><span class="lineno">11764</span>  <span class="comment">// step 2: write the string</span></div>
|
||
<div class="line"><a name="l11765"></a><span class="lineno">11765</span>  oa->write_characters(</div>
|
||
<div class="line"><a name="l11766"></a><span class="lineno">11766</span>  <span class="keyword">reinterpret_cast<</span><span class="keyword">const </span>CharType*<span class="keyword">></span>(j.m_value.string->c_str()),</div>
|
||
<div class="line"><a name="l11767"></a><span class="lineno">11767</span>  j.m_value.string->size());</div>
|
||
<div class="line"><a name="l11768"></a><span class="lineno">11768</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l11769"></a><span class="lineno">11769</span>  }</div>
|
||
<div class="line"><a name="l11770"></a><span class="lineno">11770</span>  </div>
|
||
<div class="line"><a name="l11771"></a><span class="lineno">11771</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>:</div>
|
||
<div class="line"><a name="l11772"></a><span class="lineno">11772</span>  {</div>
|
||
<div class="line"><a name="l11773"></a><span class="lineno">11773</span>  <span class="comment">// step 1: write control byte and the array size</span></div>
|
||
<div class="line"><a name="l11774"></a><span class="lineno">11774</span>  <span class="keyword">const</span> <span class="keyword">auto</span> N = j.m_value.array->size();</div>
|
||
<div class="line"><a name="l11775"></a><span class="lineno">11775</span>  <span class="keywordflow">if</span> (N <= 15)</div>
|
||
<div class="line"><a name="l11776"></a><span class="lineno">11776</span>  {</div>
|
||
<div class="line"><a name="l11777"></a><span class="lineno">11777</span>  <span class="comment">// fixarray</span></div>
|
||
<div class="line"><a name="l11778"></a><span class="lineno">11778</span>  write_number(<span class="keyword">static_cast<</span>std::uint8_t<span class="keyword">></span>(0x90 | N));</div>
|
||
<div class="line"><a name="l11779"></a><span class="lineno">11779</span>  }</div>
|
||
<div class="line"><a name="l11780"></a><span class="lineno">11780</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (N <= (std::numeric_limits<std::uint16_t>::max)())</div>
|
||
<div class="line"><a name="l11781"></a><span class="lineno">11781</span>  {</div>
|
||
<div class="line"><a name="l11782"></a><span class="lineno">11782</span>  <span class="comment">// array 16</span></div>
|
||
<div class="line"><a name="l11783"></a><span class="lineno">11783</span>  oa->write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0xDC));</div>
|
||
<div class="line"><a name="l11784"></a><span class="lineno">11784</span>  write_number(<span class="keyword">static_cast<</span>std::uint16_t<span class="keyword">></span>(N));</div>
|
||
<div class="line"><a name="l11785"></a><span class="lineno">11785</span>  }</div>
|
||
<div class="line"><a name="l11786"></a><span class="lineno">11786</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (N <= (std::numeric_limits<std::uint32_t>::max)())</div>
|
||
<div class="line"><a name="l11787"></a><span class="lineno">11787</span>  {</div>
|
||
<div class="line"><a name="l11788"></a><span class="lineno">11788</span>  <span class="comment">// array 32</span></div>
|
||
<div class="line"><a name="l11789"></a><span class="lineno">11789</span>  oa->write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0xDD));</div>
|
||
<div class="line"><a name="l11790"></a><span class="lineno">11790</span>  write_number(<span class="keyword">static_cast<</span>std::uint32_t<span class="keyword">></span>(N));</div>
|
||
<div class="line"><a name="l11791"></a><span class="lineno">11791</span>  }</div>
|
||
<div class="line"><a name="l11792"></a><span class="lineno">11792</span>  </div>
|
||
<div class="line"><a name="l11793"></a><span class="lineno">11793</span>  <span class="comment">// step 2: write each element</span></div>
|
||
<div class="line"><a name="l11794"></a><span class="lineno">11794</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>& el : *j.m_value.array)</div>
|
||
<div class="line"><a name="l11795"></a><span class="lineno">11795</span>  {</div>
|
||
<div class="line"><a name="l11796"></a><span class="lineno">11796</span>  <a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ae4e0852b64102ce4b07d99f08f828b7c">write_msgpack</a>(el);</div>
|
||
<div class="line"><a name="l11797"></a><span class="lineno">11797</span>  }</div>
|
||
<div class="line"><a name="l11798"></a><span class="lineno">11798</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l11799"></a><span class="lineno">11799</span>  }</div>
|
||
<div class="line"><a name="l11800"></a><span class="lineno">11800</span>  </div>
|
||
<div class="line"><a name="l11801"></a><span class="lineno">11801</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>:</div>
|
||
<div class="line"><a name="l11802"></a><span class="lineno">11802</span>  {</div>
|
||
<div class="line"><a name="l11803"></a><span class="lineno">11803</span>  <span class="comment">// step 1: write control byte and the object size</span></div>
|
||
<div class="line"><a name="l11804"></a><span class="lineno">11804</span>  <span class="keyword">const</span> <span class="keyword">auto</span> N = j.m_value.object->size();</div>
|
||
<div class="line"><a name="l11805"></a><span class="lineno">11805</span>  <span class="keywordflow">if</span> (N <= 15)</div>
|
||
<div class="line"><a name="l11806"></a><span class="lineno">11806</span>  {</div>
|
||
<div class="line"><a name="l11807"></a><span class="lineno">11807</span>  <span class="comment">// fixmap</span></div>
|
||
<div class="line"><a name="l11808"></a><span class="lineno">11808</span>  write_number(<span class="keyword">static_cast<</span>std::uint8_t<span class="keyword">></span>(0x80 | (N & 0xF)));</div>
|
||
<div class="line"><a name="l11809"></a><span class="lineno">11809</span>  }</div>
|
||
<div class="line"><a name="l11810"></a><span class="lineno">11810</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (N <= (std::numeric_limits<std::uint16_t>::max)())</div>
|
||
<div class="line"><a name="l11811"></a><span class="lineno">11811</span>  {</div>
|
||
<div class="line"><a name="l11812"></a><span class="lineno">11812</span>  <span class="comment">// map 16</span></div>
|
||
<div class="line"><a name="l11813"></a><span class="lineno">11813</span>  oa->write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0xDE));</div>
|
||
<div class="line"><a name="l11814"></a><span class="lineno">11814</span>  write_number(<span class="keyword">static_cast<</span>std::uint16_t<span class="keyword">></span>(N));</div>
|
||
<div class="line"><a name="l11815"></a><span class="lineno">11815</span>  }</div>
|
||
<div class="line"><a name="l11816"></a><span class="lineno">11816</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (N <= (std::numeric_limits<std::uint32_t>::max)())</div>
|
||
<div class="line"><a name="l11817"></a><span class="lineno">11817</span>  {</div>
|
||
<div class="line"><a name="l11818"></a><span class="lineno">11818</span>  <span class="comment">// map 32</span></div>
|
||
<div class="line"><a name="l11819"></a><span class="lineno">11819</span>  oa->write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0xDF));</div>
|
||
<div class="line"><a name="l11820"></a><span class="lineno">11820</span>  write_number(<span class="keyword">static_cast<</span>std::uint32_t<span class="keyword">></span>(N));</div>
|
||
<div class="line"><a name="l11821"></a><span class="lineno">11821</span>  }</div>
|
||
<div class="line"><a name="l11822"></a><span class="lineno">11822</span>  </div>
|
||
<div class="line"><a name="l11823"></a><span class="lineno">11823</span>  <span class="comment">// step 2: write each element</span></div>
|
||
<div class="line"><a name="l11824"></a><span class="lineno">11824</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>& el : *j.m_value.object)</div>
|
||
<div class="line"><a name="l11825"></a><span class="lineno">11825</span>  {</div>
|
||
<div class="line"><a name="l11826"></a><span class="lineno">11826</span>  <a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ae4e0852b64102ce4b07d99f08f828b7c">write_msgpack</a>(el.first);</div>
|
||
<div class="line"><a name="l11827"></a><span class="lineno">11827</span>  <a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ae4e0852b64102ce4b07d99f08f828b7c">write_msgpack</a>(el.second);</div>
|
||
<div class="line"><a name="l11828"></a><span class="lineno">11828</span>  }</div>
|
||
<div class="line"><a name="l11829"></a><span class="lineno">11829</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l11830"></a><span class="lineno">11830</span>  }</div>
|
||
<div class="line"><a name="l11831"></a><span class="lineno">11831</span>  </div>
|
||
<div class="line"><a name="l11832"></a><span class="lineno">11832</span>  <span class="keywordflow">default</span>:</div>
|
||
<div class="line"><a name="l11833"></a><span class="lineno">11833</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l11834"></a><span class="lineno">11834</span>  }</div>
|
||
<div class="line"><a name="l11835"></a><span class="lineno">11835</span>  }</div>
|
||
<div class="line"><a name="l11836"></a><span class="lineno">11836</span>  </div>
|
||
<div class="line"><a name="l11843"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1binary__writer.html#a0f6c65053d859269f88eb4ebb0cd7060">11843</a></span>  <span class="keywordtype">void</span> <a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#a0f6c65053d859269f88eb4ebb0cd7060">write_ubjson</a>(<span class="keyword">const</span> BasicJsonType& j, <span class="keyword">const</span> <span class="keywordtype">bool</span> use_count,</div>
|
||
<div class="line"><a name="l11844"></a><span class="lineno">11844</span>  <span class="keyword">const</span> <span class="keywordtype">bool</span> use_type, <span class="keyword">const</span> <span class="keywordtype">bool</span> add_prefix = <span class="keyword">true</span>)</div>
|
||
<div class="line"><a name="l11845"></a><span class="lineno">11845</span>  {</div>
|
||
<div class="line"><a name="l11846"></a><span class="lineno">11846</span>  <span class="keywordflow">switch</span> (j.type())</div>
|
||
<div class="line"><a name="l11847"></a><span class="lineno">11847</span>  {</div>
|
||
<div class="line"><a name="l11848"></a><span class="lineno">11848</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a37a6259cc0c1dae299a7866489dff0bd">value_t::null</a>:</div>
|
||
<div class="line"><a name="l11849"></a><span class="lineno">11849</span>  {</div>
|
||
<div class="line"><a name="l11850"></a><span class="lineno">11850</span>  <span class="keywordflow">if</span> (add_prefix)</div>
|
||
<div class="line"><a name="l11851"></a><span class="lineno">11851</span>  {</div>
|
||
<div class="line"><a name="l11852"></a><span class="lineno">11852</span>  oa->write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(<span class="charliteral">'Z'</span>));</div>
|
||
<div class="line"><a name="l11853"></a><span class="lineno">11853</span>  }</div>
|
||
<div class="line"><a name="l11854"></a><span class="lineno">11854</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l11855"></a><span class="lineno">11855</span>  }</div>
|
||
<div class="line"><a name="l11856"></a><span class="lineno">11856</span>  </div>
|
||
<div class="line"><a name="l11857"></a><span class="lineno">11857</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a84e2c64f38f78ba3ea5c905ab5a2da27">value_t::boolean</a>:</div>
|
||
<div class="line"><a name="l11858"></a><span class="lineno">11858</span>  {</div>
|
||
<div class="line"><a name="l11859"></a><span class="lineno">11859</span>  <span class="keywordflow">if</span> (add_prefix)</div>
|
||
<div class="line"><a name="l11860"></a><span class="lineno">11860</span>  {</div>
|
||
<div class="line"><a name="l11861"></a><span class="lineno">11861</span>  oa->write_character(j.m_value.boolean</div>
|
||
<div class="line"><a name="l11862"></a><span class="lineno">11862</span>  ? <a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(<span class="charliteral">'T'</span>)</div>
|
||
<div class="line"><a name="l11863"></a><span class="lineno">11863</span>  : <a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(<span class="charliteral">'F'</span>));</div>
|
||
<div class="line"><a name="l11864"></a><span class="lineno">11864</span>  }</div>
|
||
<div class="line"><a name="l11865"></a><span class="lineno">11865</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l11866"></a><span class="lineno">11866</span>  }</div>
|
||
<div class="line"><a name="l11867"></a><span class="lineno">11867</span>  </div>
|
||
<div class="line"><a name="l11868"></a><span class="lineno">11868</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a5763da164f8659d94a56e29df64b4bcc">value_t::number_integer</a>:</div>
|
||
<div class="line"><a name="l11869"></a><span class="lineno">11869</span>  {</div>
|
||
<div class="line"><a name="l11870"></a><span class="lineno">11870</span>  write_number_with_ubjson_prefix(j.m_value.number_integer, add_prefix);</div>
|
||
<div class="line"><a name="l11871"></a><span class="lineno">11871</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l11872"></a><span class="lineno">11872</span>  }</div>
|
||
<div class="line"><a name="l11873"></a><span class="lineno">11873</span>  </div>
|
||
<div class="line"><a name="l11874"></a><span class="lineno">11874</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985adce7cc8ec29055c4158828921f2f265e">value_t::number_unsigned</a>:</div>
|
||
<div class="line"><a name="l11875"></a><span class="lineno">11875</span>  {</div>
|
||
<div class="line"><a name="l11876"></a><span class="lineno">11876</span>  write_number_with_ubjson_prefix(j.m_value.number_unsigned, add_prefix);</div>
|
||
<div class="line"><a name="l11877"></a><span class="lineno">11877</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l11878"></a><span class="lineno">11878</span>  }</div>
|
||
<div class="line"><a name="l11879"></a><span class="lineno">11879</span>  </div>
|
||
<div class="line"><a name="l11880"></a><span class="lineno">11880</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ad9966ecb59667235a57b4b999a649eef">value_t::number_float</a>:</div>
|
||
<div class="line"><a name="l11881"></a><span class="lineno">11881</span>  {</div>
|
||
<div class="line"><a name="l11882"></a><span class="lineno">11882</span>  write_number_with_ubjson_prefix(j.m_value.number_float, add_prefix);</div>
|
||
<div class="line"><a name="l11883"></a><span class="lineno">11883</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l11884"></a><span class="lineno">11884</span>  }</div>
|
||
<div class="line"><a name="l11885"></a><span class="lineno">11885</span>  </div>
|
||
<div class="line"><a name="l11886"></a><span class="lineno">11886</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ab45cffe084dd3d20d928bee85e7b0f21">value_t::string</a>:</div>
|
||
<div class="line"><a name="l11887"></a><span class="lineno">11887</span>  {</div>
|
||
<div class="line"><a name="l11888"></a><span class="lineno">11888</span>  <span class="keywordflow">if</span> (add_prefix)</div>
|
||
<div class="line"><a name="l11889"></a><span class="lineno">11889</span>  {</div>
|
||
<div class="line"><a name="l11890"></a><span class="lineno">11890</span>  oa->write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(<span class="charliteral">'S'</span>));</div>
|
||
<div class="line"><a name="l11891"></a><span class="lineno">11891</span>  }</div>
|
||
<div class="line"><a name="l11892"></a><span class="lineno">11892</span>  write_number_with_ubjson_prefix(j.m_value.string->size(), <span class="keyword">true</span>);</div>
|
||
<div class="line"><a name="l11893"></a><span class="lineno">11893</span>  oa->write_characters(</div>
|
||
<div class="line"><a name="l11894"></a><span class="lineno">11894</span>  <span class="keyword">reinterpret_cast<</span><span class="keyword">const </span>CharType*<span class="keyword">></span>(j.m_value.string->c_str()),</div>
|
||
<div class="line"><a name="l11895"></a><span class="lineno">11895</span>  j.m_value.string->size());</div>
|
||
<div class="line"><a name="l11896"></a><span class="lineno">11896</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l11897"></a><span class="lineno">11897</span>  }</div>
|
||
<div class="line"><a name="l11898"></a><span class="lineno">11898</span>  </div>
|
||
<div class="line"><a name="l11899"></a><span class="lineno">11899</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>:</div>
|
||
<div class="line"><a name="l11900"></a><span class="lineno">11900</span>  {</div>
|
||
<div class="line"><a name="l11901"></a><span class="lineno">11901</span>  <span class="keywordflow">if</span> (add_prefix)</div>
|
||
<div class="line"><a name="l11902"></a><span class="lineno">11902</span>  {</div>
|
||
<div class="line"><a name="l11903"></a><span class="lineno">11903</span>  oa->write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(<span class="charliteral">'['</span>));</div>
|
||
<div class="line"><a name="l11904"></a><span class="lineno">11904</span>  }</div>
|
||
<div class="line"><a name="l11905"></a><span class="lineno">11905</span>  </div>
|
||
<div class="line"><a name="l11906"></a><span class="lineno">11906</span>  <span class="keywordtype">bool</span> prefix_required = <span class="keyword">true</span>;</div>
|
||
<div class="line"><a name="l11907"></a><span class="lineno">11907</span>  <span class="keywordflow">if</span> (use_type and not j.m_value.array->empty())</div>
|
||
<div class="line"><a name="l11908"></a><span class="lineno">11908</span>  {</div>
|
||
<div class="line"><a name="l11909"></a><span class="lineno">11909</span>  assert(use_count);</div>
|
||
<div class="line"><a name="l11910"></a><span class="lineno">11910</span>  <span class="keyword">const</span> CharType first_prefix = ubjson_prefix(j.front());</div>
|
||
<div class="line"><a name="l11911"></a><span class="lineno">11911</span>  <span class="keyword">const</span> <span class="keywordtype">bool</span> same_prefix = std::all_of(j.begin() + 1, j.end(),</div>
|
||
<div class="line"><a name="l11912"></a><span class="lineno">11912</span>  [<span class="keyword">this</span>, first_prefix](<span class="keyword">const</span> BasicJsonType & v)</div>
|
||
<div class="line"><a name="l11913"></a><span class="lineno">11913</span>  {</div>
|
||
<div class="line"><a name="l11914"></a><span class="lineno">11914</span>  return ubjson_prefix(v) == first_prefix;</div>
|
||
<div class="line"><a name="l11915"></a><span class="lineno">11915</span>  });</div>
|
||
<div class="line"><a name="l11916"></a><span class="lineno">11916</span>  </div>
|
||
<div class="line"><a name="l11917"></a><span class="lineno">11917</span>  <span class="keywordflow">if</span> (same_prefix)</div>
|
||
<div class="line"><a name="l11918"></a><span class="lineno">11918</span>  {</div>
|
||
<div class="line"><a name="l11919"></a><span class="lineno">11919</span>  prefix_required = <span class="keyword">false</span>;</div>
|
||
<div class="line"><a name="l11920"></a><span class="lineno">11920</span>  oa->write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(<span class="charliteral">'$'</span>));</div>
|
||
<div class="line"><a name="l11921"></a><span class="lineno">11921</span>  oa->write_character(first_prefix);</div>
|
||
<div class="line"><a name="l11922"></a><span class="lineno">11922</span>  }</div>
|
||
<div class="line"><a name="l11923"></a><span class="lineno">11923</span>  }</div>
|
||
<div class="line"><a name="l11924"></a><span class="lineno">11924</span>  </div>
|
||
<div class="line"><a name="l11925"></a><span class="lineno">11925</span>  <span class="keywordflow">if</span> (use_count)</div>
|
||
<div class="line"><a name="l11926"></a><span class="lineno">11926</span>  {</div>
|
||
<div class="line"><a name="l11927"></a><span class="lineno">11927</span>  oa->write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(<span class="charliteral">'#'</span>));</div>
|
||
<div class="line"><a name="l11928"></a><span class="lineno">11928</span>  write_number_with_ubjson_prefix(j.m_value.array->size(), <span class="keyword">true</span>);</div>
|
||
<div class="line"><a name="l11929"></a><span class="lineno">11929</span>  }</div>
|
||
<div class="line"><a name="l11930"></a><span class="lineno">11930</span>  </div>
|
||
<div class="line"><a name="l11931"></a><span class="lineno">11931</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>& el : *j.m_value.array)</div>
|
||
<div class="line"><a name="l11932"></a><span class="lineno">11932</span>  {</div>
|
||
<div class="line"><a name="l11933"></a><span class="lineno">11933</span>  <a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#a0f6c65053d859269f88eb4ebb0cd7060">write_ubjson</a>(el, use_count, use_type, prefix_required);</div>
|
||
<div class="line"><a name="l11934"></a><span class="lineno">11934</span>  }</div>
|
||
<div class="line"><a name="l11935"></a><span class="lineno">11935</span>  </div>
|
||
<div class="line"><a name="l11936"></a><span class="lineno">11936</span>  <span class="keywordflow">if</span> (not use_count)</div>
|
||
<div class="line"><a name="l11937"></a><span class="lineno">11937</span>  {</div>
|
||
<div class="line"><a name="l11938"></a><span class="lineno">11938</span>  oa->write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(<span class="charliteral">']'</span>));</div>
|
||
<div class="line"><a name="l11939"></a><span class="lineno">11939</span>  }</div>
|
||
<div class="line"><a name="l11940"></a><span class="lineno">11940</span>  </div>
|
||
<div class="line"><a name="l11941"></a><span class="lineno">11941</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l11942"></a><span class="lineno">11942</span>  }</div>
|
||
<div class="line"><a name="l11943"></a><span class="lineno">11943</span>  </div>
|
||
<div class="line"><a name="l11944"></a><span class="lineno">11944</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>:</div>
|
||
<div class="line"><a name="l11945"></a><span class="lineno">11945</span>  {</div>
|
||
<div class="line"><a name="l11946"></a><span class="lineno">11946</span>  <span class="keywordflow">if</span> (add_prefix)</div>
|
||
<div class="line"><a name="l11947"></a><span class="lineno">11947</span>  {</div>
|
||
<div class="line"><a name="l11948"></a><span class="lineno">11948</span>  oa->write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(<span class="charliteral">'{'</span>));</div>
|
||
<div class="line"><a name="l11949"></a><span class="lineno">11949</span>  }</div>
|
||
<div class="line"><a name="l11950"></a><span class="lineno">11950</span>  </div>
|
||
<div class="line"><a name="l11951"></a><span class="lineno">11951</span>  <span class="keywordtype">bool</span> prefix_required = <span class="keyword">true</span>;</div>
|
||
<div class="line"><a name="l11952"></a><span class="lineno">11952</span>  <span class="keywordflow">if</span> (use_type and not j.m_value.object->empty())</div>
|
||
<div class="line"><a name="l11953"></a><span class="lineno">11953</span>  {</div>
|
||
<div class="line"><a name="l11954"></a><span class="lineno">11954</span>  assert(use_count);</div>
|
||
<div class="line"><a name="l11955"></a><span class="lineno">11955</span>  <span class="keyword">const</span> CharType first_prefix = ubjson_prefix(j.front());</div>
|
||
<div class="line"><a name="l11956"></a><span class="lineno">11956</span>  <span class="keyword">const</span> <span class="keywordtype">bool</span> same_prefix = std::all_of(j.begin(), j.end(),</div>
|
||
<div class="line"><a name="l11957"></a><span class="lineno">11957</span>  [<span class="keyword">this</span>, first_prefix](<span class="keyword">const</span> BasicJsonType & v)</div>
|
||
<div class="line"><a name="l11958"></a><span class="lineno">11958</span>  {</div>
|
||
<div class="line"><a name="l11959"></a><span class="lineno">11959</span>  return ubjson_prefix(v) == first_prefix;</div>
|
||
<div class="line"><a name="l11960"></a><span class="lineno">11960</span>  });</div>
|
||
<div class="line"><a name="l11961"></a><span class="lineno">11961</span>  </div>
|
||
<div class="line"><a name="l11962"></a><span class="lineno">11962</span>  <span class="keywordflow">if</span> (same_prefix)</div>
|
||
<div class="line"><a name="l11963"></a><span class="lineno">11963</span>  {</div>
|
||
<div class="line"><a name="l11964"></a><span class="lineno">11964</span>  prefix_required = <span class="keyword">false</span>;</div>
|
||
<div class="line"><a name="l11965"></a><span class="lineno">11965</span>  oa->write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(<span class="charliteral">'$'</span>));</div>
|
||
<div class="line"><a name="l11966"></a><span class="lineno">11966</span>  oa->write_character(first_prefix);</div>
|
||
<div class="line"><a name="l11967"></a><span class="lineno">11967</span>  }</div>
|
||
<div class="line"><a name="l11968"></a><span class="lineno">11968</span>  }</div>
|
||
<div class="line"><a name="l11969"></a><span class="lineno">11969</span>  </div>
|
||
<div class="line"><a name="l11970"></a><span class="lineno">11970</span>  <span class="keywordflow">if</span> (use_count)</div>
|
||
<div class="line"><a name="l11971"></a><span class="lineno">11971</span>  {</div>
|
||
<div class="line"><a name="l11972"></a><span class="lineno">11972</span>  oa->write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(<span class="charliteral">'#'</span>));</div>
|
||
<div class="line"><a name="l11973"></a><span class="lineno">11973</span>  write_number_with_ubjson_prefix(j.m_value.object->size(), <span class="keyword">true</span>);</div>
|
||
<div class="line"><a name="l11974"></a><span class="lineno">11974</span>  }</div>
|
||
<div class="line"><a name="l11975"></a><span class="lineno">11975</span>  </div>
|
||
<div class="line"><a name="l11976"></a><span class="lineno">11976</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>& el : *j.m_value.object)</div>
|
||
<div class="line"><a name="l11977"></a><span class="lineno">11977</span>  {</div>
|
||
<div class="line"><a name="l11978"></a><span class="lineno">11978</span>  write_number_with_ubjson_prefix(el.first.size(), <span class="keyword">true</span>);</div>
|
||
<div class="line"><a name="l11979"></a><span class="lineno">11979</span>  oa->write_characters(</div>
|
||
<div class="line"><a name="l11980"></a><span class="lineno">11980</span>  <span class="keyword">reinterpret_cast<</span><span class="keyword">const </span>CharType*<span class="keyword">></span>(el.first.c_str()),</div>
|
||
<div class="line"><a name="l11981"></a><span class="lineno">11981</span>  el.first.size());</div>
|
||
<div class="line"><a name="l11982"></a><span class="lineno">11982</span>  <a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#a0f6c65053d859269f88eb4ebb0cd7060">write_ubjson</a>(el.second, use_count, use_type, prefix_required);</div>
|
||
<div class="line"><a name="l11983"></a><span class="lineno">11983</span>  }</div>
|
||
<div class="line"><a name="l11984"></a><span class="lineno">11984</span>  </div>
|
||
<div class="line"><a name="l11985"></a><span class="lineno">11985</span>  <span class="keywordflow">if</span> (not use_count)</div>
|
||
<div class="line"><a name="l11986"></a><span class="lineno">11986</span>  {</div>
|
||
<div class="line"><a name="l11987"></a><span class="lineno">11987</span>  oa->write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(<span class="charliteral">'}'</span>));</div>
|
||
<div class="line"><a name="l11988"></a><span class="lineno">11988</span>  }</div>
|
||
<div class="line"><a name="l11989"></a><span class="lineno">11989</span>  </div>
|
||
<div class="line"><a name="l11990"></a><span class="lineno">11990</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l11991"></a><span class="lineno">11991</span>  }</div>
|
||
<div class="line"><a name="l11992"></a><span class="lineno">11992</span>  </div>
|
||
<div class="line"><a name="l11993"></a><span class="lineno">11993</span>  <span class="keywordflow">default</span>:</div>
|
||
<div class="line"><a name="l11994"></a><span class="lineno">11994</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l11995"></a><span class="lineno">11995</span>  }</div>
|
||
<div class="line"><a name="l11996"></a><span class="lineno">11996</span>  }</div>
|
||
<div class="line"><a name="l11997"></a><span class="lineno">11997</span>  </div>
|
||
<div class="line"><a name="l11998"></a><span class="lineno">11998</span>  <span class="keyword">private</span>:</div>
|
||
<div class="line"><a name="l12000"></a><span class="lineno">12000</span>  <span class="comment">// BSON //</span></div>
|
||
<div class="line"><a name="l12002"></a><span class="lineno">12002</span> <span class="comment"></span> </div>
|
||
<div class="line"><a name="l12007"></a><span class="lineno">12007</span>  <span class="keyword">static</span> std::size_t calc_bson_entry_header_size(<span class="keyword">const</span> string_t& name)</div>
|
||
<div class="line"><a name="l12008"></a><span class="lineno">12008</span>  {</div>
|
||
<div class="line"><a name="l12009"></a><span class="lineno">12009</span>  <span class="keyword">const</span> <span class="keyword">auto</span> it = name.find(<span class="keyword">static_cast<</span>typename string_t::value_type<span class="keyword">></span>(0));</div>
|
||
<div class="line"><a name="l12010"></a><span class="lineno">12010</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(it != BasicJsonType::string_t::npos))</div>
|
||
<div class="line"><a name="l12011"></a><span class="lineno">12011</span>  {</div>
|
||
<div class="line"><a name="l12012"></a><span class="lineno">12012</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1out__of__range.html#a3f6d82a6f967c4728a1ec735a7867073">out_of_range::create</a>(409,</div>
|
||
<div class="line"><a name="l12013"></a><span class="lineno">12013</span>  <span class="stringliteral">"BSON key cannot contain code point U+0000 (at byte "</span> + <a class="code" href="namespacenlohmann.html#a6ce645a0b8717757e096a5b5773b7a16">std::to_string</a>(it) + <span class="stringliteral">")"</span>));</div>
|
||
<div class="line"><a name="l12014"></a><span class="lineno">12014</span>  }</div>
|
||
<div class="line"><a name="l12015"></a><span class="lineno">12015</span>  </div>
|
||
<div class="line"><a name="l12016"></a><span class="lineno">12016</span>  <span class="keywordflow">return</span> <span class="comment">/*id*/</span> 1ul + name.size() + <span class="comment">/*zero-terminator*/</span>1u;</div>
|
||
<div class="line"><a name="l12017"></a><span class="lineno">12017</span>  }</div>
|
||
<div class="line"><a name="l12018"></a><span class="lineno">12018</span>  </div>
|
||
<div class="line"><a name="l12022"></a><span class="lineno">12022</span>  <span class="keywordtype">void</span> write_bson_entry_header(<span class="keyword">const</span> string_t& name,</div>
|
||
<div class="line"><a name="l12023"></a><span class="lineno">12023</span>  <span class="keyword">const</span> std::uint8_t element_type)</div>
|
||
<div class="line"><a name="l12024"></a><span class="lineno">12024</span>  {</div>
|
||
<div class="line"><a name="l12025"></a><span class="lineno">12025</span>  oa->write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(element_type)); <span class="comment">// boolean</span></div>
|
||
<div class="line"><a name="l12026"></a><span class="lineno">12026</span>  oa->write_characters(</div>
|
||
<div class="line"><a name="l12027"></a><span class="lineno">12027</span>  <span class="keyword">reinterpret_cast<</span><span class="keyword">const </span>CharType*<span class="keyword">></span>(name.c_str()),</div>
|
||
<div class="line"><a name="l12028"></a><span class="lineno">12028</span>  name.size() + 1u);</div>
|
||
<div class="line"><a name="l12029"></a><span class="lineno">12029</span>  }</div>
|
||
<div class="line"><a name="l12030"></a><span class="lineno">12030</span>  </div>
|
||
<div class="line"><a name="l12034"></a><span class="lineno">12034</span>  <span class="keywordtype">void</span> write_bson_boolean(<span class="keyword">const</span> string_t& name,</div>
|
||
<div class="line"><a name="l12035"></a><span class="lineno">12035</span>  <span class="keyword">const</span> <span class="keywordtype">bool</span> value)</div>
|
||
<div class="line"><a name="l12036"></a><span class="lineno">12036</span>  {</div>
|
||
<div class="line"><a name="l12037"></a><span class="lineno">12037</span>  write_bson_entry_header(name, 0x08);</div>
|
||
<div class="line"><a name="l12038"></a><span class="lineno">12038</span>  oa->write_character(value ? <a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0x01) : <a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0x00));</div>
|
||
<div class="line"><a name="l12039"></a><span class="lineno">12039</span>  }</div>
|
||
<div class="line"><a name="l12040"></a><span class="lineno">12040</span>  </div>
|
||
<div class="line"><a name="l12044"></a><span class="lineno">12044</span>  <span class="keywordtype">void</span> write_bson_double(<span class="keyword">const</span> string_t& name,</div>
|
||
<div class="line"><a name="l12045"></a><span class="lineno">12045</span>  <span class="keyword">const</span> <span class="keywordtype">double</span> value)</div>
|
||
<div class="line"><a name="l12046"></a><span class="lineno">12046</span>  {</div>
|
||
<div class="line"><a name="l12047"></a><span class="lineno">12047</span>  write_bson_entry_header(name, 0x01);</div>
|
||
<div class="line"><a name="l12048"></a><span class="lineno">12048</span>  write_number<double, true>(value);</div>
|
||
<div class="line"><a name="l12049"></a><span class="lineno">12049</span>  }</div>
|
||
<div class="line"><a name="l12050"></a><span class="lineno">12050</span>  </div>
|
||
<div class="line"><a name="l12054"></a><span class="lineno">12054</span>  <span class="keyword">static</span> std::size_t calc_bson_string_size(<span class="keyword">const</span> string_t& value)</div>
|
||
<div class="line"><a name="l12055"></a><span class="lineno">12055</span>  {</div>
|
||
<div class="line"><a name="l12056"></a><span class="lineno">12056</span>  <span class="keywordflow">return</span> <span class="keyword">sizeof</span>(std::int32_t) + value.size() + 1ul;</div>
|
||
<div class="line"><a name="l12057"></a><span class="lineno">12057</span>  }</div>
|
||
<div class="line"><a name="l12058"></a><span class="lineno">12058</span>  </div>
|
||
<div class="line"><a name="l12062"></a><span class="lineno">12062</span>  <span class="keywordtype">void</span> write_bson_string(<span class="keyword">const</span> string_t& name,</div>
|
||
<div class="line"><a name="l12063"></a><span class="lineno">12063</span>  <span class="keyword">const</span> string_t& value)</div>
|
||
<div class="line"><a name="l12064"></a><span class="lineno">12064</span>  {</div>
|
||
<div class="line"><a name="l12065"></a><span class="lineno">12065</span>  write_bson_entry_header(name, 0x02);</div>
|
||
<div class="line"><a name="l12066"></a><span class="lineno">12066</span>  </div>
|
||
<div class="line"><a name="l12067"></a><span class="lineno">12067</span>  write_number<std::int32_t, true>(<span class="keyword">static_cast<</span>std::int32_t<span class="keyword">></span>(value.size() + 1ul));</div>
|
||
<div class="line"><a name="l12068"></a><span class="lineno">12068</span>  oa->write_characters(</div>
|
||
<div class="line"><a name="l12069"></a><span class="lineno">12069</span>  <span class="keyword">reinterpret_cast<</span><span class="keyword">const </span>CharType*<span class="keyword">></span>(value.c_str()),</div>
|
||
<div class="line"><a name="l12070"></a><span class="lineno">12070</span>  value.size() + 1);</div>
|
||
<div class="line"><a name="l12071"></a><span class="lineno">12071</span>  }</div>
|
||
<div class="line"><a name="l12072"></a><span class="lineno">12072</span>  </div>
|
||
<div class="line"><a name="l12076"></a><span class="lineno">12076</span>  <span class="keywordtype">void</span> write_bson_null(<span class="keyword">const</span> string_t& name)</div>
|
||
<div class="line"><a name="l12077"></a><span class="lineno">12077</span>  {</div>
|
||
<div class="line"><a name="l12078"></a><span class="lineno">12078</span>  write_bson_entry_header(name, 0x0A);</div>
|
||
<div class="line"><a name="l12079"></a><span class="lineno">12079</span>  }</div>
|
||
<div class="line"><a name="l12080"></a><span class="lineno">12080</span>  </div>
|
||
<div class="line"><a name="l12084"></a><span class="lineno">12084</span>  <span class="keyword">static</span> std::size_t calc_bson_integer_size(<span class="keyword">const</span> std::int64_t value)</div>
|
||
<div class="line"><a name="l12085"></a><span class="lineno">12085</span>  {</div>
|
||
<div class="line"><a name="l12086"></a><span class="lineno">12086</span>  <span class="keywordflow">return</span> (std::numeric_limits<std::int32_t>::min)() <= value and value <= (std::numeric_limits<std::int32_t>::max)()</div>
|
||
<div class="line"><a name="l12087"></a><span class="lineno">12087</span>  ? <span class="keyword">sizeof</span>(std::int32_t)</div>
|
||
<div class="line"><a name="l12088"></a><span class="lineno">12088</span>  : <span class="keyword">sizeof</span>(std::int64_t);</div>
|
||
<div class="line"><a name="l12089"></a><span class="lineno">12089</span>  }</div>
|
||
<div class="line"><a name="l12090"></a><span class="lineno">12090</span>  </div>
|
||
<div class="line"><a name="l12094"></a><span class="lineno">12094</span>  <span class="keywordtype">void</span> write_bson_integer(<span class="keyword">const</span> string_t& name,</div>
|
||
<div class="line"><a name="l12095"></a><span class="lineno">12095</span>  <span class="keyword">const</span> std::int64_t value)</div>
|
||
<div class="line"><a name="l12096"></a><span class="lineno">12096</span>  {</div>
|
||
<div class="line"><a name="l12097"></a><span class="lineno">12097</span>  <span class="keywordflow">if</span> ((std::numeric_limits<std::int32_t>::min)() <= value and value <= (std::numeric_limits<std::int32_t>::max)())</div>
|
||
<div class="line"><a name="l12098"></a><span class="lineno">12098</span>  {</div>
|
||
<div class="line"><a name="l12099"></a><span class="lineno">12099</span>  write_bson_entry_header(name, 0x10); <span class="comment">// int32</span></div>
|
||
<div class="line"><a name="l12100"></a><span class="lineno">12100</span>  write_number<std::int32_t, true>(<span class="keyword">static_cast<</span>std::int32_t<span class="keyword">></span>(value));</div>
|
||
<div class="line"><a name="l12101"></a><span class="lineno">12101</span>  }</div>
|
||
<div class="line"><a name="l12102"></a><span class="lineno">12102</span>  <span class="keywordflow">else</span></div>
|
||
<div class="line"><a name="l12103"></a><span class="lineno">12103</span>  {</div>
|
||
<div class="line"><a name="l12104"></a><span class="lineno">12104</span>  write_bson_entry_header(name, 0x12); <span class="comment">// int64</span></div>
|
||
<div class="line"><a name="l12105"></a><span class="lineno">12105</span>  write_number<std::int64_t, true>(<span class="keyword">static_cast<</span>std::int64_t<span class="keyword">></span>(value));</div>
|
||
<div class="line"><a name="l12106"></a><span class="lineno">12106</span>  }</div>
|
||
<div class="line"><a name="l12107"></a><span class="lineno">12107</span>  }</div>
|
||
<div class="line"><a name="l12108"></a><span class="lineno">12108</span>  </div>
|
||
<div class="line"><a name="l12112"></a><span class="lineno">12112</span>  <span class="keyword">static</span> constexpr std::size_t calc_bson_unsigned_size(<span class="keyword">const</span> std::uint64_t value) noexcept</div>
|
||
<div class="line"><a name="l12113"></a><span class="lineno">12113</span>  {</div>
|
||
<div class="line"><a name="l12114"></a><span class="lineno">12114</span>  <span class="keywordflow">return</span> (value <= <span class="keyword">static_cast<</span>std::uint64_t<span class="keyword">></span>((std::numeric_limits<std::int32_t>::max)()))</div>
|
||
<div class="line"><a name="l12115"></a><span class="lineno">12115</span>  ? <span class="keyword">sizeof</span>(std::int32_t)</div>
|
||
<div class="line"><a name="l12116"></a><span class="lineno">12116</span>  : <span class="keyword">sizeof</span>(std::int64_t);</div>
|
||
<div class="line"><a name="l12117"></a><span class="lineno">12117</span>  }</div>
|
||
<div class="line"><a name="l12118"></a><span class="lineno">12118</span>  </div>
|
||
<div class="line"><a name="l12122"></a><span class="lineno">12122</span>  <span class="keywordtype">void</span> write_bson_unsigned(<span class="keyword">const</span> string_t& name,</div>
|
||
<div class="line"><a name="l12123"></a><span class="lineno">12123</span>  <span class="keyword">const</span> std::uint64_t value)</div>
|
||
<div class="line"><a name="l12124"></a><span class="lineno">12124</span>  {</div>
|
||
<div class="line"><a name="l12125"></a><span class="lineno">12125</span>  <span class="keywordflow">if</span> (value <= <span class="keyword">static_cast<</span>std::uint64_t<span class="keyword">></span>((std::numeric_limits<std::int32_t>::max)()))</div>
|
||
<div class="line"><a name="l12126"></a><span class="lineno">12126</span>  {</div>
|
||
<div class="line"><a name="l12127"></a><span class="lineno">12127</span>  write_bson_entry_header(name, 0x10 <span class="comment">/* int32 */</span>);</div>
|
||
<div class="line"><a name="l12128"></a><span class="lineno">12128</span>  write_number<std::int32_t, true>(<span class="keyword">static_cast<</span>std::int32_t<span class="keyword">></span>(value));</div>
|
||
<div class="line"><a name="l12129"></a><span class="lineno">12129</span>  }</div>
|
||
<div class="line"><a name="l12130"></a><span class="lineno">12130</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (value <= <span class="keyword">static_cast<</span>std::uint64_t<span class="keyword">></span>((std::numeric_limits<std::int64_t>::max)()))</div>
|
||
<div class="line"><a name="l12131"></a><span class="lineno">12131</span>  {</div>
|
||
<div class="line"><a name="l12132"></a><span class="lineno">12132</span>  write_bson_entry_header(name, 0x12 <span class="comment">/* int64 */</span>);</div>
|
||
<div class="line"><a name="l12133"></a><span class="lineno">12133</span>  write_number<std::int64_t, true>(<span class="keyword">static_cast<</span>std::int64_t<span class="keyword">></span>(value));</div>
|
||
<div class="line"><a name="l12134"></a><span class="lineno">12134</span>  }</div>
|
||
<div class="line"><a name="l12135"></a><span class="lineno">12135</span>  <span class="keywordflow">else</span></div>
|
||
<div class="line"><a name="l12136"></a><span class="lineno">12136</span>  {</div>
|
||
<div class="line"><a name="l12137"></a><span class="lineno">12137</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1out__of__range.html#a3f6d82a6f967c4728a1ec735a7867073">out_of_range::create</a>(407, <span class="stringliteral">"integer number "</span> + <a class="code" href="namespacenlohmann.html#a6ce645a0b8717757e096a5b5773b7a16">std::to_string</a>(value) + <span class="stringliteral">" cannot be represented by BSON as it does not fit int64"</span>));</div>
|
||
<div class="line"><a name="l12138"></a><span class="lineno">12138</span>  }</div>
|
||
<div class="line"><a name="l12139"></a><span class="lineno">12139</span>  }</div>
|
||
<div class="line"><a name="l12140"></a><span class="lineno">12140</span>  </div>
|
||
<div class="line"><a name="l12144"></a><span class="lineno">12144</span>  <span class="keywordtype">void</span> write_bson_object_entry(<span class="keyword">const</span> string_t& name,</div>
|
||
<div class="line"><a name="l12145"></a><span class="lineno">12145</span>  <span class="keyword">const</span> <span class="keyword">typename</span> BasicJsonType::object_t& value)</div>
|
||
<div class="line"><a name="l12146"></a><span class="lineno">12146</span>  {</div>
|
||
<div class="line"><a name="l12147"></a><span class="lineno">12147</span>  write_bson_entry_header(name, 0x03); <span class="comment">// object</span></div>
|
||
<div class="line"><a name="l12148"></a><span class="lineno">12148</span>  write_bson_object(value);</div>
|
||
<div class="line"><a name="l12149"></a><span class="lineno">12149</span>  }</div>
|
||
<div class="line"><a name="l12150"></a><span class="lineno">12150</span>  </div>
|
||
<div class="line"><a name="l12154"></a><span class="lineno">12154</span>  <span class="keyword">static</span> std::size_t calc_bson_array_size(<span class="keyword">const</span> <span class="keyword">typename</span> BasicJsonType::array_t& value)</div>
|
||
<div class="line"><a name="l12155"></a><span class="lineno">12155</span>  {</div>
|
||
<div class="line"><a name="l12156"></a><span class="lineno">12156</span>  std::size_t array_index = 0ul;</div>
|
||
<div class="line"><a name="l12157"></a><span class="lineno">12157</span>  </div>
|
||
<div class="line"><a name="l12158"></a><span class="lineno">12158</span>  <span class="keyword">const</span> std::size_t embedded_document_size = std::accumulate(std::begin(value), std::end(value), 0ul, [&array_index](std::size_t result, <span class="keyword">const</span> <span class="keyword">typename</span> BasicJsonType::array_t::value_type & el)</div>
|
||
<div class="line"><a name="l12159"></a><span class="lineno">12159</span>  {</div>
|
||
<div class="line"><a name="l12160"></a><span class="lineno">12160</span>  <span class="keywordflow">return</span> result + calc_bson_element_size(<a class="code" href="namespacenlohmann.html#a6ce645a0b8717757e096a5b5773b7a16">std::to_string</a>(array_index++), el);</div>
|
||
<div class="line"><a name="l12161"></a><span class="lineno">12161</span>  });</div>
|
||
<div class="line"><a name="l12162"></a><span class="lineno">12162</span>  </div>
|
||
<div class="line"><a name="l12163"></a><span class="lineno">12163</span>  <span class="keywordflow">return</span> <span class="keyword">sizeof</span>(std::int32_t) + embedded_document_size + 1ul;</div>
|
||
<div class="line"><a name="l12164"></a><span class="lineno">12164</span>  }</div>
|
||
<div class="line"><a name="l12165"></a><span class="lineno">12165</span>  </div>
|
||
<div class="line"><a name="l12169"></a><span class="lineno">12169</span>  <span class="keywordtype">void</span> write_bson_array(<span class="keyword">const</span> string_t& name,</div>
|
||
<div class="line"><a name="l12170"></a><span class="lineno">12170</span>  <span class="keyword">const</span> <span class="keyword">typename</span> BasicJsonType::array_t& value)</div>
|
||
<div class="line"><a name="l12171"></a><span class="lineno">12171</span>  {</div>
|
||
<div class="line"><a name="l12172"></a><span class="lineno">12172</span>  write_bson_entry_header(name, 0x04); <span class="comment">// array</span></div>
|
||
<div class="line"><a name="l12173"></a><span class="lineno">12173</span>  write_number<std::int32_t, true>(<span class="keyword">static_cast<</span>std::int32_t<span class="keyword">></span>(calc_bson_array_size(value)));</div>
|
||
<div class="line"><a name="l12174"></a><span class="lineno">12174</span>  </div>
|
||
<div class="line"><a name="l12175"></a><span class="lineno">12175</span>  std::size_t array_index = 0ul;</div>
|
||
<div class="line"><a name="l12176"></a><span class="lineno">12176</span>  </div>
|
||
<div class="line"><a name="l12177"></a><span class="lineno">12177</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>& el : value)</div>
|
||
<div class="line"><a name="l12178"></a><span class="lineno">12178</span>  {</div>
|
||
<div class="line"><a name="l12179"></a><span class="lineno">12179</span>  write_bson_element(<a class="code" href="namespacenlohmann.html#a6ce645a0b8717757e096a5b5773b7a16">std::to_string</a>(array_index++), el);</div>
|
||
<div class="line"><a name="l12180"></a><span class="lineno">12180</span>  }</div>
|
||
<div class="line"><a name="l12181"></a><span class="lineno">12181</span>  </div>
|
||
<div class="line"><a name="l12182"></a><span class="lineno">12182</span>  oa->write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0x00));</div>
|
||
<div class="line"><a name="l12183"></a><span class="lineno">12183</span>  }</div>
|
||
<div class="line"><a name="l12184"></a><span class="lineno">12184</span>  </div>
|
||
<div class="line"><a name="l12189"></a><span class="lineno">12189</span>  <span class="keyword">static</span> std::size_t calc_bson_element_size(<span class="keyword">const</span> string_t& name,</div>
|
||
<div class="line"><a name="l12190"></a><span class="lineno">12190</span>  <span class="keyword">const</span> BasicJsonType& j)</div>
|
||
<div class="line"><a name="l12191"></a><span class="lineno">12191</span>  {</div>
|
||
<div class="line"><a name="l12192"></a><span class="lineno">12192</span>  <span class="keyword">const</span> <span class="keyword">auto</span> header_size = calc_bson_entry_header_size(name);</div>
|
||
<div class="line"><a name="l12193"></a><span class="lineno">12193</span>  <span class="keywordflow">switch</span> (j.type())</div>
|
||
<div class="line"><a name="l12194"></a><span class="lineno">12194</span>  {</div>
|
||
<div class="line"><a name="l12195"></a><span class="lineno">12195</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>:</div>
|
||
<div class="line"><a name="l12196"></a><span class="lineno">12196</span>  <span class="keywordflow">return</span> header_size + calc_bson_object_size(*j.m_value.object);</div>
|
||
<div class="line"><a name="l12197"></a><span class="lineno">12197</span>  </div>
|
||
<div class="line"><a name="l12198"></a><span class="lineno">12198</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>:</div>
|
||
<div class="line"><a name="l12199"></a><span class="lineno">12199</span>  <span class="keywordflow">return</span> header_size + calc_bson_array_size(*j.m_value.array);</div>
|
||
<div class="line"><a name="l12200"></a><span class="lineno">12200</span>  </div>
|
||
<div class="line"><a name="l12201"></a><span class="lineno">12201</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a84e2c64f38f78ba3ea5c905ab5a2da27">value_t::boolean</a>:</div>
|
||
<div class="line"><a name="l12202"></a><span class="lineno">12202</span>  <span class="keywordflow">return</span> header_size + 1ul;</div>
|
||
<div class="line"><a name="l12203"></a><span class="lineno">12203</span>  </div>
|
||
<div class="line"><a name="l12204"></a><span class="lineno">12204</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ad9966ecb59667235a57b4b999a649eef">value_t::number_float</a>:</div>
|
||
<div class="line"><a name="l12205"></a><span class="lineno">12205</span>  <span class="keywordflow">return</span> header_size + 8ul;</div>
|
||
<div class="line"><a name="l12206"></a><span class="lineno">12206</span>  </div>
|
||
<div class="line"><a name="l12207"></a><span class="lineno">12207</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a5763da164f8659d94a56e29df64b4bcc">value_t::number_integer</a>:</div>
|
||
<div class="line"><a name="l12208"></a><span class="lineno">12208</span>  <span class="keywordflow">return</span> header_size + calc_bson_integer_size(j.m_value.number_integer);</div>
|
||
<div class="line"><a name="l12209"></a><span class="lineno">12209</span>  </div>
|
||
<div class="line"><a name="l12210"></a><span class="lineno">12210</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985adce7cc8ec29055c4158828921f2f265e">value_t::number_unsigned</a>:</div>
|
||
<div class="line"><a name="l12211"></a><span class="lineno">12211</span>  <span class="keywordflow">return</span> header_size + calc_bson_unsigned_size(j.m_value.number_unsigned);</div>
|
||
<div class="line"><a name="l12212"></a><span class="lineno">12212</span>  </div>
|
||
<div class="line"><a name="l12213"></a><span class="lineno">12213</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ab45cffe084dd3d20d928bee85e7b0f21">value_t::string</a>:</div>
|
||
<div class="line"><a name="l12214"></a><span class="lineno">12214</span>  <span class="keywordflow">return</span> header_size + calc_bson_string_size(*j.m_value.string);</div>
|
||
<div class="line"><a name="l12215"></a><span class="lineno">12215</span>  </div>
|
||
<div class="line"><a name="l12216"></a><span class="lineno">12216</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a37a6259cc0c1dae299a7866489dff0bd">value_t::null</a>:</div>
|
||
<div class="line"><a name="l12217"></a><span class="lineno">12217</span>  <span class="keywordflow">return</span> header_size + 0ul;</div>
|
||
<div class="line"><a name="l12218"></a><span class="lineno">12218</span>  </div>
|
||
<div class="line"><a name="l12219"></a><span class="lineno">12219</span>  <span class="comment">// LCOV_EXCL_START</span></div>
|
||
<div class="line"><a name="l12220"></a><span class="lineno">12220</span>  <span class="keywordflow">default</span>:</div>
|
||
<div class="line"><a name="l12221"></a><span class="lineno">12221</span>  assert(<span class="keyword">false</span>);</div>
|
||
<div class="line"><a name="l12222"></a><span class="lineno">12222</span>  <span class="keywordflow">return</span> 0ul;</div>
|
||
<div class="line"><a name="l12223"></a><span class="lineno">12223</span>  <span class="comment">// LCOV_EXCL_STOP</span></div>
|
||
<div class="line"><a name="l12224"></a><span class="lineno">12224</span>  }</div>
|
||
<div class="line"><a name="l12225"></a><span class="lineno">12225</span>  }</div>
|
||
<div class="line"><a name="l12226"></a><span class="lineno">12226</span>  </div>
|
||
<div class="line"><a name="l12234"></a><span class="lineno">12234</span>  <span class="keywordtype">void</span> write_bson_element(<span class="keyword">const</span> string_t& name,</div>
|
||
<div class="line"><a name="l12235"></a><span class="lineno">12235</span>  <span class="keyword">const</span> BasicJsonType& j)</div>
|
||
<div class="line"><a name="l12236"></a><span class="lineno">12236</span>  {</div>
|
||
<div class="line"><a name="l12237"></a><span class="lineno">12237</span>  <span class="keywordflow">switch</span> (j.type())</div>
|
||
<div class="line"><a name="l12238"></a><span class="lineno">12238</span>  {</div>
|
||
<div class="line"><a name="l12239"></a><span class="lineno">12239</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>:</div>
|
||
<div class="line"><a name="l12240"></a><span class="lineno">12240</span>  <span class="keywordflow">return</span> write_bson_object_entry(name, *j.m_value.object);</div>
|
||
<div class="line"><a name="l12241"></a><span class="lineno">12241</span>  </div>
|
||
<div class="line"><a name="l12242"></a><span class="lineno">12242</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>:</div>
|
||
<div class="line"><a name="l12243"></a><span class="lineno">12243</span>  <span class="keywordflow">return</span> write_bson_array(name, *j.m_value.array);</div>
|
||
<div class="line"><a name="l12244"></a><span class="lineno">12244</span>  </div>
|
||
<div class="line"><a name="l12245"></a><span class="lineno">12245</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a84e2c64f38f78ba3ea5c905ab5a2da27">value_t::boolean</a>:</div>
|
||
<div class="line"><a name="l12246"></a><span class="lineno">12246</span>  <span class="keywordflow">return</span> write_bson_boolean(name, j.m_value.boolean);</div>
|
||
<div class="line"><a name="l12247"></a><span class="lineno">12247</span>  </div>
|
||
<div class="line"><a name="l12248"></a><span class="lineno">12248</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ad9966ecb59667235a57b4b999a649eef">value_t::number_float</a>:</div>
|
||
<div class="line"><a name="l12249"></a><span class="lineno">12249</span>  <span class="keywordflow">return</span> write_bson_double(name, j.m_value.number_float);</div>
|
||
<div class="line"><a name="l12250"></a><span class="lineno">12250</span>  </div>
|
||
<div class="line"><a name="l12251"></a><span class="lineno">12251</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a5763da164f8659d94a56e29df64b4bcc">value_t::number_integer</a>:</div>
|
||
<div class="line"><a name="l12252"></a><span class="lineno">12252</span>  <span class="keywordflow">return</span> write_bson_integer(name, j.m_value.number_integer);</div>
|
||
<div class="line"><a name="l12253"></a><span class="lineno">12253</span>  </div>
|
||
<div class="line"><a name="l12254"></a><span class="lineno">12254</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985adce7cc8ec29055c4158828921f2f265e">value_t::number_unsigned</a>:</div>
|
||
<div class="line"><a name="l12255"></a><span class="lineno">12255</span>  <span class="keywordflow">return</span> write_bson_unsigned(name, j.m_value.number_unsigned);</div>
|
||
<div class="line"><a name="l12256"></a><span class="lineno">12256</span>  </div>
|
||
<div class="line"><a name="l12257"></a><span class="lineno">12257</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ab45cffe084dd3d20d928bee85e7b0f21">value_t::string</a>:</div>
|
||
<div class="line"><a name="l12258"></a><span class="lineno">12258</span>  <span class="keywordflow">return</span> write_bson_string(name, *j.m_value.string);</div>
|
||
<div class="line"><a name="l12259"></a><span class="lineno">12259</span>  </div>
|
||
<div class="line"><a name="l12260"></a><span class="lineno">12260</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a37a6259cc0c1dae299a7866489dff0bd">value_t::null</a>:</div>
|
||
<div class="line"><a name="l12261"></a><span class="lineno">12261</span>  <span class="keywordflow">return</span> write_bson_null(name);</div>
|
||
<div class="line"><a name="l12262"></a><span class="lineno">12262</span>  </div>
|
||
<div class="line"><a name="l12263"></a><span class="lineno">12263</span>  <span class="comment">// LCOV_EXCL_START</span></div>
|
||
<div class="line"><a name="l12264"></a><span class="lineno">12264</span>  <span class="keywordflow">default</span>:</div>
|
||
<div class="line"><a name="l12265"></a><span class="lineno">12265</span>  assert(<span class="keyword">false</span>);</div>
|
||
<div class="line"><a name="l12266"></a><span class="lineno">12266</span>  <span class="keywordflow">return</span>;</div>
|
||
<div class="line"><a name="l12267"></a><span class="lineno">12267</span>  <span class="comment">// LCOV_EXCL_STOP</span></div>
|
||
<div class="line"><a name="l12268"></a><span class="lineno">12268</span>  }</div>
|
||
<div class="line"><a name="l12269"></a><span class="lineno">12269</span>  }</div>
|
||
<div class="line"><a name="l12270"></a><span class="lineno">12270</span>  </div>
|
||
<div class="line"><a name="l12277"></a><span class="lineno">12277</span>  <span class="keyword">static</span> std::size_t calc_bson_object_size(<span class="keyword">const</span> <span class="keyword">typename</span> BasicJsonType::object_t& value)</div>
|
||
<div class="line"><a name="l12278"></a><span class="lineno">12278</span>  {</div>
|
||
<div class="line"><a name="l12279"></a><span class="lineno">12279</span>  std::size_t document_size = std::accumulate(value.begin(), value.end(), 0ul,</div>
|
||
<div class="line"><a name="l12280"></a><span class="lineno">12280</span>  [](<span class="keywordtype">size_t</span> result, <span class="keyword">const</span> <span class="keyword">typename</span> BasicJsonType::object_t::value_type & el)</div>
|
||
<div class="line"><a name="l12281"></a><span class="lineno">12281</span>  {</div>
|
||
<div class="line"><a name="l12282"></a><span class="lineno">12282</span>  return result += calc_bson_element_size(el.first, el.second);</div>
|
||
<div class="line"><a name="l12283"></a><span class="lineno">12283</span>  });</div>
|
||
<div class="line"><a name="l12284"></a><span class="lineno">12284</span>  </div>
|
||
<div class="line"><a name="l12285"></a><span class="lineno">12285</span>  <span class="keywordflow">return</span> <span class="keyword">sizeof</span>(std::int32_t) + document_size + 1ul;</div>
|
||
<div class="line"><a name="l12286"></a><span class="lineno">12286</span>  }</div>
|
||
<div class="line"><a name="l12287"></a><span class="lineno">12287</span>  </div>
|
||
<div class="line"><a name="l12292"></a><span class="lineno">12292</span>  <span class="keywordtype">void</span> write_bson_object(<span class="keyword">const</span> <span class="keyword">typename</span> BasicJsonType::object_t& value)</div>
|
||
<div class="line"><a name="l12293"></a><span class="lineno">12293</span>  {</div>
|
||
<div class="line"><a name="l12294"></a><span class="lineno">12294</span>  write_number<std::int32_t, true>(<span class="keyword">static_cast<</span>std::int32_t<span class="keyword">></span>(calc_bson_object_size(value)));</div>
|
||
<div class="line"><a name="l12295"></a><span class="lineno">12295</span>  </div>
|
||
<div class="line"><a name="l12296"></a><span class="lineno">12296</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>& el : value)</div>
|
||
<div class="line"><a name="l12297"></a><span class="lineno">12297</span>  {</div>
|
||
<div class="line"><a name="l12298"></a><span class="lineno">12298</span>  write_bson_element(el.first, el.second);</div>
|
||
<div class="line"><a name="l12299"></a><span class="lineno">12299</span>  }</div>
|
||
<div class="line"><a name="l12300"></a><span class="lineno">12300</span>  </div>
|
||
<div class="line"><a name="l12301"></a><span class="lineno">12301</span>  oa->write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0x00));</div>
|
||
<div class="line"><a name="l12302"></a><span class="lineno">12302</span>  }</div>
|
||
<div class="line"><a name="l12303"></a><span class="lineno">12303</span>  </div>
|
||
<div class="line"><a name="l12305"></a><span class="lineno">12305</span>  <span class="comment">// CBOR //</span></div>
|
||
<div class="line"><a name="l12307"></a><span class="lineno">12307</span> <span class="comment"></span> </div>
|
||
<div class="line"><a name="l12308"></a><span class="lineno">12308</span>  <span class="keyword">static</span> constexpr CharType get_cbor_float_prefix(<span class="keywordtype">float</span> <span class="comment">/*unused*/</span>)</div>
|
||
<div class="line"><a name="l12309"></a><span class="lineno">12309</span>  {</div>
|
||
<div class="line"><a name="l12310"></a><span class="lineno">12310</span>  <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0xFA); <span class="comment">// Single-Precision Float</span></div>
|
||
<div class="line"><a name="l12311"></a><span class="lineno">12311</span>  }</div>
|
||
<div class="line"><a name="l12312"></a><span class="lineno">12312</span>  </div>
|
||
<div class="line"><a name="l12313"></a><span class="lineno">12313</span>  <span class="keyword">static</span> constexpr CharType get_cbor_float_prefix(<span class="keywordtype">double</span> <span class="comment">/*unused*/</span>)</div>
|
||
<div class="line"><a name="l12314"></a><span class="lineno">12314</span>  {</div>
|
||
<div class="line"><a name="l12315"></a><span class="lineno">12315</span>  <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0xFB); <span class="comment">// Double-Precision Float</span></div>
|
||
<div class="line"><a name="l12316"></a><span class="lineno">12316</span>  }</div>
|
||
<div class="line"><a name="l12317"></a><span class="lineno">12317</span>  </div>
|
||
<div class="line"><a name="l12319"></a><span class="lineno">12319</span>  <span class="comment">// MsgPack //</span></div>
|
||
<div class="line"><a name="l12321"></a><span class="lineno">12321</span> <span class="comment"></span> </div>
|
||
<div class="line"><a name="l12322"></a><span class="lineno">12322</span>  <span class="keyword">static</span> constexpr CharType get_msgpack_float_prefix(<span class="keywordtype">float</span> <span class="comment">/*unused*/</span>)</div>
|
||
<div class="line"><a name="l12323"></a><span class="lineno">12323</span>  {</div>
|
||
<div class="line"><a name="l12324"></a><span class="lineno">12324</span>  <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0xCA); <span class="comment">// float 32</span></div>
|
||
<div class="line"><a name="l12325"></a><span class="lineno">12325</span>  }</div>
|
||
<div class="line"><a name="l12326"></a><span class="lineno">12326</span>  </div>
|
||
<div class="line"><a name="l12327"></a><span class="lineno">12327</span>  <span class="keyword">static</span> constexpr CharType get_msgpack_float_prefix(<span class="keywordtype">double</span> <span class="comment">/*unused*/</span>)</div>
|
||
<div class="line"><a name="l12328"></a><span class="lineno">12328</span>  {</div>
|
||
<div class="line"><a name="l12329"></a><span class="lineno">12329</span>  <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(0xCB); <span class="comment">// float 64</span></div>
|
||
<div class="line"><a name="l12330"></a><span class="lineno">12330</span>  }</div>
|
||
<div class="line"><a name="l12331"></a><span class="lineno">12331</span>  </div>
|
||
<div class="line"><a name="l12333"></a><span class="lineno">12333</span>  <span class="comment">// UBJSON //</span></div>
|
||
<div class="line"><a name="l12335"></a><span class="lineno">12335</span> <span class="comment"></span> </div>
|
||
<div class="line"><a name="l12336"></a><span class="lineno">12336</span>  <span class="comment">// UBJSON: write number (floating point)</span></div>
|
||
<div class="line"><a name="l12337"></a><span class="lineno">12337</span>  <span class="keyword">template</span><<span class="keyword">typename</span> NumberType, <span class="keyword">typename</span> std::enable_if<</div>
|
||
<div class="line"><a name="l12338"></a><span class="lineno">12338</span>  std::is_floating_point<NumberType>::value, <span class="keywordtype">int</span>>::type = 0></div>
|
||
<div class="line"><a name="l12339"></a><span class="lineno">12339</span>  <span class="keywordtype">void</span> write_number_with_ubjson_prefix(<span class="keyword">const</span> NumberType n,</div>
|
||
<div class="line"><a name="l12340"></a><span class="lineno">12340</span>  <span class="keyword">const</span> <span class="keywordtype">bool</span> add_prefix)</div>
|
||
<div class="line"><a name="l12341"></a><span class="lineno">12341</span>  {</div>
|
||
<div class="line"><a name="l12342"></a><span class="lineno">12342</span>  <span class="keywordflow">if</span> (add_prefix)</div>
|
||
<div class="line"><a name="l12343"></a><span class="lineno">12343</span>  {</div>
|
||
<div class="line"><a name="l12344"></a><span class="lineno">12344</span>  oa->write_character(get_ubjson_float_prefix(n));</div>
|
||
<div class="line"><a name="l12345"></a><span class="lineno">12345</span>  }</div>
|
||
<div class="line"><a name="l12346"></a><span class="lineno">12346</span>  write_number(n);</div>
|
||
<div class="line"><a name="l12347"></a><span class="lineno">12347</span>  }</div>
|
||
<div class="line"><a name="l12348"></a><span class="lineno">12348</span>  </div>
|
||
<div class="line"><a name="l12349"></a><span class="lineno">12349</span>  <span class="comment">// UBJSON: write number (unsigned integer)</span></div>
|
||
<div class="line"><a name="l12350"></a><span class="lineno">12350</span>  <span class="keyword">template</span><<span class="keyword">typename</span> NumberType, <span class="keyword">typename</span> std::enable_if<</div>
|
||
<div class="line"><a name="l12351"></a><span class="lineno">12351</span>  std::is_unsigned<NumberType>::value, <span class="keywordtype">int</span>>::type = 0></div>
|
||
<div class="line"><a name="l12352"></a><span class="lineno">12352</span>  <span class="keywordtype">void</span> write_number_with_ubjson_prefix(<span class="keyword">const</span> NumberType n,</div>
|
||
<div class="line"><a name="l12353"></a><span class="lineno">12353</span>  <span class="keyword">const</span> <span class="keywordtype">bool</span> add_prefix)</div>
|
||
<div class="line"><a name="l12354"></a><span class="lineno">12354</span>  {</div>
|
||
<div class="line"><a name="l12355"></a><span class="lineno">12355</span>  <span class="keywordflow">if</span> (n <= <span class="keyword">static_cast<</span>std::uint64_t<span class="keyword">></span>((std::numeric_limits<std::int8_t>::max)()))</div>
|
||
<div class="line"><a name="l12356"></a><span class="lineno">12356</span>  {</div>
|
||
<div class="line"><a name="l12357"></a><span class="lineno">12357</span>  <span class="keywordflow">if</span> (add_prefix)</div>
|
||
<div class="line"><a name="l12358"></a><span class="lineno">12358</span>  {</div>
|
||
<div class="line"><a name="l12359"></a><span class="lineno">12359</span>  oa->write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(<span class="charliteral">'i'</span>)); <span class="comment">// int8</span></div>
|
||
<div class="line"><a name="l12360"></a><span class="lineno">12360</span>  }</div>
|
||
<div class="line"><a name="l12361"></a><span class="lineno">12361</span>  write_number(<span class="keyword">static_cast<</span>std::uint8_t<span class="keyword">></span>(n));</div>
|
||
<div class="line"><a name="l12362"></a><span class="lineno">12362</span>  }</div>
|
||
<div class="line"><a name="l12363"></a><span class="lineno">12363</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (n <= (std::numeric_limits<std::uint8_t>::max)())</div>
|
||
<div class="line"><a name="l12364"></a><span class="lineno">12364</span>  {</div>
|
||
<div class="line"><a name="l12365"></a><span class="lineno">12365</span>  <span class="keywordflow">if</span> (add_prefix)</div>
|
||
<div class="line"><a name="l12366"></a><span class="lineno">12366</span>  {</div>
|
||
<div class="line"><a name="l12367"></a><span class="lineno">12367</span>  oa->write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(<span class="charliteral">'U'</span>)); <span class="comment">// uint8</span></div>
|
||
<div class="line"><a name="l12368"></a><span class="lineno">12368</span>  }</div>
|
||
<div class="line"><a name="l12369"></a><span class="lineno">12369</span>  write_number(<span class="keyword">static_cast<</span>std::uint8_t<span class="keyword">></span>(n));</div>
|
||
<div class="line"><a name="l12370"></a><span class="lineno">12370</span>  }</div>
|
||
<div class="line"><a name="l12371"></a><span class="lineno">12371</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (n <= <span class="keyword">static_cast<</span>std::uint64_t<span class="keyword">></span>((std::numeric_limits<std::int16_t>::max)()))</div>
|
||
<div class="line"><a name="l12372"></a><span class="lineno">12372</span>  {</div>
|
||
<div class="line"><a name="l12373"></a><span class="lineno">12373</span>  <span class="keywordflow">if</span> (add_prefix)</div>
|
||
<div class="line"><a name="l12374"></a><span class="lineno">12374</span>  {</div>
|
||
<div class="line"><a name="l12375"></a><span class="lineno">12375</span>  oa->write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(<span class="charliteral">'I'</span>)); <span class="comment">// int16</span></div>
|
||
<div class="line"><a name="l12376"></a><span class="lineno">12376</span>  }</div>
|
||
<div class="line"><a name="l12377"></a><span class="lineno">12377</span>  write_number(<span class="keyword">static_cast<</span>std::int16_t<span class="keyword">></span>(n));</div>
|
||
<div class="line"><a name="l12378"></a><span class="lineno">12378</span>  }</div>
|
||
<div class="line"><a name="l12379"></a><span class="lineno">12379</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (n <= <span class="keyword">static_cast<</span>std::uint64_t<span class="keyword">></span>((std::numeric_limits<std::int32_t>::max)()))</div>
|
||
<div class="line"><a name="l12380"></a><span class="lineno">12380</span>  {</div>
|
||
<div class="line"><a name="l12381"></a><span class="lineno">12381</span>  <span class="keywordflow">if</span> (add_prefix)</div>
|
||
<div class="line"><a name="l12382"></a><span class="lineno">12382</span>  {</div>
|
||
<div class="line"><a name="l12383"></a><span class="lineno">12383</span>  oa->write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(<span class="charliteral">'l'</span>)); <span class="comment">// int32</span></div>
|
||
<div class="line"><a name="l12384"></a><span class="lineno">12384</span>  }</div>
|
||
<div class="line"><a name="l12385"></a><span class="lineno">12385</span>  write_number(<span class="keyword">static_cast<</span>std::int32_t<span class="keyword">></span>(n));</div>
|
||
<div class="line"><a name="l12386"></a><span class="lineno">12386</span>  }</div>
|
||
<div class="line"><a name="l12387"></a><span class="lineno">12387</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (n <= <span class="keyword">static_cast<</span>std::uint64_t<span class="keyword">></span>((std::numeric_limits<std::int64_t>::max)()))</div>
|
||
<div class="line"><a name="l12388"></a><span class="lineno">12388</span>  {</div>
|
||
<div class="line"><a name="l12389"></a><span class="lineno">12389</span>  <span class="keywordflow">if</span> (add_prefix)</div>
|
||
<div class="line"><a name="l12390"></a><span class="lineno">12390</span>  {</div>
|
||
<div class="line"><a name="l12391"></a><span class="lineno">12391</span>  oa->write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(<span class="charliteral">'L'</span>)); <span class="comment">// int64</span></div>
|
||
<div class="line"><a name="l12392"></a><span class="lineno">12392</span>  }</div>
|
||
<div class="line"><a name="l12393"></a><span class="lineno">12393</span>  write_number(<span class="keyword">static_cast<</span>std::int64_t<span class="keyword">></span>(n));</div>
|
||
<div class="line"><a name="l12394"></a><span class="lineno">12394</span>  }</div>
|
||
<div class="line"><a name="l12395"></a><span class="lineno">12395</span>  <span class="keywordflow">else</span></div>
|
||
<div class="line"><a name="l12396"></a><span class="lineno">12396</span>  {</div>
|
||
<div class="line"><a name="l12397"></a><span class="lineno">12397</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1out__of__range.html#a3f6d82a6f967c4728a1ec735a7867073">out_of_range::create</a>(407, <span class="stringliteral">"integer number "</span> + <a class="code" href="namespacenlohmann.html#a6ce645a0b8717757e096a5b5773b7a16">std::to_string</a>(n) + <span class="stringliteral">" cannot be represented by UBJSON as it does not fit int64"</span>));</div>
|
||
<div class="line"><a name="l12398"></a><span class="lineno">12398</span>  }</div>
|
||
<div class="line"><a name="l12399"></a><span class="lineno">12399</span>  }</div>
|
||
<div class="line"><a name="l12400"></a><span class="lineno">12400</span>  </div>
|
||
<div class="line"><a name="l12401"></a><span class="lineno">12401</span>  <span class="comment">// UBJSON: write number (signed integer)</span></div>
|
||
<div class="line"><a name="l12402"></a><span class="lineno">12402</span>  <span class="keyword">template</span><<span class="keyword">typename</span> NumberType, <span class="keyword">typename</span> std::enable_if<</div>
|
||
<div class="line"><a name="l12403"></a><span class="lineno">12403</span>  std::is_signed<NumberType>::value and</div>
|
||
<div class="line"><a name="l12404"></a><span class="lineno">12404</span>  not std::is_floating_point<NumberType>::value, <span class="keywordtype">int</span>>::type = 0></div>
|
||
<div class="line"><a name="l12405"></a><span class="lineno">12405</span>  <span class="keywordtype">void</span> write_number_with_ubjson_prefix(<span class="keyword">const</span> NumberType n,</div>
|
||
<div class="line"><a name="l12406"></a><span class="lineno">12406</span>  <span class="keyword">const</span> <span class="keywordtype">bool</span> add_prefix)</div>
|
||
<div class="line"><a name="l12407"></a><span class="lineno">12407</span>  {</div>
|
||
<div class="line"><a name="l12408"></a><span class="lineno">12408</span>  <span class="keywordflow">if</span> ((std::numeric_limits<std::int8_t>::min)() <= n and n <= (std::numeric_limits<std::int8_t>::max)())</div>
|
||
<div class="line"><a name="l12409"></a><span class="lineno">12409</span>  {</div>
|
||
<div class="line"><a name="l12410"></a><span class="lineno">12410</span>  <span class="keywordflow">if</span> (add_prefix)</div>
|
||
<div class="line"><a name="l12411"></a><span class="lineno">12411</span>  {</div>
|
||
<div class="line"><a name="l12412"></a><span class="lineno">12412</span>  oa->write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(<span class="charliteral">'i'</span>)); <span class="comment">// int8</span></div>
|
||
<div class="line"><a name="l12413"></a><span class="lineno">12413</span>  }</div>
|
||
<div class="line"><a name="l12414"></a><span class="lineno">12414</span>  write_number(<span class="keyword">static_cast<</span>std::int8_t<span class="keyword">></span>(n));</div>
|
||
<div class="line"><a name="l12415"></a><span class="lineno">12415</span>  }</div>
|
||
<div class="line"><a name="l12416"></a><span class="lineno">12416</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">static_cast<</span>std::int64_t<span class="keyword">></span>((std::numeric_limits<std::uint8_t>::min)()) <= n and n <= <span class="keyword">static_cast<</span>std::int64_t<span class="keyword">></span>((std::numeric_limits<std::uint8_t>::max)()))</div>
|
||
<div class="line"><a name="l12417"></a><span class="lineno">12417</span>  {</div>
|
||
<div class="line"><a name="l12418"></a><span class="lineno">12418</span>  <span class="keywordflow">if</span> (add_prefix)</div>
|
||
<div class="line"><a name="l12419"></a><span class="lineno">12419</span>  {</div>
|
||
<div class="line"><a name="l12420"></a><span class="lineno">12420</span>  oa->write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(<span class="charliteral">'U'</span>)); <span class="comment">// uint8</span></div>
|
||
<div class="line"><a name="l12421"></a><span class="lineno">12421</span>  }</div>
|
||
<div class="line"><a name="l12422"></a><span class="lineno">12422</span>  write_number(<span class="keyword">static_cast<</span>std::uint8_t<span class="keyword">></span>(n));</div>
|
||
<div class="line"><a name="l12423"></a><span class="lineno">12423</span>  }</div>
|
||
<div class="line"><a name="l12424"></a><span class="lineno">12424</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> ((std::numeric_limits<std::int16_t>::min)() <= n and n <= (std::numeric_limits<std::int16_t>::max)())</div>
|
||
<div class="line"><a name="l12425"></a><span class="lineno">12425</span>  {</div>
|
||
<div class="line"><a name="l12426"></a><span class="lineno">12426</span>  <span class="keywordflow">if</span> (add_prefix)</div>
|
||
<div class="line"><a name="l12427"></a><span class="lineno">12427</span>  {</div>
|
||
<div class="line"><a name="l12428"></a><span class="lineno">12428</span>  oa->write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(<span class="charliteral">'I'</span>)); <span class="comment">// int16</span></div>
|
||
<div class="line"><a name="l12429"></a><span class="lineno">12429</span>  }</div>
|
||
<div class="line"><a name="l12430"></a><span class="lineno">12430</span>  write_number(<span class="keyword">static_cast<</span>std::int16_t<span class="keyword">></span>(n));</div>
|
||
<div class="line"><a name="l12431"></a><span class="lineno">12431</span>  }</div>
|
||
<div class="line"><a name="l12432"></a><span class="lineno">12432</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> ((std::numeric_limits<std::int32_t>::min)() <= n and n <= (std::numeric_limits<std::int32_t>::max)())</div>
|
||
<div class="line"><a name="l12433"></a><span class="lineno">12433</span>  {</div>
|
||
<div class="line"><a name="l12434"></a><span class="lineno">12434</span>  <span class="keywordflow">if</span> (add_prefix)</div>
|
||
<div class="line"><a name="l12435"></a><span class="lineno">12435</span>  {</div>
|
||
<div class="line"><a name="l12436"></a><span class="lineno">12436</span>  oa->write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(<span class="charliteral">'l'</span>)); <span class="comment">// int32</span></div>
|
||
<div class="line"><a name="l12437"></a><span class="lineno">12437</span>  }</div>
|
||
<div class="line"><a name="l12438"></a><span class="lineno">12438</span>  write_number(<span class="keyword">static_cast<</span>std::int32_t<span class="keyword">></span>(n));</div>
|
||
<div class="line"><a name="l12439"></a><span class="lineno">12439</span>  }</div>
|
||
<div class="line"><a name="l12440"></a><span class="lineno">12440</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> ((std::numeric_limits<std::int64_t>::min)() <= n and n <= (std::numeric_limits<std::int64_t>::max)())</div>
|
||
<div class="line"><a name="l12441"></a><span class="lineno">12441</span>  {</div>
|
||
<div class="line"><a name="l12442"></a><span class="lineno">12442</span>  <span class="keywordflow">if</span> (add_prefix)</div>
|
||
<div class="line"><a name="l12443"></a><span class="lineno">12443</span>  {</div>
|
||
<div class="line"><a name="l12444"></a><span class="lineno">12444</span>  oa->write_character(<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(<span class="charliteral">'L'</span>)); <span class="comment">// int64</span></div>
|
||
<div class="line"><a name="l12445"></a><span class="lineno">12445</span>  }</div>
|
||
<div class="line"><a name="l12446"></a><span class="lineno">12446</span>  write_number(<span class="keyword">static_cast<</span>std::int64_t<span class="keyword">></span>(n));</div>
|
||
<div class="line"><a name="l12447"></a><span class="lineno">12447</span>  }</div>
|
||
<div class="line"><a name="l12448"></a><span class="lineno">12448</span>  <span class="comment">// LCOV_EXCL_START</span></div>
|
||
<div class="line"><a name="l12449"></a><span class="lineno">12449</span>  <span class="keywordflow">else</span></div>
|
||
<div class="line"><a name="l12450"></a><span class="lineno">12450</span>  {</div>
|
||
<div class="line"><a name="l12451"></a><span class="lineno">12451</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1out__of__range.html#a3f6d82a6f967c4728a1ec735a7867073">out_of_range::create</a>(407, <span class="stringliteral">"integer number "</span> + <a class="code" href="namespacenlohmann.html#a6ce645a0b8717757e096a5b5773b7a16">std::to_string</a>(n) + <span class="stringliteral">" cannot be represented by UBJSON as it does not fit int64"</span>));</div>
|
||
<div class="line"><a name="l12452"></a><span class="lineno">12452</span>  }</div>
|
||
<div class="line"><a name="l12453"></a><span class="lineno">12453</span>  <span class="comment">// LCOV_EXCL_STOP</span></div>
|
||
<div class="line"><a name="l12454"></a><span class="lineno">12454</span>  }</div>
|
||
<div class="line"><a name="l12455"></a><span class="lineno">12455</span>  </div>
|
||
<div class="line"><a name="l12465"></a><span class="lineno">12465</span>  CharType ubjson_prefix(<span class="keyword">const</span> BasicJsonType& j) <span class="keyword">const</span> noexcept</div>
|
||
<div class="line"><a name="l12466"></a><span class="lineno">12466</span>  {</div>
|
||
<div class="line"><a name="l12467"></a><span class="lineno">12467</span>  <span class="keywordflow">switch</span> (j.type())</div>
|
||
<div class="line"><a name="l12468"></a><span class="lineno">12468</span>  {</div>
|
||
<div class="line"><a name="l12469"></a><span class="lineno">12469</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a37a6259cc0c1dae299a7866489dff0bd">value_t::null</a>:</div>
|
||
<div class="line"><a name="l12470"></a><span class="lineno">12470</span>  <span class="keywordflow">return</span> <span class="charliteral">'Z'</span>;</div>
|
||
<div class="line"><a name="l12471"></a><span class="lineno">12471</span>  </div>
|
||
<div class="line"><a name="l12472"></a><span class="lineno">12472</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a84e2c64f38f78ba3ea5c905ab5a2da27">value_t::boolean</a>:</div>
|
||
<div class="line"><a name="l12473"></a><span class="lineno">12473</span>  <span class="keywordflow">return</span> j.m_value.boolean ? <span class="charliteral">'T'</span> : <span class="charliteral">'F'</span>;</div>
|
||
<div class="line"><a name="l12474"></a><span class="lineno">12474</span>  </div>
|
||
<div class="line"><a name="l12475"></a><span class="lineno">12475</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a5763da164f8659d94a56e29df64b4bcc">value_t::number_integer</a>:</div>
|
||
<div class="line"><a name="l12476"></a><span class="lineno">12476</span>  {</div>
|
||
<div class="line"><a name="l12477"></a><span class="lineno">12477</span>  <span class="keywordflow">if</span> ((std::numeric_limits<std::int8_t>::min)() <= j.m_value.number_integer and j.m_value.number_integer <= (std::numeric_limits<std::int8_t>::max)())</div>
|
||
<div class="line"><a name="l12478"></a><span class="lineno">12478</span>  {</div>
|
||
<div class="line"><a name="l12479"></a><span class="lineno">12479</span>  <span class="keywordflow">return</span> <span class="charliteral">'i'</span>;</div>
|
||
<div class="line"><a name="l12480"></a><span class="lineno">12480</span>  }</div>
|
||
<div class="line"><a name="l12481"></a><span class="lineno">12481</span>  <span class="keywordflow">if</span> ((std::numeric_limits<std::uint8_t>::min)() <= j.m_value.number_integer and j.m_value.number_integer <= (std::numeric_limits<std::uint8_t>::max)())</div>
|
||
<div class="line"><a name="l12482"></a><span class="lineno">12482</span>  {</div>
|
||
<div class="line"><a name="l12483"></a><span class="lineno">12483</span>  <span class="keywordflow">return</span> <span class="charliteral">'U'</span>;</div>
|
||
<div class="line"><a name="l12484"></a><span class="lineno">12484</span>  }</div>
|
||
<div class="line"><a name="l12485"></a><span class="lineno">12485</span>  <span class="keywordflow">if</span> ((std::numeric_limits<std::int16_t>::min)() <= j.m_value.number_integer and j.m_value.number_integer <= (std::numeric_limits<std::int16_t>::max)())</div>
|
||
<div class="line"><a name="l12486"></a><span class="lineno">12486</span>  {</div>
|
||
<div class="line"><a name="l12487"></a><span class="lineno">12487</span>  <span class="keywordflow">return</span> <span class="charliteral">'I'</span>;</div>
|
||
<div class="line"><a name="l12488"></a><span class="lineno">12488</span>  }</div>
|
||
<div class="line"><a name="l12489"></a><span class="lineno">12489</span>  <span class="keywordflow">if</span> ((std::numeric_limits<std::int32_t>::min)() <= j.m_value.number_integer and j.m_value.number_integer <= (std::numeric_limits<std::int32_t>::max)())</div>
|
||
<div class="line"><a name="l12490"></a><span class="lineno">12490</span>  {</div>
|
||
<div class="line"><a name="l12491"></a><span class="lineno">12491</span>  <span class="keywordflow">return</span> <span class="charliteral">'l'</span>;</div>
|
||
<div class="line"><a name="l12492"></a><span class="lineno">12492</span>  }</div>
|
||
<div class="line"><a name="l12493"></a><span class="lineno">12493</span>  <span class="comment">// no check and assume int64_t (see note above)</span></div>
|
||
<div class="line"><a name="l12494"></a><span class="lineno">12494</span>  <span class="keywordflow">return</span> <span class="charliteral">'L'</span>;</div>
|
||
<div class="line"><a name="l12495"></a><span class="lineno">12495</span>  }</div>
|
||
<div class="line"><a name="l12496"></a><span class="lineno">12496</span>  </div>
|
||
<div class="line"><a name="l12497"></a><span class="lineno">12497</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985adce7cc8ec29055c4158828921f2f265e">value_t::number_unsigned</a>:</div>
|
||
<div class="line"><a name="l12498"></a><span class="lineno">12498</span>  {</div>
|
||
<div class="line"><a name="l12499"></a><span class="lineno">12499</span>  <span class="keywordflow">if</span> (j.m_value.number_unsigned <= <span class="keyword">static_cast<</span>std::uint64_t<span class="keyword">></span>((std::numeric_limits<std::int8_t>::max)()))</div>
|
||
<div class="line"><a name="l12500"></a><span class="lineno">12500</span>  {</div>
|
||
<div class="line"><a name="l12501"></a><span class="lineno">12501</span>  <span class="keywordflow">return</span> <span class="charliteral">'i'</span>;</div>
|
||
<div class="line"><a name="l12502"></a><span class="lineno">12502</span>  }</div>
|
||
<div class="line"><a name="l12503"></a><span class="lineno">12503</span>  <span class="keywordflow">if</span> (j.m_value.number_unsigned <= <span class="keyword">static_cast<</span>std::uint64_t<span class="keyword">></span>((std::numeric_limits<std::uint8_t>::max)()))</div>
|
||
<div class="line"><a name="l12504"></a><span class="lineno">12504</span>  {</div>
|
||
<div class="line"><a name="l12505"></a><span class="lineno">12505</span>  <span class="keywordflow">return</span> <span class="charliteral">'U'</span>;</div>
|
||
<div class="line"><a name="l12506"></a><span class="lineno">12506</span>  }</div>
|
||
<div class="line"><a name="l12507"></a><span class="lineno">12507</span>  <span class="keywordflow">if</span> (j.m_value.number_unsigned <= <span class="keyword">static_cast<</span>std::uint64_t<span class="keyword">></span>((std::numeric_limits<std::int16_t>::max)()))</div>
|
||
<div class="line"><a name="l12508"></a><span class="lineno">12508</span>  {</div>
|
||
<div class="line"><a name="l12509"></a><span class="lineno">12509</span>  <span class="keywordflow">return</span> <span class="charliteral">'I'</span>;</div>
|
||
<div class="line"><a name="l12510"></a><span class="lineno">12510</span>  }</div>
|
||
<div class="line"><a name="l12511"></a><span class="lineno">12511</span>  <span class="keywordflow">if</span> (j.m_value.number_unsigned <= <span class="keyword">static_cast<</span>std::uint64_t<span class="keyword">></span>((std::numeric_limits<std::int32_t>::max)()))</div>
|
||
<div class="line"><a name="l12512"></a><span class="lineno">12512</span>  {</div>
|
||
<div class="line"><a name="l12513"></a><span class="lineno">12513</span>  <span class="keywordflow">return</span> <span class="charliteral">'l'</span>;</div>
|
||
<div class="line"><a name="l12514"></a><span class="lineno">12514</span>  }</div>
|
||
<div class="line"><a name="l12515"></a><span class="lineno">12515</span>  <span class="comment">// no check and assume int64_t (see note above)</span></div>
|
||
<div class="line"><a name="l12516"></a><span class="lineno">12516</span>  <span class="keywordflow">return</span> <span class="charliteral">'L'</span>;</div>
|
||
<div class="line"><a name="l12517"></a><span class="lineno">12517</span>  }</div>
|
||
<div class="line"><a name="l12518"></a><span class="lineno">12518</span>  </div>
|
||
<div class="line"><a name="l12519"></a><span class="lineno">12519</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ad9966ecb59667235a57b4b999a649eef">value_t::number_float</a>:</div>
|
||
<div class="line"><a name="l12520"></a><span class="lineno">12520</span>  <span class="keywordflow">return</span> get_ubjson_float_prefix(j.m_value.number_float);</div>
|
||
<div class="line"><a name="l12521"></a><span class="lineno">12521</span>  </div>
|
||
<div class="line"><a name="l12522"></a><span class="lineno">12522</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ab45cffe084dd3d20d928bee85e7b0f21">value_t::string</a>:</div>
|
||
<div class="line"><a name="l12523"></a><span class="lineno">12523</span>  <span class="keywordflow">return</span> <span class="charliteral">'S'</span>;</div>
|
||
<div class="line"><a name="l12524"></a><span class="lineno">12524</span>  </div>
|
||
<div class="line"><a name="l12525"></a><span class="lineno">12525</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>:</div>
|
||
<div class="line"><a name="l12526"></a><span class="lineno">12526</span>  <span class="keywordflow">return</span> <span class="charliteral">'['</span>;</div>
|
||
<div class="line"><a name="l12527"></a><span class="lineno">12527</span>  </div>
|
||
<div class="line"><a name="l12528"></a><span class="lineno">12528</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>:</div>
|
||
<div class="line"><a name="l12529"></a><span class="lineno">12529</span>  <span class="keywordflow">return</span> <span class="charliteral">'{'</span>;</div>
|
||
<div class="line"><a name="l12530"></a><span class="lineno">12530</span>  </div>
|
||
<div class="line"><a name="l12531"></a><span class="lineno">12531</span>  <span class="keywordflow">default</span>: <span class="comment">// discarded values</span></div>
|
||
<div class="line"><a name="l12532"></a><span class="lineno">12532</span>  <span class="keywordflow">return</span> <span class="charliteral">'N'</span>;</div>
|
||
<div class="line"><a name="l12533"></a><span class="lineno">12533</span>  }</div>
|
||
<div class="line"><a name="l12534"></a><span class="lineno">12534</span>  }</div>
|
||
<div class="line"><a name="l12535"></a><span class="lineno">12535</span>  </div>
|
||
<div class="line"><a name="l12536"></a><span class="lineno">12536</span>  <span class="keyword">static</span> constexpr CharType get_ubjson_float_prefix(<span class="keywordtype">float</span> <span class="comment">/*unused*/</span>)</div>
|
||
<div class="line"><a name="l12537"></a><span class="lineno">12537</span>  {</div>
|
||
<div class="line"><a name="l12538"></a><span class="lineno">12538</span>  <span class="keywordflow">return</span> <span class="charliteral">'d'</span>; <span class="comment">// float 32</span></div>
|
||
<div class="line"><a name="l12539"></a><span class="lineno">12539</span>  }</div>
|
||
<div class="line"><a name="l12540"></a><span class="lineno">12540</span>  </div>
|
||
<div class="line"><a name="l12541"></a><span class="lineno">12541</span>  <span class="keyword">static</span> constexpr CharType get_ubjson_float_prefix(<span class="keywordtype">double</span> <span class="comment">/*unused*/</span>)</div>
|
||
<div class="line"><a name="l12542"></a><span class="lineno">12542</span>  {</div>
|
||
<div class="line"><a name="l12543"></a><span class="lineno">12543</span>  <span class="keywordflow">return</span> <span class="charliteral">'D'</span>; <span class="comment">// float 64</span></div>
|
||
<div class="line"><a name="l12544"></a><span class="lineno">12544</span>  }</div>
|
||
<div class="line"><a name="l12545"></a><span class="lineno">12545</span>  </div>
|
||
<div class="line"><a name="l12547"></a><span class="lineno">12547</span>  <span class="comment">// Utility functions //</span></div>
|
||
<div class="line"><a name="l12549"></a><span class="lineno">12549</span> <span class="comment"></span> </div>
|
||
<div class="line"><a name="l12550"></a><span class="lineno">12550</span>  <span class="comment">/*</span></div>
|
||
<div class="line"><a name="l12551"></a><span class="lineno">12551</span> <span class="comment"> @brief write a number to output input</span></div>
|
||
<div class="line"><a name="l12552"></a><span class="lineno">12552</span> <span class="comment"> @param[in] n number of type @a NumberType</span></div>
|
||
<div class="line"><a name="l12553"></a><span class="lineno">12553</span> <span class="comment"> @tparam NumberType the type of the number</span></div>
|
||
<div class="line"><a name="l12554"></a><span class="lineno">12554</span> <span class="comment"> @tparam OutputIsLittleEndian Set to true if output data is</span></div>
|
||
<div class="line"><a name="l12555"></a><span class="lineno">12555</span> <span class="comment"> required to be little endian</span></div>
|
||
<div class="line"><a name="l12556"></a><span class="lineno">12556</span> <span class="comment"></span> </div>
|
||
<div class="line"><a name="l12557"></a><span class="lineno">12557</span> <span class="comment"> @note This function needs to respect the system's endianess, because bytes</span></div>
|
||
<div class="line"><a name="l12558"></a><span class="lineno">12558</span> <span class="comment"> in CBOR, MessagePack, and UBJSON are stored in network order (big</span></div>
|
||
<div class="line"><a name="l12559"></a><span class="lineno">12559</span> <span class="comment"> endian) and therefore need reordering on little endian systems.</span></div>
|
||
<div class="line"><a name="l12560"></a><span class="lineno">12560</span> <span class="comment"> */</span></div>
|
||
<div class="line"><a name="l12561"></a><span class="lineno">12561</span>  <span class="keyword">template</span><<span class="keyword">typename</span> NumberType, <span class="keywordtype">bool</span> OutputIsLittleEndian = false></div>
|
||
<div class="line"><a name="l12562"></a><span class="lineno">12562</span>  <span class="keywordtype">void</span> write_number(<span class="keyword">const</span> NumberType n)</div>
|
||
<div class="line"><a name="l12563"></a><span class="lineno">12563</span>  {</div>
|
||
<div class="line"><a name="l12564"></a><span class="lineno">12564</span>  <span class="comment">// step 1: write number to array of length NumberType</span></div>
|
||
<div class="line"><a name="l12565"></a><span class="lineno">12565</span>  std::array<CharType, <span class="keyword">sizeof</span>(NumberType)> vec;</div>
|
||
<div class="line"><a name="l12566"></a><span class="lineno">12566</span>  std::memcpy(vec.data(), &n, <span class="keyword">sizeof</span>(NumberType));</div>
|
||
<div class="line"><a name="l12567"></a><span class="lineno">12567</span>  </div>
|
||
<div class="line"><a name="l12568"></a><span class="lineno">12568</span>  <span class="comment">// step 2: write array to output (with possible reordering)</span></div>
|
||
<div class="line"><a name="l12569"></a><span class="lineno">12569</span>  <span class="keywordflow">if</span> (is_little_endian != OutputIsLittleEndian)</div>
|
||
<div class="line"><a name="l12570"></a><span class="lineno">12570</span>  {</div>
|
||
<div class="line"><a name="l12571"></a><span class="lineno">12571</span>  <span class="comment">// reverse byte order prior to conversion if necessary</span></div>
|
||
<div class="line"><a name="l12572"></a><span class="lineno">12572</span>  std::reverse(vec.begin(), vec.end());</div>
|
||
<div class="line"><a name="l12573"></a><span class="lineno">12573</span>  }</div>
|
||
<div class="line"><a name="l12574"></a><span class="lineno">12574</span>  </div>
|
||
<div class="line"><a name="l12575"></a><span class="lineno">12575</span>  oa->write_characters(vec.data(), <span class="keyword">sizeof</span>(NumberType));</div>
|
||
<div class="line"><a name="l12576"></a><span class="lineno">12576</span>  }</div>
|
||
<div class="line"><a name="l12577"></a><span class="lineno">12577</span>  </div>
|
||
<div class="line"><a name="l12578"></a><span class="lineno">12578</span>  <span class="keyword">public</span>:</div>
|
||
<div class="line"><a name="l12579"></a><span class="lineno">12579</span>  <span class="comment">// The following to_char_type functions are implement the conversion</span></div>
|
||
<div class="line"><a name="l12580"></a><span class="lineno">12580</span>  <span class="comment">// between uint8_t and CharType. In case CharType is not unsigned,</span></div>
|
||
<div class="line"><a name="l12581"></a><span class="lineno">12581</span>  <span class="comment">// such a conversion is required to allow values greater than 128.</span></div>
|
||
<div class="line"><a name="l12582"></a><span class="lineno">12582</span>  <span class="comment">// See <https://github.com/nlohmann/json/issues/1286> for a discussion.</span></div>
|
||
<div class="line"><a name="l12583"></a><span class="lineno">12583</span>  <span class="keyword">template</span> < <span class="keyword">typename</span> C = CharType,</div>
|
||
<div class="line"><a name="l12584"></a><span class="lineno">12584</span>  enable_if_t < std::is_signed<C>::value and std::is_signed<char>::value > * = <span class="keyword">nullptr</span> ></div>
|
||
<div class="line"><a name="l12585"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">12585</a></span>  <span class="keyword">static</span> constexpr CharType <a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(std::uint8_t x) noexcept</div>
|
||
<div class="line"><a name="l12586"></a><span class="lineno">12586</span>  {</div>
|
||
<div class="line"><a name="l12587"></a><span class="lineno">12587</span>  <span class="keywordflow">return</span> *<span class="keyword">reinterpret_cast<</span><span class="keywordtype">char</span>*<span class="keyword">></span>(&x);</div>
|
||
<div class="line"><a name="l12588"></a><span class="lineno">12588</span>  }</div>
|
||
<div class="line"><a name="l12589"></a><span class="lineno">12589</span>  </div>
|
||
<div class="line"><a name="l12590"></a><span class="lineno">12590</span>  <span class="keyword">template</span> < <span class="keyword">typename</span> C = CharType,</div>
|
||
<div class="line"><a name="l12591"></a><span class="lineno">12591</span>  <a class="code" href="namespacenlohmann_1_1detail.html#a02bcbc878bee413f25b985ada771aa9c">enable_if_t < std::is_signed<C>::value</a> and std::is_unsigned<char>::value > * = <span class="keyword">nullptr</span> ></div>
|
||
<div class="line"><a name="l12592"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1binary__writer.html#a5e46f0dd3550901b15cf85265808d1ec">12592</a></span>  <span class="keyword">static</span> CharType <a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#a5e46f0dd3550901b15cf85265808d1ec">to_char_type</a>(std::uint8_t x) noexcept</div>
|
||
<div class="line"><a name="l12593"></a><span class="lineno">12593</span>  {</div>
|
||
<div class="line"><a name="l12594"></a><span class="lineno">12594</span>  static_assert(<span class="keyword">sizeof</span>(std::uint8_t) == <span class="keyword">sizeof</span>(CharType), <span class="stringliteral">"size of CharType must be equal to std::uint8_t"</span>);</div>
|
||
<div class="line"><a name="l12595"></a><span class="lineno">12595</span>  static_assert(std::is_pod<CharType>::value, <span class="stringliteral">"CharType must be POD"</span>);</div>
|
||
<div class="line"><a name="l12596"></a><span class="lineno">12596</span>  CharType result;</div>
|
||
<div class="line"><a name="l12597"></a><span class="lineno">12597</span>  std::memcpy(&result, &x, <span class="keyword">sizeof</span>(x));</div>
|
||
<div class="line"><a name="l12598"></a><span class="lineno">12598</span>  <span class="keywordflow">return</span> result;</div>
|
||
<div class="line"><a name="l12599"></a><span class="lineno">12599</span>  }</div>
|
||
<div class="line"><a name="l12600"></a><span class="lineno">12600</span>  </div>
|
||
<div class="line"><a name="l12601"></a><span class="lineno">12601</span>  <span class="keyword">template</span><<span class="keyword">typename</span> C = CharType,</div>
|
||
<div class="line"><a name="l12602"></a><span class="lineno">12602</span>  <a class="code" href="namespacenlohmann_1_1detail.html#a02bcbc878bee413f25b985ada771aa9c">enable_if_t<std::is_unsigned<C>::value</a>>* = <span class="keyword">nullptr</span>></div>
|
||
<div class="line"><a name="l12603"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">12603</a></span>  <span class="keyword">static</span> constexpr CharType <a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">to_char_type</a>(std::uint8_t x) noexcept</div>
|
||
<div class="line"><a name="l12604"></a><span class="lineno">12604</span>  {</div>
|
||
<div class="line"><a name="l12605"></a><span class="lineno">12605</span>  <span class="keywordflow">return</span> x;</div>
|
||
<div class="line"><a name="l12606"></a><span class="lineno">12606</span>  }</div>
|
||
<div class="line"><a name="l12607"></a><span class="lineno">12607</span>  </div>
|
||
<div class="line"><a name="l12608"></a><span class="lineno">12608</span>  <span class="keyword">template</span> < <span class="keyword">typename</span> InputCharType, <span class="keyword">typename</span> C = CharType,</div>
|
||
<div class="line"><a name="l12609"></a><span class="lineno">12609</span>  <a class="code" href="namespacenlohmann_1_1detail.html#a02bcbc878bee413f25b985ada771aa9c">enable_if_t</a> <</div>
|
||
<div class="line"><a name="l12610"></a><span class="lineno">12610</span>  std::is_signed<C>::value and</div>
|
||
<div class="line"><a name="l12611"></a><span class="lineno">12611</span>  std::is_signed<char>::value and</div>
|
||
<div class="line"><a name="l12612"></a><span class="lineno">12612</span>  std::is_same<char, typename std::remove_cv<InputCharType>::type>::value</div>
|
||
<div class="line"><a name="l12613"></a><span class="lineno">12613</span>  > * = <span class="keyword">nullptr</span> ></div>
|
||
<div class="line"><a name="l12614"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1binary__writer.html#a2c2b2132ce56b3b45593374b622baa67">12614</a></span>  <span class="keyword">static</span> constexpr CharType <a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#a2c2b2132ce56b3b45593374b622baa67">to_char_type</a>(InputCharType x) noexcept</div>
|
||
<div class="line"><a name="l12615"></a><span class="lineno">12615</span>  {</div>
|
||
<div class="line"><a name="l12616"></a><span class="lineno">12616</span>  <span class="keywordflow">return</span> x;</div>
|
||
<div class="line"><a name="l12617"></a><span class="lineno">12617</span>  }</div>
|
||
<div class="line"><a name="l12618"></a><span class="lineno">12618</span>  </div>
|
||
<div class="line"><a name="l12619"></a><span class="lineno">12619</span>  <span class="keyword">private</span>:</div>
|
||
<div class="line"><a name="l12621"></a><span class="lineno">12621</span>  <span class="keyword">const</span> <span class="keywordtype">bool</span> is_little_endian = <a class="code" href="classnlohmann_1_1detail_1_1binary__reader.html#a1e31dbfcf9567c8c2d4f0e4eb1b0230a">binary_reader<BasicJsonType>::little_endianess</a>();</div>
|
||
<div class="line"><a name="l12622"></a><span class="lineno">12622</span>  </div>
|
||
<div class="line"><a name="l12624"></a><span class="lineno">12624</span>  <a class="code" href="namespacenlohmann_1_1detail.html#a9b680ddfb58f27eb53a67229447fc556">output_adapter_t<CharType></a> oa = <span class="keyword">nullptr</span>;</div>
|
||
<div class="line"><a name="l12625"></a><span class="lineno">12625</span> };</div>
|
||
<div class="line"><a name="l12626"></a><span class="lineno">12626</span> } <span class="comment">// namespace detail</span></div>
|
||
<div class="line"><a name="l12627"></a><span class="lineno">12627</span> } <span class="comment">// namespace nlohmann</span></div>
|
||
<div class="line"><a name="l12628"></a><span class="lineno">12628</span>  </div>
|
||
<div class="line"><a name="l12629"></a><span class="lineno">12629</span> <span class="comment">// #include <nlohmann/detail/output/output_adapters.hpp></span></div>
|
||
<div class="line"><a name="l12630"></a><span class="lineno">12630</span>  </div>
|
||
<div class="line"><a name="l12631"></a><span class="lineno">12631</span> <span class="comment">// #include <nlohmann/detail/output/serializer.hpp></span></div>
|
||
<div class="line"><a name="l12632"></a><span class="lineno">12632</span>  </div>
|
||
<div class="line"><a name="l12633"></a><span class="lineno">12633</span>  </div>
|
||
<div class="line"><a name="l12634"></a><span class="lineno">12634</span> <span class="preprocessor">#include <algorithm></span> <span class="comment">// reverse, remove, fill, find, none_of</span></div>
|
||
<div class="line"><a name="l12635"></a><span class="lineno">12635</span> <span class="preprocessor">#include <array></span> <span class="comment">// array</span></div>
|
||
<div class="line"><a name="l12636"></a><span class="lineno">12636</span> <span class="preprocessor">#include <cassert></span> <span class="comment">// assert</span></div>
|
||
<div class="line"><a name="l12637"></a><span class="lineno">12637</span> <span class="preprocessor">#include <ciso646></span> <span class="comment">// and, or</span></div>
|
||
<div class="line"><a name="l12638"></a><span class="lineno">12638</span> <span class="preprocessor">#include <clocale></span> <span class="comment">// localeconv, lconv</span></div>
|
||
<div class="line"><a name="l12639"></a><span class="lineno">12639</span> <span class="preprocessor">#include <cmath></span> <span class="comment">// labs, isfinite, isnan, signbit</span></div>
|
||
<div class="line"><a name="l12640"></a><span class="lineno">12640</span> <span class="preprocessor">#include <cstddef></span> <span class="comment">// size_t, ptrdiff_t</span></div>
|
||
<div class="line"><a name="l12641"></a><span class="lineno">12641</span> <span class="preprocessor">#include <cstdint></span> <span class="comment">// uint8_t</span></div>
|
||
<div class="line"><a name="l12642"></a><span class="lineno">12642</span> <span class="preprocessor">#include <cstdio></span> <span class="comment">// snprintf</span></div>
|
||
<div class="line"><a name="l12643"></a><span class="lineno">12643</span> <span class="preprocessor">#include <limits></span> <span class="comment">// numeric_limits</span></div>
|
||
<div class="line"><a name="l12644"></a><span class="lineno">12644</span> <span class="preprocessor">#include <string></span> <span class="comment">// string</span></div>
|
||
<div class="line"><a name="l12645"></a><span class="lineno">12645</span> <span class="preprocessor">#include <type_traits></span> <span class="comment">// is_same</span></div>
|
||
<div class="line"><a name="l12646"></a><span class="lineno">12646</span> <span class="preprocessor">#include <utility></span> <span class="comment">// move</span></div>
|
||
<div class="line"><a name="l12647"></a><span class="lineno">12647</span>  </div>
|
||
<div class="line"><a name="l12648"></a><span class="lineno">12648</span> <span class="comment">// #include <nlohmann/detail/conversions/to_chars.hpp></span></div>
|
||
<div class="line"><a name="l12649"></a><span class="lineno">12649</span>  </div>
|
||
<div class="line"><a name="l12650"></a><span class="lineno">12650</span>  </div>
|
||
<div class="line"><a name="l12651"></a><span class="lineno">12651</span> <span class="preprocessor">#include <array></span> <span class="comment">// array</span></div>
|
||
<div class="line"><a name="l12652"></a><span class="lineno">12652</span> <span class="preprocessor">#include <cassert></span> <span class="comment">// assert</span></div>
|
||
<div class="line"><a name="l12653"></a><span class="lineno">12653</span> <span class="preprocessor">#include <ciso646></span> <span class="comment">// or, and, not</span></div>
|
||
<div class="line"><a name="l12654"></a><span class="lineno">12654</span> <span class="preprocessor">#include <cmath></span> <span class="comment">// signbit, isfinite</span></div>
|
||
<div class="line"><a name="l12655"></a><span class="lineno">12655</span> <span class="preprocessor">#include <cstdint></span> <span class="comment">// intN_t, uintN_t</span></div>
|
||
<div class="line"><a name="l12656"></a><span class="lineno">12656</span> <span class="preprocessor">#include <cstring></span> <span class="comment">// memcpy, memmove</span></div>
|
||
<div class="line"><a name="l12657"></a><span class="lineno">12657</span> <span class="preprocessor">#include <limits></span> <span class="comment">// numeric_limits</span></div>
|
||
<div class="line"><a name="l12658"></a><span class="lineno">12658</span> <span class="preprocessor">#include <type_traits></span> <span class="comment">// conditional</span></div>
|
||
<div class="line"><a name="l12659"></a><span class="lineno">12659</span> <span class="comment">// #include <nlohmann/detail/macro_scope.hpp></span></div>
|
||
<div class="line"><a name="l12660"></a><span class="lineno">12660</span>  </div>
|
||
<div class="line"><a name="l12661"></a><span class="lineno">12661</span>  </div>
|
||
<div class="line"><a name="l12662"></a><span class="lineno">12662</span> <span class="keyword">namespace </span><a class="code" href="namespacenlohmann.html">nlohmann</a></div>
|
||
<div class="line"><a name="l12663"></a><span class="lineno">12663</span> {</div>
|
||
<div class="line"><a name="l12664"></a><span class="lineno">12664</span> <span class="keyword">namespace </span>detail</div>
|
||
<div class="line"><a name="l12665"></a><span class="lineno">12665</span> {</div>
|
||
<div class="line"><a name="l12666"></a><span class="lineno">12666</span>  </div>
|
||
<div class="line"><a name="l12686"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail_1_1dtoa__impl.html">12686</a></span> <span class="keyword">namespace </span>dtoa_impl</div>
|
||
<div class="line"><a name="l12687"></a><span class="lineno">12687</span> {</div>
|
||
<div class="line"><a name="l12688"></a><span class="lineno">12688</span>  </div>
|
||
<div class="line"><a name="l12689"></a><span class="lineno">12689</span> <span class="keyword">template</span> <<span class="keyword">typename</span> Target, <span class="keyword">typename</span> Source></div>
|
||
<div class="line"><a name="l12690"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#a1c5d30eb51e5e994a3f48bde104d2ce8">12690</a></span> Target <a class="code" href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#a1c5d30eb51e5e994a3f48bde104d2ce8">reinterpret_bits</a>(<span class="keyword">const</span> Source source)</div>
|
||
<div class="line"><a name="l12691"></a><span class="lineno">12691</span> {</div>
|
||
<div class="line"><a name="l12692"></a><span class="lineno">12692</span>  static_assert(<span class="keyword">sizeof</span>(Target) == <span class="keyword">sizeof</span>(Source), <span class="stringliteral">"size mismatch"</span>);</div>
|
||
<div class="line"><a name="l12693"></a><span class="lineno">12693</span>  </div>
|
||
<div class="line"><a name="l12694"></a><span class="lineno">12694</span>  Target target;</div>
|
||
<div class="line"><a name="l12695"></a><span class="lineno">12695</span>  std::memcpy(&target, &source, <span class="keyword">sizeof</span>(Source));</div>
|
||
<div class="line"><a name="l12696"></a><span class="lineno">12696</span>  <span class="keywordflow">return</span> target;</div>
|
||
<div class="line"><a name="l12697"></a><span class="lineno">12697</span> }</div>
|
||
<div class="line"><a name="l12698"></a><span class="lineno">12698</span>  </div>
|
||
<div class="line"><a name="l12699"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html">12699</a></span> <span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html">diyfp</a> <span class="comment">// f * 2^e</span></div>
|
||
<div class="line"><a name="l12700"></a><span class="lineno">12700</span> {</div>
|
||
<div class="line"><a name="l12701"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#a03682754b06ed4f30b263119eecc2d52">12701</a></span>  <span class="keyword">static</span> constexpr <span class="keywordtype">int</span> <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#a03682754b06ed4f30b263119eecc2d52">kPrecision</a> = 64; <span class="comment">// = q</span></div>
|
||
<div class="line"><a name="l12702"></a><span class="lineno">12702</span>  </div>
|
||
<div class="line"><a name="l12703"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#aea90459e340a231ca31d46946803ef51">12703</a></span>  std::uint64_t <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#aea90459e340a231ca31d46946803ef51">f</a> = 0;</div>
|
||
<div class="line"><a name="l12704"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#ae22e170815983961447c429f324c944d">12704</a></span>  <span class="keywordtype">int</span> <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#ae22e170815983961447c429f324c944d">e</a> = 0;</div>
|
||
<div class="line"><a name="l12705"></a><span class="lineno">12705</span>  </div>
|
||
<div class="line"><a name="l12706"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#ad8798a8823a49c8412f0fada9892c918">12706</a></span>  constexpr <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#ad8798a8823a49c8412f0fada9892c918">diyfp</a>(std::uint64_t f_, <span class="keywordtype">int</span> e_) noexcept : <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#aea90459e340a231ca31d46946803ef51">f</a>(f_), <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#ae22e170815983961447c429f324c944d">e</a>(e_) {}</div>
|
||
<div class="line"><a name="l12707"></a><span class="lineno">12707</span>  </div>
|
||
<div class="line"><a name="l12712"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#aeb26771af54ad73598c1a0430d65d884">12712</a></span>  <span class="keyword">static</span> <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html">diyfp</a> <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#aeb26771af54ad73598c1a0430d65d884">sub</a>(<span class="keyword">const</span> <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html">diyfp</a>& x, <span class="keyword">const</span> <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html">diyfp</a>& y) noexcept</div>
|
||
<div class="line"><a name="l12713"></a><span class="lineno">12713</span>  {</div>
|
||
<div class="line"><a name="l12714"></a><span class="lineno">12714</span>  assert(x.e == y.e);</div>
|
||
<div class="line"><a name="l12715"></a><span class="lineno">12715</span>  assert(x.f >= y.f);</div>
|
||
<div class="line"><a name="l12716"></a><span class="lineno">12716</span>  </div>
|
||
<div class="line"><a name="l12717"></a><span class="lineno">12717</span>  <span class="keywordflow">return</span> {x.f - y.f, x.e};</div>
|
||
<div class="line"><a name="l12718"></a><span class="lineno">12718</span>  }</div>
|
||
<div class="line"><a name="l12719"></a><span class="lineno">12719</span>  </div>
|
||
<div class="line"><a name="l12724"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#aa5f250d12ce89c81fdb08900c6a823e8">12724</a></span>  <span class="keyword">static</span> <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html">diyfp</a> <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#aa5f250d12ce89c81fdb08900c6a823e8">mul</a>(<span class="keyword">const</span> <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html">diyfp</a>& x, <span class="keyword">const</span> <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html">diyfp</a>& y) noexcept</div>
|
||
<div class="line"><a name="l12725"></a><span class="lineno">12725</span>  {</div>
|
||
<div class="line"><a name="l12726"></a><span class="lineno">12726</span>  static_assert(<a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#a03682754b06ed4f30b263119eecc2d52">kPrecision</a> == 64, <span class="stringliteral">"internal error"</span>);</div>
|
||
<div class="line"><a name="l12727"></a><span class="lineno">12727</span>  </div>
|
||
<div class="line"><a name="l12728"></a><span class="lineno">12728</span>  <span class="comment">// Computes:</span></div>
|
||
<div class="line"><a name="l12729"></a><span class="lineno">12729</span>  <span class="comment">// f = round((x.f * y.f) / 2^q)</span></div>
|
||
<div class="line"><a name="l12730"></a><span class="lineno">12730</span>  <span class="comment">// e = x.e + y.e + q</span></div>
|
||
<div class="line"><a name="l12731"></a><span class="lineno">12731</span>  </div>
|
||
<div class="line"><a name="l12732"></a><span class="lineno">12732</span>  <span class="comment">// Emulate the 64-bit * 64-bit multiplication:</span></div>
|
||
<div class="line"><a name="l12733"></a><span class="lineno">12733</span>  <span class="comment">//</span></div>
|
||
<div class="line"><a name="l12734"></a><span class="lineno">12734</span>  <span class="comment">// p = u * v</span></div>
|
||
<div class="line"><a name="l12735"></a><span class="lineno">12735</span>  <span class="comment">// = (u_lo + 2^32 u_hi) (v_lo + 2^32 v_hi)</span></div>
|
||
<div class="line"><a name="l12736"></a><span class="lineno">12736</span>  <span class="comment">// = (u_lo v_lo ) + 2^32 ((u_lo v_hi ) + (u_hi v_lo )) + 2^64 (u_hi v_hi )</span></div>
|
||
<div class="line"><a name="l12737"></a><span class="lineno">12737</span>  <span class="comment">// = (p0 ) + 2^32 ((p1 ) + (p2 )) + 2^64 (p3 )</span></div>
|
||
<div class="line"><a name="l12738"></a><span class="lineno">12738</span>  <span class="comment">// = (p0_lo + 2^32 p0_hi) + 2^32 ((p1_lo + 2^32 p1_hi) + (p2_lo + 2^32 p2_hi)) + 2^64 (p3 )</span></div>
|
||
<div class="line"><a name="l12739"></a><span class="lineno">12739</span>  <span class="comment">// = (p0_lo ) + 2^32 (p0_hi + p1_lo + p2_lo ) + 2^64 (p1_hi + p2_hi + p3)</span></div>
|
||
<div class="line"><a name="l12740"></a><span class="lineno">12740</span>  <span class="comment">// = (p0_lo ) + 2^32 (Q ) + 2^64 (H )</span></div>
|
||
<div class="line"><a name="l12741"></a><span class="lineno">12741</span>  <span class="comment">// = (p0_lo ) + 2^32 (Q_lo + 2^32 Q_hi ) + 2^64 (H )</span></div>
|
||
<div class="line"><a name="l12742"></a><span class="lineno">12742</span>  <span class="comment">//</span></div>
|
||
<div class="line"><a name="l12743"></a><span class="lineno">12743</span>  <span class="comment">// (Since Q might be larger than 2^32 - 1)</span></div>
|
||
<div class="line"><a name="l12744"></a><span class="lineno">12744</span>  <span class="comment">//</span></div>
|
||
<div class="line"><a name="l12745"></a><span class="lineno">12745</span>  <span class="comment">// = (p0_lo + 2^32 Q_lo) + 2^64 (Q_hi + H)</span></div>
|
||
<div class="line"><a name="l12746"></a><span class="lineno">12746</span>  <span class="comment">//</span></div>
|
||
<div class="line"><a name="l12747"></a><span class="lineno">12747</span>  <span class="comment">// (Q_hi + H does not overflow a 64-bit int)</span></div>
|
||
<div class="line"><a name="l12748"></a><span class="lineno">12748</span>  <span class="comment">//</span></div>
|
||
<div class="line"><a name="l12749"></a><span class="lineno">12749</span>  <span class="comment">// = p_lo + 2^64 p_hi</span></div>
|
||
<div class="line"><a name="l12750"></a><span class="lineno">12750</span>  </div>
|
||
<div class="line"><a name="l12751"></a><span class="lineno">12751</span>  <span class="keyword">const</span> std::uint64_t u_lo = x.f & 0xFFFFFFFFu;</div>
|
||
<div class="line"><a name="l12752"></a><span class="lineno">12752</span>  <span class="keyword">const</span> std::uint64_t u_hi = x.f >> 32u;</div>
|
||
<div class="line"><a name="l12753"></a><span class="lineno">12753</span>  <span class="keyword">const</span> std::uint64_t v_lo = y.f & 0xFFFFFFFFu;</div>
|
||
<div class="line"><a name="l12754"></a><span class="lineno">12754</span>  <span class="keyword">const</span> std::uint64_t v_hi = y.f >> 32u;</div>
|
||
<div class="line"><a name="l12755"></a><span class="lineno">12755</span>  </div>
|
||
<div class="line"><a name="l12756"></a><span class="lineno">12756</span>  <span class="keyword">const</span> std::uint64_t p0 = u_lo * v_lo;</div>
|
||
<div class="line"><a name="l12757"></a><span class="lineno">12757</span>  <span class="keyword">const</span> std::uint64_t p1 = u_lo * v_hi;</div>
|
||
<div class="line"><a name="l12758"></a><span class="lineno">12758</span>  <span class="keyword">const</span> std::uint64_t p2 = u_hi * v_lo;</div>
|
||
<div class="line"><a name="l12759"></a><span class="lineno">12759</span>  <span class="keyword">const</span> std::uint64_t p3 = u_hi * v_hi;</div>
|
||
<div class="line"><a name="l12760"></a><span class="lineno">12760</span>  </div>
|
||
<div class="line"><a name="l12761"></a><span class="lineno">12761</span>  <span class="keyword">const</span> std::uint64_t p0_hi = p0 >> 32u;</div>
|
||
<div class="line"><a name="l12762"></a><span class="lineno">12762</span>  <span class="keyword">const</span> std::uint64_t p1_lo = p1 & 0xFFFFFFFFu;</div>
|
||
<div class="line"><a name="l12763"></a><span class="lineno">12763</span>  <span class="keyword">const</span> std::uint64_t p1_hi = p1 >> 32u;</div>
|
||
<div class="line"><a name="l12764"></a><span class="lineno">12764</span>  <span class="keyword">const</span> std::uint64_t p2_lo = p2 & 0xFFFFFFFFu;</div>
|
||
<div class="line"><a name="l12765"></a><span class="lineno">12765</span>  <span class="keyword">const</span> std::uint64_t p2_hi = p2 >> 32u;</div>
|
||
<div class="line"><a name="l12766"></a><span class="lineno">12766</span>  </div>
|
||
<div class="line"><a name="l12767"></a><span class="lineno">12767</span>  std::uint64_t Q = p0_hi + p1_lo + p2_lo;</div>
|
||
<div class="line"><a name="l12768"></a><span class="lineno">12768</span>  </div>
|
||
<div class="line"><a name="l12769"></a><span class="lineno">12769</span>  <span class="comment">// The full product might now be computed as</span></div>
|
||
<div class="line"><a name="l12770"></a><span class="lineno">12770</span>  <span class="comment">//</span></div>
|
||
<div class="line"><a name="l12771"></a><span class="lineno">12771</span>  <span class="comment">// p_hi = p3 + p2_hi + p1_hi + (Q >> 32)</span></div>
|
||
<div class="line"><a name="l12772"></a><span class="lineno">12772</span>  <span class="comment">// p_lo = p0_lo + (Q << 32)</span></div>
|
||
<div class="line"><a name="l12773"></a><span class="lineno">12773</span>  <span class="comment">//</span></div>
|
||
<div class="line"><a name="l12774"></a><span class="lineno">12774</span>  <span class="comment">// But in this particular case here, the full p_lo is not required.</span></div>
|
||
<div class="line"><a name="l12775"></a><span class="lineno">12775</span>  <span class="comment">// Effectively we only need to add the highest bit in p_lo to p_hi (and</span></div>
|
||
<div class="line"><a name="l12776"></a><span class="lineno">12776</span>  <span class="comment">// Q_hi + 1 does not overflow).</span></div>
|
||
<div class="line"><a name="l12777"></a><span class="lineno">12777</span>  </div>
|
||
<div class="line"><a name="l12778"></a><span class="lineno">12778</span>  Q += std::uint64_t{1} << (64u - 32u - 1u); <span class="comment">// round, ties up</span></div>
|
||
<div class="line"><a name="l12779"></a><span class="lineno">12779</span>  </div>
|
||
<div class="line"><a name="l12780"></a><span class="lineno">12780</span>  <span class="keyword">const</span> std::uint64_t h = p3 + p2_hi + p1_hi + (Q >> 32u);</div>
|
||
<div class="line"><a name="l12781"></a><span class="lineno">12781</span>  </div>
|
||
<div class="line"><a name="l12782"></a><span class="lineno">12782</span>  <span class="keywordflow">return</span> {h, x.e + y.e + 64};</div>
|
||
<div class="line"><a name="l12783"></a><span class="lineno">12783</span>  }</div>
|
||
<div class="line"><a name="l12784"></a><span class="lineno">12784</span>  </div>
|
||
<div class="line"><a name="l12789"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#a2246b5b40c7c6992153ef174063d6aa6">12789</a></span>  <span class="keyword">static</span> <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html">diyfp</a> <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#a2246b5b40c7c6992153ef174063d6aa6">normalize</a>(<a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html">diyfp</a> x) noexcept</div>
|
||
<div class="line"><a name="l12790"></a><span class="lineno">12790</span>  {</div>
|
||
<div class="line"><a name="l12791"></a><span class="lineno">12791</span>  assert(x.f != 0);</div>
|
||
<div class="line"><a name="l12792"></a><span class="lineno">12792</span>  </div>
|
||
<div class="line"><a name="l12793"></a><span class="lineno">12793</span>  <span class="keywordflow">while</span> ((x.f >> 63u) == 0)</div>
|
||
<div class="line"><a name="l12794"></a><span class="lineno">12794</span>  {</div>
|
||
<div class="line"><a name="l12795"></a><span class="lineno">12795</span>  x.f <<= 1u;</div>
|
||
<div class="line"><a name="l12796"></a><span class="lineno">12796</span>  x.e--;</div>
|
||
<div class="line"><a name="l12797"></a><span class="lineno">12797</span>  }</div>
|
||
<div class="line"><a name="l12798"></a><span class="lineno">12798</span>  </div>
|
||
<div class="line"><a name="l12799"></a><span class="lineno">12799</span>  <span class="keywordflow">return</span> x;</div>
|
||
<div class="line"><a name="l12800"></a><span class="lineno">12800</span>  }</div>
|
||
<div class="line"><a name="l12801"></a><span class="lineno">12801</span>  </div>
|
||
<div class="line"><a name="l12806"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#a6b6665e467ebabe0c0f7418d3fe4b118">12806</a></span>  <span class="keyword">static</span> <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html">diyfp</a> <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#a6b6665e467ebabe0c0f7418d3fe4b118">normalize_to</a>(<span class="keyword">const</span> <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html">diyfp</a>& x, <span class="keyword">const</span> <span class="keywordtype">int</span> target_exponent) noexcept</div>
|
||
<div class="line"><a name="l12807"></a><span class="lineno">12807</span>  {</div>
|
||
<div class="line"><a name="l12808"></a><span class="lineno">12808</span>  <span class="keyword">const</span> <span class="keywordtype">int</span> delta = x.<a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#ae22e170815983961447c429f324c944d">e</a> - target_exponent;</div>
|
||
<div class="line"><a name="l12809"></a><span class="lineno">12809</span>  </div>
|
||
<div class="line"><a name="l12810"></a><span class="lineno">12810</span>  assert(delta >= 0);</div>
|
||
<div class="line"><a name="l12811"></a><span class="lineno">12811</span>  assert(((x.f << delta) >> delta) == x.f);</div>
|
||
<div class="line"><a name="l12812"></a><span class="lineno">12812</span>  </div>
|
||
<div class="line"><a name="l12813"></a><span class="lineno">12813</span>  <span class="keywordflow">return</span> {x.f << delta, target_exponent};</div>
|
||
<div class="line"><a name="l12814"></a><span class="lineno">12814</span>  }</div>
|
||
<div class="line"><a name="l12815"></a><span class="lineno">12815</span> };</div>
|
||
<div class="line"><a name="l12816"></a><span class="lineno">12816</span>  </div>
|
||
<div class="line"><a name="l12817"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1boundaries.html">12817</a></span> <span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1boundaries.html">boundaries</a></div>
|
||
<div class="line"><a name="l12818"></a><span class="lineno">12818</span> {</div>
|
||
<div class="line"><a name="l12819"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1boundaries.html#ad1668c60aeade5f2557fafed8b8aee1a">12819</a></span>  <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html">diyfp</a> <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1boundaries.html#ad1668c60aeade5f2557fafed8b8aee1a">w</a>;</div>
|
||
<div class="line"><a name="l12820"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1boundaries.html#aec4e5028333c01f3229062f31ce16763">12820</a></span>  <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html">diyfp</a> <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1boundaries.html#aec4e5028333c01f3229062f31ce16763">minus</a>;</div>
|
||
<div class="line"><a name="l12821"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1boundaries.html#a3321ae2816a6ec5250a0d8e29f798232">12821</a></span>  <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html">diyfp</a> <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1boundaries.html#a3321ae2816a6ec5250a0d8e29f798232">plus</a>;</div>
|
||
<div class="line"><a name="l12822"></a><span class="lineno">12822</span> };</div>
|
||
<div class="line"><a name="l12823"></a><span class="lineno">12823</span>  </div>
|
||
<div class="line"><a name="l12830"></a><span class="lineno">12830</span> <span class="keyword">template</span> <<span class="keyword">typename</span> FloatType></div>
|
||
<div class="line"><a name="l12831"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#a22b6e37654ac93c6d0d9c06ec1bf5ded">12831</a></span> <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1boundaries.html">boundaries</a> <a class="code" href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#a22b6e37654ac93c6d0d9c06ec1bf5ded">compute_boundaries</a>(FloatType value)</div>
|
||
<div class="line"><a name="l12832"></a><span class="lineno">12832</span> {</div>
|
||
<div class="line"><a name="l12833"></a><span class="lineno">12833</span>  assert(std::isfinite(value));</div>
|
||
<div class="line"><a name="l12834"></a><span class="lineno">12834</span>  assert(value > 0);</div>
|
||
<div class="line"><a name="l12835"></a><span class="lineno">12835</span>  </div>
|
||
<div class="line"><a name="l12836"></a><span class="lineno">12836</span>  <span class="comment">// Convert the IEEE representation into a diyfp.</span></div>
|
||
<div class="line"><a name="l12837"></a><span class="lineno">12837</span>  <span class="comment">//</span></div>
|
||
<div class="line"><a name="l12838"></a><span class="lineno">12838</span>  <span class="comment">// If v is denormal:</span></div>
|
||
<div class="line"><a name="l12839"></a><span class="lineno">12839</span>  <span class="comment">// value = 0.F * 2^(1 - bias) = ( F) * 2^(1 - bias - (p-1))</span></div>
|
||
<div class="line"><a name="l12840"></a><span class="lineno">12840</span>  <span class="comment">// If v is normalized:</span></div>
|
||
<div class="line"><a name="l12841"></a><span class="lineno">12841</span>  <span class="comment">// value = 1.F * 2^(E - bias) = (2^(p-1) + F) * 2^(E - bias - (p-1))</span></div>
|
||
<div class="line"><a name="l12842"></a><span class="lineno">12842</span>  </div>
|
||
<div class="line"><a name="l12843"></a><span class="lineno">12843</span>  static_assert(std::numeric_limits<FloatType>::is_iec559,</div>
|
||
<div class="line"><a name="l12844"></a><span class="lineno">12844</span>  <span class="stringliteral">"internal error: dtoa_short requires an IEEE-754 floating-point implementation"</span>);</div>
|
||
<div class="line"><a name="l12845"></a><span class="lineno">12845</span>  </div>
|
||
<div class="line"><a name="l12846"></a><span class="lineno">12846</span>  constexpr <span class="keywordtype">int</span> kPrecision = std::numeric_limits<FloatType>::digits; <span class="comment">// = p (includes the hidden bit)</span></div>
|
||
<div class="line"><a name="l12847"></a><span class="lineno">12847</span>  constexpr <span class="keywordtype">int</span> kBias = std::numeric_limits<FloatType>::max_exponent - 1 + (kPrecision - 1);</div>
|
||
<div class="line"><a name="l12848"></a><span class="lineno">12848</span>  constexpr <span class="keywordtype">int</span> kMinExp = 1 - kBias;</div>
|
||
<div class="line"><a name="l12849"></a><span class="lineno">12849</span>  constexpr std::uint64_t kHiddenBit = std::uint64_t{1} << (kPrecision - 1); <span class="comment">// = 2^(p-1)</span></div>
|
||
<div class="line"><a name="l12850"></a><span class="lineno">12850</span>  </div>
|
||
<div class="line"><a name="l12851"></a><span class="lineno">12851</span>  <span class="keyword">using</span> bits_type = <span class="keyword">typename</span> std::conditional<kPrecision == 24, std::uint32_t, std::uint64_t >::type;</div>
|
||
<div class="line"><a name="l12852"></a><span class="lineno">12852</span>  </div>
|
||
<div class="line"><a name="l12853"></a><span class="lineno">12853</span>  <span class="keyword">const</span> std::uint64_t bits = reinterpret_bits<bits_type>(value);</div>
|
||
<div class="line"><a name="l12854"></a><span class="lineno">12854</span>  <span class="keyword">const</span> std::uint64_t E = bits >> (kPrecision - 1);</div>
|
||
<div class="line"><a name="l12855"></a><span class="lineno">12855</span>  <span class="keyword">const</span> std::uint64_t F = bits & (kHiddenBit - 1);</div>
|
||
<div class="line"><a name="l12856"></a><span class="lineno">12856</span>  </div>
|
||
<div class="line"><a name="l12857"></a><span class="lineno">12857</span>  <span class="keyword">const</span> <span class="keywordtype">bool</span> is_denormal = E == 0;</div>
|
||
<div class="line"><a name="l12858"></a><span class="lineno">12858</span>  <span class="keyword">const</span> <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html">diyfp</a> v = is_denormal</div>
|
||
<div class="line"><a name="l12859"></a><span class="lineno">12859</span>  ? <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html">diyfp</a>(F, kMinExp)</div>
|
||
<div class="line"><a name="l12860"></a><span class="lineno">12860</span>  : <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html">diyfp</a>(F + kHiddenBit, <span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(E) - kBias);</div>
|
||
<div class="line"><a name="l12861"></a><span class="lineno">12861</span>  </div>
|
||
<div class="line"><a name="l12862"></a><span class="lineno">12862</span>  <span class="comment">// Compute the boundaries m- and m+ of the floating-point value</span></div>
|
||
<div class="line"><a name="l12863"></a><span class="lineno">12863</span>  <span class="comment">// v = f * 2^e.</span></div>
|
||
<div class="line"><a name="l12864"></a><span class="lineno">12864</span>  <span class="comment">//</span></div>
|
||
<div class="line"><a name="l12865"></a><span class="lineno">12865</span>  <span class="comment">// Determine v- and v+, the floating-point predecessor and successor if v,</span></div>
|
||
<div class="line"><a name="l12866"></a><span class="lineno">12866</span>  <span class="comment">// respectively.</span></div>
|
||
<div class="line"><a name="l12867"></a><span class="lineno">12867</span>  <span class="comment">//</span></div>
|
||
<div class="line"><a name="l12868"></a><span class="lineno">12868</span>  <span class="comment">// v- = v - 2^e if f != 2^(p-1) or e == e_min (A)</span></div>
|
||
<div class="line"><a name="l12869"></a><span class="lineno">12869</span>  <span class="comment">// = v - 2^(e-1) if f == 2^(p-1) and e > e_min (B)</span></div>
|
||
<div class="line"><a name="l12870"></a><span class="lineno">12870</span>  <span class="comment">//</span></div>
|
||
<div class="line"><a name="l12871"></a><span class="lineno">12871</span>  <span class="comment">// v+ = v + 2^e</span></div>
|
||
<div class="line"><a name="l12872"></a><span class="lineno">12872</span>  <span class="comment">//</span></div>
|
||
<div class="line"><a name="l12873"></a><span class="lineno">12873</span>  <span class="comment">// Let m- = (v- + v) / 2 and m+ = (v + v+) / 2. All real numbers _strictly_</span></div>
|
||
<div class="line"><a name="l12874"></a><span class="lineno">12874</span>  <span class="comment">// between m- and m+ round to v, regardless of how the input rounding</span></div>
|
||
<div class="line"><a name="l12875"></a><span class="lineno">12875</span>  <span class="comment">// algorithm breaks ties.</span></div>
|
||
<div class="line"><a name="l12876"></a><span class="lineno">12876</span>  <span class="comment">//</span></div>
|
||
<div class="line"><a name="l12877"></a><span class="lineno">12877</span>  <span class="comment">// ---+-------------+-------------+-------------+-------------+--- (A)</span></div>
|
||
<div class="line"><a name="l12878"></a><span class="lineno">12878</span>  <span class="comment">// v- m- v m+ v+</span></div>
|
||
<div class="line"><a name="l12879"></a><span class="lineno">12879</span>  <span class="comment">//</span></div>
|
||
<div class="line"><a name="l12880"></a><span class="lineno">12880</span>  <span class="comment">// -----------------+------+------+-------------+-------------+--- (B)</span></div>
|
||
<div class="line"><a name="l12881"></a><span class="lineno">12881</span>  <span class="comment">// v- m- v m+ v+</span></div>
|
||
<div class="line"><a name="l12882"></a><span class="lineno">12882</span>  </div>
|
||
<div class="line"><a name="l12883"></a><span class="lineno">12883</span>  <span class="keyword">const</span> <span class="keywordtype">bool</span> lower_boundary_is_closer = F == 0 and E > 1;</div>
|
||
<div class="line"><a name="l12884"></a><span class="lineno">12884</span>  <span class="keyword">const</span> <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html">diyfp</a> m_plus = <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html">diyfp</a>(2 * v.<a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#aea90459e340a231ca31d46946803ef51">f</a> + 1, v.<a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#ae22e170815983961447c429f324c944d">e</a> - 1);</div>
|
||
<div class="line"><a name="l12885"></a><span class="lineno">12885</span>  <span class="keyword">const</span> <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html">diyfp</a> m_minus = lower_boundary_is_closer</div>
|
||
<div class="line"><a name="l12886"></a><span class="lineno">12886</span>  ? <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html">diyfp</a>(4 * v.<a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#aea90459e340a231ca31d46946803ef51">f</a> - 1, v.<a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#ae22e170815983961447c429f324c944d">e</a> - 2) <span class="comment">// (B)</span></div>
|
||
<div class="line"><a name="l12887"></a><span class="lineno">12887</span>  : <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html">diyfp</a>(2 * v.<a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#aea90459e340a231ca31d46946803ef51">f</a> - 1, v.<a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#ae22e170815983961447c429f324c944d">e</a> - 1); <span class="comment">// (A)</span></div>
|
||
<div class="line"><a name="l12888"></a><span class="lineno">12888</span>  </div>
|
||
<div class="line"><a name="l12889"></a><span class="lineno">12889</span>  <span class="comment">// Determine the normalized w+ = m+.</span></div>
|
||
<div class="line"><a name="l12890"></a><span class="lineno">12890</span>  <span class="keyword">const</span> <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html">diyfp</a> w_plus = <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#a2246b5b40c7c6992153ef174063d6aa6">diyfp::normalize</a>(m_plus);</div>
|
||
<div class="line"><a name="l12891"></a><span class="lineno">12891</span>  </div>
|
||
<div class="line"><a name="l12892"></a><span class="lineno">12892</span>  <span class="comment">// Determine w- = m- such that e_(w-) = e_(w+).</span></div>
|
||
<div class="line"><a name="l12893"></a><span class="lineno">12893</span>  <span class="keyword">const</span> <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html">diyfp</a> w_minus = <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#a6b6665e467ebabe0c0f7418d3fe4b118">diyfp::normalize_to</a>(m_minus, w_plus.<a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#ae22e170815983961447c429f324c944d">e</a>);</div>
|
||
<div class="line"><a name="l12894"></a><span class="lineno">12894</span>  </div>
|
||
<div class="line"><a name="l12895"></a><span class="lineno">12895</span>  <span class="keywordflow">return</span> {<a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#a2246b5b40c7c6992153ef174063d6aa6">diyfp::normalize</a>(v), w_minus, w_plus};</div>
|
||
<div class="line"><a name="l12896"></a><span class="lineno">12896</span> }</div>
|
||
<div class="line"><a name="l12897"></a><span class="lineno">12897</span>  </div>
|
||
<div class="line"><a name="l12898"></a><span class="lineno">12898</span> <span class="comment">// Given normalized diyfp w, Grisu needs to find a (normalized) cached</span></div>
|
||
<div class="line"><a name="l12899"></a><span class="lineno">12899</span> <span class="comment">// power-of-ten c, such that the exponent of the product c * w = f * 2^e lies</span></div>
|
||
<div class="line"><a name="l12900"></a><span class="lineno">12900</span> <span class="comment">// within a certain range [alpha, gamma] (Definition 3.2 from [1])</span></div>
|
||
<div class="line"><a name="l12901"></a><span class="lineno">12901</span> <span class="comment">//</span></div>
|
||
<div class="line"><a name="l12902"></a><span class="lineno">12902</span> <span class="comment">// alpha <= e = e_c + e_w + q <= gamma</span></div>
|
||
<div class="line"><a name="l12903"></a><span class="lineno">12903</span> <span class="comment">//</span></div>
|
||
<div class="line"><a name="l12904"></a><span class="lineno">12904</span> <span class="comment">// or</span></div>
|
||
<div class="line"><a name="l12905"></a><span class="lineno">12905</span> <span class="comment">//</span></div>
|
||
<div class="line"><a name="l12906"></a><span class="lineno">12906</span> <span class="comment">// f_c * f_w * 2^alpha <= f_c 2^(e_c) * f_w 2^(e_w) * 2^q</span></div>
|
||
<div class="line"><a name="l12907"></a><span class="lineno">12907</span> <span class="comment">// <= f_c * f_w * 2^gamma</span></div>
|
||
<div class="line"><a name="l12908"></a><span class="lineno">12908</span> <span class="comment">//</span></div>
|
||
<div class="line"><a name="l12909"></a><span class="lineno">12909</span> <span class="comment">// Since c and w are normalized, i.e. 2^(q-1) <= f < 2^q, this implies</span></div>
|
||
<div class="line"><a name="l12910"></a><span class="lineno">12910</span> <span class="comment">//</span></div>
|
||
<div class="line"><a name="l12911"></a><span class="lineno">12911</span> <span class="comment">// 2^(q-1) * 2^(q-1) * 2^alpha <= c * w * 2^q < 2^q * 2^q * 2^gamma</span></div>
|
||
<div class="line"><a name="l12912"></a><span class="lineno">12912</span> <span class="comment">//</span></div>
|
||
<div class="line"><a name="l12913"></a><span class="lineno">12913</span> <span class="comment">// or</span></div>
|
||
<div class="line"><a name="l12914"></a><span class="lineno">12914</span> <span class="comment">//</span></div>
|
||
<div class="line"><a name="l12915"></a><span class="lineno">12915</span> <span class="comment">// 2^(q - 2 + alpha) <= c * w < 2^(q + gamma)</span></div>
|
||
<div class="line"><a name="l12916"></a><span class="lineno">12916</span> <span class="comment">//</span></div>
|
||
<div class="line"><a name="l12917"></a><span class="lineno">12917</span> <span class="comment">// The choice of (alpha,gamma) determines the size of the table and the form of</span></div>
|
||
<div class="line"><a name="l12918"></a><span class="lineno">12918</span> <span class="comment">// the digit generation procedure. Using (alpha,gamma)=(-60,-32) works out well</span></div>
|
||
<div class="line"><a name="l12919"></a><span class="lineno">12919</span> <span class="comment">// in practice:</span></div>
|
||
<div class="line"><a name="l12920"></a><span class="lineno">12920</span> <span class="comment">//</span></div>
|
||
<div class="line"><a name="l12921"></a><span class="lineno">12921</span> <span class="comment">// The idea is to cut the number c * w = f * 2^e into two parts, which can be</span></div>
|
||
<div class="line"><a name="l12922"></a><span class="lineno">12922</span> <span class="comment">// processed independently: An integral part p1, and a fractional part p2:</span></div>
|
||
<div class="line"><a name="l12923"></a><span class="lineno">12923</span> <span class="comment">//</span></div>
|
||
<div class="line"><a name="l12924"></a><span class="lineno">12924</span> <span class="comment">// f * 2^e = ( (f div 2^-e) * 2^-e + (f mod 2^-e) ) * 2^e</span></div>
|
||
<div class="line"><a name="l12925"></a><span class="lineno">12925</span> <span class="comment">// = (f div 2^-e) + (f mod 2^-e) * 2^e</span></div>
|
||
<div class="line"><a name="l12926"></a><span class="lineno">12926</span> <span class="comment">// = p1 + p2 * 2^e</span></div>
|
||
<div class="line"><a name="l12927"></a><span class="lineno">12927</span> <span class="comment">//</span></div>
|
||
<div class="line"><a name="l12928"></a><span class="lineno">12928</span> <span class="comment">// The conversion of p1 into decimal form requires a series of divisions and</span></div>
|
||
<div class="line"><a name="l12929"></a><span class="lineno">12929</span> <span class="comment">// modulos by (a power of) 10. These operations are faster for 32-bit than for</span></div>
|
||
<div class="line"><a name="l12930"></a><span class="lineno">12930</span> <span class="comment">// 64-bit integers, so p1 should ideally fit into a 32-bit integer. This can be</span></div>
|
||
<div class="line"><a name="l12931"></a><span class="lineno">12931</span> <span class="comment">// achieved by choosing</span></div>
|
||
<div class="line"><a name="l12932"></a><span class="lineno">12932</span> <span class="comment">//</span></div>
|
||
<div class="line"><a name="l12933"></a><span class="lineno">12933</span> <span class="comment">// -e >= 32 or e <= -32 := gamma</span></div>
|
||
<div class="line"><a name="l12934"></a><span class="lineno">12934</span> <span class="comment">//</span></div>
|
||
<div class="line"><a name="l12935"></a><span class="lineno">12935</span> <span class="comment">// In order to convert the fractional part</span></div>
|
||
<div class="line"><a name="l12936"></a><span class="lineno">12936</span> <span class="comment">//</span></div>
|
||
<div class="line"><a name="l12937"></a><span class="lineno">12937</span> <span class="comment">// p2 * 2^e = p2 / 2^-e = d[-1] / 10^1 + d[-2] / 10^2 + ...</span></div>
|
||
<div class="line"><a name="l12938"></a><span class="lineno">12938</span> <span class="comment">//</span></div>
|
||
<div class="line"><a name="l12939"></a><span class="lineno">12939</span> <span class="comment">// into decimal form, the fraction is repeatedly multiplied by 10 and the digits</span></div>
|
||
<div class="line"><a name="l12940"></a><span class="lineno">12940</span> <span class="comment">// d[-i] are extracted in order:</span></div>
|
||
<div class="line"><a name="l12941"></a><span class="lineno">12941</span> <span class="comment">//</span></div>
|
||
<div class="line"><a name="l12942"></a><span class="lineno">12942</span> <span class="comment">// (10 * p2) div 2^-e = d[-1]</span></div>
|
||
<div class="line"><a name="l12943"></a><span class="lineno">12943</span> <span class="comment">// (10 * p2) mod 2^-e = d[-2] / 10^1 + ...</span></div>
|
||
<div class="line"><a name="l12944"></a><span class="lineno">12944</span> <span class="comment">//</span></div>
|
||
<div class="line"><a name="l12945"></a><span class="lineno">12945</span> <span class="comment">// The multiplication by 10 must not overflow. It is sufficient to choose</span></div>
|
||
<div class="line"><a name="l12946"></a><span class="lineno">12946</span> <span class="comment">//</span></div>
|
||
<div class="line"><a name="l12947"></a><span class="lineno">12947</span> <span class="comment">// 10 * p2 < 16 * p2 = 2^4 * p2 <= 2^64.</span></div>
|
||
<div class="line"><a name="l12948"></a><span class="lineno">12948</span> <span class="comment">//</span></div>
|
||
<div class="line"><a name="l12949"></a><span class="lineno">12949</span> <span class="comment">// Since p2 = f mod 2^-e < 2^-e,</span></div>
|
||
<div class="line"><a name="l12950"></a><span class="lineno">12950</span> <span class="comment">//</span></div>
|
||
<div class="line"><a name="l12951"></a><span class="lineno">12951</span> <span class="comment">// -e <= 60 or e >= -60 := alpha</span></div>
|
||
<div class="line"><a name="l12952"></a><span class="lineno">12952</span>  </div>
|
||
<div class="line"><a name="l12953"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#ac1ea1316de0b4a219f707c76b1db1966">12953</a></span> constexpr <span class="keywordtype">int</span> <a class="code" href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#ac1ea1316de0b4a219f707c76b1db1966">kAlpha</a> = -60;</div>
|
||
<div class="line"><a name="l12954"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#a4a750fcc38da1ce68b7e25ab3a230e20">12954</a></span> constexpr <span class="keywordtype">int</span> <a class="code" href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#a4a750fcc38da1ce68b7e25ab3a230e20">kGamma</a> = -32;</div>
|
||
<div class="line"><a name="l12955"></a><span class="lineno">12955</span>  </div>
|
||
<div class="line"><a name="l12956"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1cached__power.html">12956</a></span> <span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1cached__power.html">cached_power</a> <span class="comment">// c = f * 2^e ~= 10^k</span></div>
|
||
<div class="line"><a name="l12957"></a><span class="lineno">12957</span> {</div>
|
||
<div class="line"><a name="l12958"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1cached__power.html#a21ae81f515f5b08d5bf423775ee56074">12958</a></span>  std::uint64_t <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1cached__power.html#a21ae81f515f5b08d5bf423775ee56074">f</a>;</div>
|
||
<div class="line"><a name="l12959"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1cached__power.html#a9e89bc89bb7bf4361f43ea27eed91d23">12959</a></span>  <span class="keywordtype">int</span> <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1cached__power.html#a9e89bc89bb7bf4361f43ea27eed91d23">e</a>;</div>
|
||
<div class="line"><a name="l12960"></a><span class="lineno"><a class="line" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1cached__power.html#a8c1f2efed643eeaa8fae83c697a29c6a">12960</a></span>  <span class="keywordtype">int</span> <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1cached__power.html#a8c1f2efed643eeaa8fae83c697a29c6a">k</a>;</div>
|
||
<div class="line"><a name="l12961"></a><span class="lineno">12961</span> };</div>
|
||
<div class="line"><a name="l12962"></a><span class="lineno">12962</span>  </div>
|
||
<div class="line"><a name="l12970"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#adbf329a18c5cf854a3477327afd2200b">12970</a></span> <span class="keyword">inline</span> <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1cached__power.html">cached_power</a> <a class="code" href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#adbf329a18c5cf854a3477327afd2200b">get_cached_power_for_binary_exponent</a>(<span class="keywordtype">int</span> e)</div>
|
||
<div class="line"><a name="l12971"></a><span class="lineno">12971</span> {</div>
|
||
<div class="line"><a name="l12972"></a><span class="lineno">12972</span>  <span class="comment">// Now</span></div>
|
||
<div class="line"><a name="l12973"></a><span class="lineno">12973</span>  <span class="comment">//</span></div>
|
||
<div class="line"><a name="l12974"></a><span class="lineno">12974</span>  <span class="comment">// alpha <= e_c + e + q <= gamma (1)</span></div>
|
||
<div class="line"><a name="l12975"></a><span class="lineno">12975</span>  <span class="comment">// ==> f_c * 2^alpha <= c * 2^e * 2^q</span></div>
|
||
<div class="line"><a name="l12976"></a><span class="lineno">12976</span>  <span class="comment">//</span></div>
|
||
<div class="line"><a name="l12977"></a><span class="lineno">12977</span>  <span class="comment">// and since the c's are normalized, 2^(q-1) <= f_c,</span></div>
|
||
<div class="line"><a name="l12978"></a><span class="lineno">12978</span>  <span class="comment">//</span></div>
|
||
<div class="line"><a name="l12979"></a><span class="lineno">12979</span>  <span class="comment">// ==> 2^(q - 1 + alpha) <= c * 2^(e + q)</span></div>
|
||
<div class="line"><a name="l12980"></a><span class="lineno">12980</span>  <span class="comment">// ==> 2^(alpha - e - 1) <= c</span></div>
|
||
<div class="line"><a name="l12981"></a><span class="lineno">12981</span>  <span class="comment">//</span></div>
|
||
<div class="line"><a name="l12982"></a><span class="lineno">12982</span>  <span class="comment">// If c were an exact power of ten, i.e. c = 10^k, one may determine k as</span></div>
|
||
<div class="line"><a name="l12983"></a><span class="lineno">12983</span>  <span class="comment">//</span></div>
|
||
<div class="line"><a name="l12984"></a><span class="lineno">12984</span>  <span class="comment">// k = ceil( log_10( 2^(alpha - e - 1) ) )</span></div>
|
||
<div class="line"><a name="l12985"></a><span class="lineno">12985</span>  <span class="comment">// = ceil( (alpha - e - 1) * log_10(2) )</span></div>
|
||
<div class="line"><a name="l12986"></a><span class="lineno">12986</span>  <span class="comment">//</span></div>
|
||
<div class="line"><a name="l12987"></a><span class="lineno">12987</span>  <span class="comment">// From the paper:</span></div>
|
||
<div class="line"><a name="l12988"></a><span class="lineno">12988</span>  <span class="comment">// "In theory the result of the procedure could be wrong since c is rounded,</span></div>
|
||
<div class="line"><a name="l12989"></a><span class="lineno">12989</span>  <span class="comment">// and the computation itself is approximated [...]. In practice, however,</span></div>
|
||
<div class="line"><a name="l12990"></a><span class="lineno">12990</span>  <span class="comment">// this simple function is sufficient."</span></div>
|
||
<div class="line"><a name="l12991"></a><span class="lineno">12991</span>  <span class="comment">//</span></div>
|
||
<div class="line"><a name="l12992"></a><span class="lineno">12992</span>  <span class="comment">// For IEEE double precision floating-point numbers converted into</span></div>
|
||
<div class="line"><a name="l12993"></a><span class="lineno">12993</span>  <span class="comment">// normalized diyfp's w = f * 2^e, with q = 64,</span></div>
|
||
<div class="line"><a name="l12994"></a><span class="lineno">12994</span>  <span class="comment">//</span></div>
|
||
<div class="line"><a name="l12995"></a><span class="lineno">12995</span>  <span class="comment">// e >= -1022 (min IEEE exponent)</span></div>
|
||
<div class="line"><a name="l12996"></a><span class="lineno">12996</span>  <span class="comment">// -52 (p - 1)</span></div>
|
||
<div class="line"><a name="l12997"></a><span class="lineno">12997</span>  <span class="comment">// -52 (p - 1, possibly normalize denormal IEEE numbers)</span></div>
|
||
<div class="line"><a name="l12998"></a><span class="lineno">12998</span>  <span class="comment">// -11 (normalize the diyfp)</span></div>
|
||
<div class="line"><a name="l12999"></a><span class="lineno">12999</span>  <span class="comment">// = -1137</span></div>
|
||
<div class="line"><a name="l13000"></a><span class="lineno">13000</span>  <span class="comment">//</span></div>
|
||
<div class="line"><a name="l13001"></a><span class="lineno">13001</span>  <span class="comment">// and</span></div>
|
||
<div class="line"><a name="l13002"></a><span class="lineno">13002</span>  <span class="comment">//</span></div>
|
||
<div class="line"><a name="l13003"></a><span class="lineno">13003</span>  <span class="comment">// e <= +1023 (max IEEE exponent)</span></div>
|
||
<div class="line"><a name="l13004"></a><span class="lineno">13004</span>  <span class="comment">// -52 (p - 1)</span></div>
|
||
<div class="line"><a name="l13005"></a><span class="lineno">13005</span>  <span class="comment">// -11 (normalize the diyfp)</span></div>
|
||
<div class="line"><a name="l13006"></a><span class="lineno">13006</span>  <span class="comment">// = 960</span></div>
|
||
<div class="line"><a name="l13007"></a><span class="lineno">13007</span>  <span class="comment">//</span></div>
|
||
<div class="line"><a name="l13008"></a><span class="lineno">13008</span>  <span class="comment">// This binary exponent range [-1137,960] results in a decimal exponent</span></div>
|
||
<div class="line"><a name="l13009"></a><span class="lineno">13009</span>  <span class="comment">// range [-307,324]. One does not need to store a cached power for each</span></div>
|
||
<div class="line"><a name="l13010"></a><span class="lineno">13010</span>  <span class="comment">// k in this range. For each such k it suffices to find a cached power</span></div>
|
||
<div class="line"><a name="l13011"></a><span class="lineno">13011</span>  <span class="comment">// such that the exponent of the product lies in [alpha,gamma].</span></div>
|
||
<div class="line"><a name="l13012"></a><span class="lineno">13012</span>  <span class="comment">// This implies that the difference of the decimal exponents of adjacent</span></div>
|
||
<div class="line"><a name="l13013"></a><span class="lineno">13013</span>  <span class="comment">// table entries must be less than or equal to</span></div>
|
||
<div class="line"><a name="l13014"></a><span class="lineno">13014</span>  <span class="comment">//</span></div>
|
||
<div class="line"><a name="l13015"></a><span class="lineno">13015</span>  <span class="comment">// floor( (gamma - alpha) * log_10(2) ) = 8.</span></div>
|
||
<div class="line"><a name="l13016"></a><span class="lineno">13016</span>  <span class="comment">//</span></div>
|
||
<div class="line"><a name="l13017"></a><span class="lineno">13017</span>  <span class="comment">// (A smaller distance gamma-alpha would require a larger table.)</span></div>
|
||
<div class="line"><a name="l13018"></a><span class="lineno">13018</span>  </div>
|
||
<div class="line"><a name="l13019"></a><span class="lineno">13019</span>  <span class="comment">// NB:</span></div>
|
||
<div class="line"><a name="l13020"></a><span class="lineno">13020</span>  <span class="comment">// Actually this function returns c, such that -60 <= e_c + e + 64 <= -34.</span></div>
|
||
<div class="line"><a name="l13021"></a><span class="lineno">13021</span>  </div>
|
||
<div class="line"><a name="l13022"></a><span class="lineno">13022</span>  constexpr <span class="keywordtype">int</span> kCachedPowersMinDecExp = -300;</div>
|
||
<div class="line"><a name="l13023"></a><span class="lineno">13023</span>  constexpr <span class="keywordtype">int</span> kCachedPowersDecStep = 8;</div>
|
||
<div class="line"><a name="l13024"></a><span class="lineno">13024</span>  </div>
|
||
<div class="line"><a name="l13025"></a><span class="lineno">13025</span>  <span class="keyword">static</span> constexpr std::array<cached_power, 79> kCachedPowers =</div>
|
||
<div class="line"><a name="l13026"></a><span class="lineno">13026</span>  {</div>
|
||
<div class="line"><a name="l13027"></a><span class="lineno">13027</span>  {</div>
|
||
<div class="line"><a name="l13028"></a><span class="lineno">13028</span>  { 0xAB70FE17C79AC6CA, -1060, -300 },</div>
|
||
<div class="line"><a name="l13029"></a><span class="lineno">13029</span>  { 0xFF77B1FCBEBCDC4F, -1034, -292 },</div>
|
||
<div class="line"><a name="l13030"></a><span class="lineno">13030</span>  { 0xBE5691EF416BD60C, -1007, -284 },</div>
|
||
<div class="line"><a name="l13031"></a><span class="lineno">13031</span>  { 0x8DD01FAD907FFC3C, -980, -276 },</div>
|
||
<div class="line"><a name="l13032"></a><span class="lineno">13032</span>  { 0xD3515C2831559A83, -954, -268 },</div>
|
||
<div class="line"><a name="l13033"></a><span class="lineno">13033</span>  { 0x9D71AC8FADA6C9B5, -927, -260 },</div>
|
||
<div class="line"><a name="l13034"></a><span class="lineno">13034</span>  { 0xEA9C227723EE8BCB, -901, -252 },</div>
|
||
<div class="line"><a name="l13035"></a><span class="lineno">13035</span>  { 0xAECC49914078536D, -874, -244 },</div>
|
||
<div class="line"><a name="l13036"></a><span class="lineno">13036</span>  { 0x823C12795DB6CE57, -847, -236 },</div>
|
||
<div class="line"><a name="l13037"></a><span class="lineno">13037</span>  { 0xC21094364DFB5637, -821, -228 },</div>
|
||
<div class="line"><a name="l13038"></a><span class="lineno">13038</span>  { 0x9096EA6F3848984F, -794, -220 },</div>
|
||
<div class="line"><a name="l13039"></a><span class="lineno">13039</span>  { 0xD77485CB25823AC7, -768, -212 },</div>
|
||
<div class="line"><a name="l13040"></a><span class="lineno">13040</span>  { 0xA086CFCD97BF97F4, -741, -204 },</div>
|
||
<div class="line"><a name="l13041"></a><span class="lineno">13041</span>  { 0xEF340A98172AACE5, -715, -196 },</div>
|
||
<div class="line"><a name="l13042"></a><span class="lineno">13042</span>  { 0xB23867FB2A35B28E, -688, -188 },</div>
|
||
<div class="line"><a name="l13043"></a><span class="lineno">13043</span>  { 0x84C8D4DFD2C63F3B, -661, -180 },</div>
|
||
<div class="line"><a name="l13044"></a><span class="lineno">13044</span>  { 0xC5DD44271AD3CDBA, -635, -172 },</div>
|
||
<div class="line"><a name="l13045"></a><span class="lineno">13045</span>  { 0x936B9FCEBB25C996, -608, -164 },</div>
|
||
<div class="line"><a name="l13046"></a><span class="lineno">13046</span>  { 0xDBAC6C247D62A584, -582, -156 },</div>
|
||
<div class="line"><a name="l13047"></a><span class="lineno">13047</span>  { 0xA3AB66580D5FDAF6, -555, -148 },</div>
|
||
<div class="line"><a name="l13048"></a><span class="lineno">13048</span>  { 0xF3E2F893DEC3F126, -529, -140 },</div>
|
||
<div class="line"><a name="l13049"></a><span class="lineno">13049</span>  { 0xB5B5ADA8AAFF80B8, -502, -132 },</div>
|
||
<div class="line"><a name="l13050"></a><span class="lineno">13050</span>  { 0x87625F056C7C4A8B, -475, -124 },</div>
|
||
<div class="line"><a name="l13051"></a><span class="lineno">13051</span>  { 0xC9BCFF6034C13053, -449, -116 },</div>
|
||
<div class="line"><a name="l13052"></a><span class="lineno">13052</span>  { 0x964E858C91BA2655, -422, -108 },</div>
|
||
<div class="line"><a name="l13053"></a><span class="lineno">13053</span>  { 0xDFF9772470297EBD, -396, -100 },</div>
|
||
<div class="line"><a name="l13054"></a><span class="lineno">13054</span>  { 0xA6DFBD9FB8E5B88F, -369, -92 },</div>
|
||
<div class="line"><a name="l13055"></a><span class="lineno">13055</span>  { 0xF8A95FCF88747D94, -343, -84 },</div>
|
||
<div class="line"><a name="l13056"></a><span class="lineno">13056</span>  { 0xB94470938FA89BCF, -316, -76 },</div>
|
||
<div class="line"><a name="l13057"></a><span class="lineno">13057</span>  { 0x8A08F0F8BF0F156B, -289, -68 },</div>
|
||
<div class="line"><a name="l13058"></a><span class="lineno">13058</span>  { 0xCDB02555653131B6, -263, -60 },</div>
|
||
<div class="line"><a name="l13059"></a><span class="lineno">13059</span>  { 0x993FE2C6D07B7FAC, -236, -52 },</div>
|
||
<div class="line"><a name="l13060"></a><span class="lineno">13060</span>  { 0xE45C10C42A2B3B06, -210, -44 },</div>
|
||
<div class="line"><a name="l13061"></a><span class="lineno">13061</span>  { 0xAA242499697392D3, -183, -36 },</div>
|
||
<div class="line"><a name="l13062"></a><span class="lineno">13062</span>  { 0xFD87B5F28300CA0E, -157, -28 },</div>
|
||
<div class="line"><a name="l13063"></a><span class="lineno">13063</span>  { 0xBCE5086492111AEB, -130, -20 },</div>
|
||
<div class="line"><a name="l13064"></a><span class="lineno">13064</span>  { 0x8CBCCC096F5088CC, -103, -12 },</div>
|
||
<div class="line"><a name="l13065"></a><span class="lineno">13065</span>  { 0xD1B71758E219652C, -77, -4 },</div>
|
||
<div class="line"><a name="l13066"></a><span class="lineno">13066</span>  { 0x9C40000000000000, -50, 4 },</div>
|
||
<div class="line"><a name="l13067"></a><span class="lineno">13067</span>  { 0xE8D4A51000000000, -24, 12 },</div>
|
||
<div class="line"><a name="l13068"></a><span class="lineno">13068</span>  { 0xAD78EBC5AC620000, 3, 20 },</div>
|
||
<div class="line"><a name="l13069"></a><span class="lineno">13069</span>  { 0x813F3978F8940984, 30, 28 },</div>
|
||
<div class="line"><a name="l13070"></a><span class="lineno">13070</span>  { 0xC097CE7BC90715B3, 56, 36 },</div>
|
||
<div class="line"><a name="l13071"></a><span class="lineno">13071</span>  { 0x8F7E32CE7BEA5C70, 83, 44 },</div>
|
||
<div class="line"><a name="l13072"></a><span class="lineno">13072</span>  { 0xD5D238A4ABE98068, 109, 52 },</div>
|
||
<div class="line"><a name="l13073"></a><span class="lineno">13073</span>  { 0x9F4F2726179A2245, 136, 60 },</div>
|
||
<div class="line"><a name="l13074"></a><span class="lineno">13074</span>  { 0xED63A231D4C4FB27, 162, 68 },</div>
|
||
<div class="line"><a name="l13075"></a><span class="lineno">13075</span>  { 0xB0DE65388CC8ADA8, 189, 76 },</div>
|
||
<div class="line"><a name="l13076"></a><span class="lineno">13076</span>  { 0x83C7088E1AAB65DB, 216, 84 },</div>
|
||
<div class="line"><a name="l13077"></a><span class="lineno">13077</span>  { 0xC45D1DF942711D9A, 242, 92 },</div>
|
||
<div class="line"><a name="l13078"></a><span class="lineno">13078</span>  { 0x924D692CA61BE758, 269, 100 },</div>
|
||
<div class="line"><a name="l13079"></a><span class="lineno">13079</span>  { 0xDA01EE641A708DEA, 295, 108 },</div>
|
||
<div class="line"><a name="l13080"></a><span class="lineno">13080</span>  { 0xA26DA3999AEF774A, 322, 116 },</div>
|
||
<div class="line"><a name="l13081"></a><span class="lineno">13081</span>  { 0xF209787BB47D6B85, 348, 124 },</div>
|
||
<div class="line"><a name="l13082"></a><span class="lineno">13082</span>  { 0xB454E4A179DD1877, 375, 132 },</div>
|
||
<div class="line"><a name="l13083"></a><span class="lineno">13083</span>  { 0x865B86925B9BC5C2, 402, 140 },</div>
|
||
<div class="line"><a name="l13084"></a><span class="lineno">13084</span>  { 0xC83553C5C8965D3D, 428, 148 },</div>
|
||
<div class="line"><a name="l13085"></a><span class="lineno">13085</span>  { 0x952AB45CFA97A0B3, 455, 156 },</div>
|
||
<div class="line"><a name="l13086"></a><span class="lineno">13086</span>  { 0xDE469FBD99A05FE3, 481, 164 },</div>
|
||
<div class="line"><a name="l13087"></a><span class="lineno">13087</span>  { 0xA59BC234DB398C25, 508, 172 },</div>
|
||
<div class="line"><a name="l13088"></a><span class="lineno">13088</span>  { 0xF6C69A72A3989F5C, 534, 180 },</div>
|
||
<div class="line"><a name="l13089"></a><span class="lineno">13089</span>  { 0xB7DCBF5354E9BECE, 561, 188 },</div>
|
||
<div class="line"><a name="l13090"></a><span class="lineno">13090</span>  { 0x88FCF317F22241E2, 588, 196 },</div>
|
||
<div class="line"><a name="l13091"></a><span class="lineno">13091</span>  { 0xCC20CE9BD35C78A5, 614, 204 },</div>
|
||
<div class="line"><a name="l13092"></a><span class="lineno">13092</span>  { 0x98165AF37B2153DF, 641, 212 },</div>
|
||
<div class="line"><a name="l13093"></a><span class="lineno">13093</span>  { 0xE2A0B5DC971F303A, 667, 220 },</div>
|
||
<div class="line"><a name="l13094"></a><span class="lineno">13094</span>  { 0xA8D9D1535CE3B396, 694, 228 },</div>
|
||
<div class="line"><a name="l13095"></a><span class="lineno">13095</span>  { 0xFB9B7CD9A4A7443C, 720, 236 },</div>
|
||
<div class="line"><a name="l13096"></a><span class="lineno">13096</span>  { 0xBB764C4CA7A44410, 747, 244 },</div>
|
||
<div class="line"><a name="l13097"></a><span class="lineno">13097</span>  { 0x8BAB8EEFB6409C1A, 774, 252 },</div>
|
||
<div class="line"><a name="l13098"></a><span class="lineno">13098</span>  { 0xD01FEF10A657842C, 800, 260 },</div>
|
||
<div class="line"><a name="l13099"></a><span class="lineno">13099</span>  { 0x9B10A4E5E9913129, 827, 268 },</div>
|
||
<div class="line"><a name="l13100"></a><span class="lineno">13100</span>  { 0xE7109BFBA19C0C9D, 853, 276 },</div>
|
||
<div class="line"><a name="l13101"></a><span class="lineno">13101</span>  { 0xAC2820D9623BF429, 880, 284 },</div>
|
||
<div class="line"><a name="l13102"></a><span class="lineno">13102</span>  { 0x80444B5E7AA7CF85, 907, 292 },</div>
|
||
<div class="line"><a name="l13103"></a><span class="lineno">13103</span>  { 0xBF21E44003ACDD2D, 933, 300 },</div>
|
||
<div class="line"><a name="l13104"></a><span class="lineno">13104</span>  { 0x8E679C2F5E44FF8F, 960, 308 },</div>
|
||
<div class="line"><a name="l13105"></a><span class="lineno">13105</span>  { 0xD433179D9C8CB841, 986, 316 },</div>
|
||
<div class="line"><a name="l13106"></a><span class="lineno">13106</span>  { 0x9E19DB92B4E31BA9, 1013, 324 },</div>
|
||
<div class="line"><a name="l13107"></a><span class="lineno">13107</span>  }</div>
|
||
<div class="line"><a name="l13108"></a><span class="lineno">13108</span>  };</div>
|
||
<div class="line"><a name="l13109"></a><span class="lineno">13109</span>  </div>
|
||
<div class="line"><a name="l13110"></a><span class="lineno">13110</span>  <span class="comment">// This computation gives exactly the same results for k as</span></div>
|
||
<div class="line"><a name="l13111"></a><span class="lineno">13111</span>  <span class="comment">// k = ceil((kAlpha - e - 1) * 0.30102999566398114)</span></div>
|
||
<div class="line"><a name="l13112"></a><span class="lineno">13112</span>  <span class="comment">// for |e| <= 1500, but doesn't require floating-point operations.</span></div>
|
||
<div class="line"><a name="l13113"></a><span class="lineno">13113</span>  <span class="comment">// NB: log_10(2) ~= 78913 / 2^18</span></div>
|
||
<div class="line"><a name="l13114"></a><span class="lineno">13114</span>  assert(e >= -1500);</div>
|
||
<div class="line"><a name="l13115"></a><span class="lineno">13115</span>  assert(e <= 1500);</div>
|
||
<div class="line"><a name="l13116"></a><span class="lineno">13116</span>  <span class="keyword">const</span> <span class="keywordtype">int</span> f = <a class="code" href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#ac1ea1316de0b4a219f707c76b1db1966">kAlpha</a> - e - 1;</div>
|
||
<div class="line"><a name="l13117"></a><span class="lineno">13117</span>  <span class="keyword">const</span> <span class="keywordtype">int</span> k = (f * 78913) / (1 << 18) + <span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(f > 0);</div>
|
||
<div class="line"><a name="l13118"></a><span class="lineno">13118</span>  </div>
|
||
<div class="line"><a name="l13119"></a><span class="lineno">13119</span>  <span class="keyword">const</span> <span class="keywordtype">int</span> index = (-kCachedPowersMinDecExp + k + (kCachedPowersDecStep - 1)) / kCachedPowersDecStep;</div>
|
||
<div class="line"><a name="l13120"></a><span class="lineno">13120</span>  assert(index >= 0);</div>
|
||
<div class="line"><a name="l13121"></a><span class="lineno">13121</span>  assert(<span class="keyword">static_cast<</span>std::size_t<span class="keyword">></span>(index) < kCachedPowers.size());</div>
|
||
<div class="line"><a name="l13122"></a><span class="lineno">13122</span>  </div>
|
||
<div class="line"><a name="l13123"></a><span class="lineno">13123</span>  <span class="keyword">const</span> <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1cached__power.html">cached_power</a> cached = kCachedPowers[<span class="keyword">static_cast<</span>std::size_t<span class="keyword">></span>(index)];</div>
|
||
<div class="line"><a name="l13124"></a><span class="lineno">13124</span>  assert(<a class="code" href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#ac1ea1316de0b4a219f707c76b1db1966">kAlpha</a> <= cached.<a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1cached__power.html#a9e89bc89bb7bf4361f43ea27eed91d23">e</a> + e + 64);</div>
|
||
<div class="line"><a name="l13125"></a><span class="lineno">13125</span>  assert(<a class="code" href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#a4a750fcc38da1ce68b7e25ab3a230e20">kGamma</a> >= cached.<a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1cached__power.html#a9e89bc89bb7bf4361f43ea27eed91d23">e</a> + e + 64);</div>
|
||
<div class="line"><a name="l13126"></a><span class="lineno">13126</span>  </div>
|
||
<div class="line"><a name="l13127"></a><span class="lineno">13127</span>  <span class="keywordflow">return</span> cached;</div>
|
||
<div class="line"><a name="l13128"></a><span class="lineno">13128</span> }</div>
|
||
<div class="line"><a name="l13129"></a><span class="lineno">13129</span>  </div>
|
||
<div class="line"><a name="l13134"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#a36ded358763b5dbcea9867660fbe4e28">13134</a></span> <span class="keyword">inline</span> <span class="keywordtype">int</span> <a class="code" href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#a36ded358763b5dbcea9867660fbe4e28">find_largest_pow10</a>(<span class="keyword">const</span> std::uint32_t n, std::uint32_t& pow10)</div>
|
||
<div class="line"><a name="l13135"></a><span class="lineno">13135</span> {</div>
|
||
<div class="line"><a name="l13136"></a><span class="lineno">13136</span>  <span class="comment">// LCOV_EXCL_START</span></div>
|
||
<div class="line"><a name="l13137"></a><span class="lineno">13137</span>  <span class="keywordflow">if</span> (n >= 1000000000)</div>
|
||
<div class="line"><a name="l13138"></a><span class="lineno">13138</span>  {</div>
|
||
<div class="line"><a name="l13139"></a><span class="lineno">13139</span>  pow10 = 1000000000;</div>
|
||
<div class="line"><a name="l13140"></a><span class="lineno">13140</span>  <span class="keywordflow">return</span> 10;</div>
|
||
<div class="line"><a name="l13141"></a><span class="lineno">13141</span>  }</div>
|
||
<div class="line"><a name="l13142"></a><span class="lineno">13142</span>  <span class="comment">// LCOV_EXCL_STOP</span></div>
|
||
<div class="line"><a name="l13143"></a><span class="lineno">13143</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (n >= 100000000)</div>
|
||
<div class="line"><a name="l13144"></a><span class="lineno">13144</span>  {</div>
|
||
<div class="line"><a name="l13145"></a><span class="lineno">13145</span>  pow10 = 100000000;</div>
|
||
<div class="line"><a name="l13146"></a><span class="lineno">13146</span>  <span class="keywordflow">return</span> 9;</div>
|
||
<div class="line"><a name="l13147"></a><span class="lineno">13147</span>  }</div>
|
||
<div class="line"><a name="l13148"></a><span class="lineno">13148</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (n >= 10000000)</div>
|
||
<div class="line"><a name="l13149"></a><span class="lineno">13149</span>  {</div>
|
||
<div class="line"><a name="l13150"></a><span class="lineno">13150</span>  pow10 = 10000000;</div>
|
||
<div class="line"><a name="l13151"></a><span class="lineno">13151</span>  <span class="keywordflow">return</span> 8;</div>
|
||
<div class="line"><a name="l13152"></a><span class="lineno">13152</span>  }</div>
|
||
<div class="line"><a name="l13153"></a><span class="lineno">13153</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (n >= 1000000)</div>
|
||
<div class="line"><a name="l13154"></a><span class="lineno">13154</span>  {</div>
|
||
<div class="line"><a name="l13155"></a><span class="lineno">13155</span>  pow10 = 1000000;</div>
|
||
<div class="line"><a name="l13156"></a><span class="lineno">13156</span>  <span class="keywordflow">return</span> 7;</div>
|
||
<div class="line"><a name="l13157"></a><span class="lineno">13157</span>  }</div>
|
||
<div class="line"><a name="l13158"></a><span class="lineno">13158</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (n >= 100000)</div>
|
||
<div class="line"><a name="l13159"></a><span class="lineno">13159</span>  {</div>
|
||
<div class="line"><a name="l13160"></a><span class="lineno">13160</span>  pow10 = 100000;</div>
|
||
<div class="line"><a name="l13161"></a><span class="lineno">13161</span>  <span class="keywordflow">return</span> 6;</div>
|
||
<div class="line"><a name="l13162"></a><span class="lineno">13162</span>  }</div>
|
||
<div class="line"><a name="l13163"></a><span class="lineno">13163</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (n >= 10000)</div>
|
||
<div class="line"><a name="l13164"></a><span class="lineno">13164</span>  {</div>
|
||
<div class="line"><a name="l13165"></a><span class="lineno">13165</span>  pow10 = 10000;</div>
|
||
<div class="line"><a name="l13166"></a><span class="lineno">13166</span>  <span class="keywordflow">return</span> 5;</div>
|
||
<div class="line"><a name="l13167"></a><span class="lineno">13167</span>  }</div>
|
||
<div class="line"><a name="l13168"></a><span class="lineno">13168</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (n >= 1000)</div>
|
||
<div class="line"><a name="l13169"></a><span class="lineno">13169</span>  {</div>
|
||
<div class="line"><a name="l13170"></a><span class="lineno">13170</span>  pow10 = 1000;</div>
|
||
<div class="line"><a name="l13171"></a><span class="lineno">13171</span>  <span class="keywordflow">return</span> 4;</div>
|
||
<div class="line"><a name="l13172"></a><span class="lineno">13172</span>  }</div>
|
||
<div class="line"><a name="l13173"></a><span class="lineno">13173</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (n >= 100)</div>
|
||
<div class="line"><a name="l13174"></a><span class="lineno">13174</span>  {</div>
|
||
<div class="line"><a name="l13175"></a><span class="lineno">13175</span>  pow10 = 100;</div>
|
||
<div class="line"><a name="l13176"></a><span class="lineno">13176</span>  <span class="keywordflow">return</span> 3;</div>
|
||
<div class="line"><a name="l13177"></a><span class="lineno">13177</span>  }</div>
|
||
<div class="line"><a name="l13178"></a><span class="lineno">13178</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (n >= 10)</div>
|
||
<div class="line"><a name="l13179"></a><span class="lineno">13179</span>  {</div>
|
||
<div class="line"><a name="l13180"></a><span class="lineno">13180</span>  pow10 = 10;</div>
|
||
<div class="line"><a name="l13181"></a><span class="lineno">13181</span>  <span class="keywordflow">return</span> 2;</div>
|
||
<div class="line"><a name="l13182"></a><span class="lineno">13182</span>  }</div>
|
||
<div class="line"><a name="l13183"></a><span class="lineno">13183</span>  <span class="keywordflow">else</span></div>
|
||
<div class="line"><a name="l13184"></a><span class="lineno">13184</span>  {</div>
|
||
<div class="line"><a name="l13185"></a><span class="lineno">13185</span>  pow10 = 1;</div>
|
||
<div class="line"><a name="l13186"></a><span class="lineno">13186</span>  <span class="keywordflow">return</span> 1;</div>
|
||
<div class="line"><a name="l13187"></a><span class="lineno">13187</span>  }</div>
|
||
<div class="line"><a name="l13188"></a><span class="lineno">13188</span> }</div>
|
||
<div class="line"><a name="l13189"></a><span class="lineno">13189</span>  </div>
|
||
<div class="line"><a name="l13190"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#a5bc841e0bee12fd6489d49cf7bd07bb4">13190</a></span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#a5bc841e0bee12fd6489d49cf7bd07bb4">grisu2_round</a>(<span class="keywordtype">char</span>* buf, <span class="keywordtype">int</span> len, std::uint64_t dist, std::uint64_t delta,</div>
|
||
<div class="line"><a name="l13191"></a><span class="lineno">13191</span>  std::uint64_t rest, std::uint64_t ten_k)</div>
|
||
<div class="line"><a name="l13192"></a><span class="lineno">13192</span> {</div>
|
||
<div class="line"><a name="l13193"></a><span class="lineno">13193</span>  assert(len >= 1);</div>
|
||
<div class="line"><a name="l13194"></a><span class="lineno">13194</span>  assert(dist <= delta);</div>
|
||
<div class="line"><a name="l13195"></a><span class="lineno">13195</span>  assert(rest <= delta);</div>
|
||
<div class="line"><a name="l13196"></a><span class="lineno">13196</span>  assert(ten_k > 0);</div>
|
||
<div class="line"><a name="l13197"></a><span class="lineno">13197</span>  </div>
|
||
<div class="line"><a name="l13198"></a><span class="lineno">13198</span>  <span class="comment">// <--------------------------- delta ----></span></div>
|
||
<div class="line"><a name="l13199"></a><span class="lineno">13199</span>  <span class="comment">// <---- dist ---------></span></div>
|
||
<div class="line"><a name="l13200"></a><span class="lineno">13200</span>  <span class="comment">// --------------[------------------+-------------------]--------------</span></div>
|
||
<div class="line"><a name="l13201"></a><span class="lineno">13201</span>  <span class="comment">// M- w M+</span></div>
|
||
<div class="line"><a name="l13202"></a><span class="lineno">13202</span>  <span class="comment">//</span></div>
|
||
<div class="line"><a name="l13203"></a><span class="lineno">13203</span>  <span class="comment">// ten_k</span></div>
|
||
<div class="line"><a name="l13204"></a><span class="lineno">13204</span>  <span class="comment">// <------></span></div>
|
||
<div class="line"><a name="l13205"></a><span class="lineno">13205</span>  <span class="comment">// <---- rest ----></span></div>
|
||
<div class="line"><a name="l13206"></a><span class="lineno">13206</span>  <span class="comment">// --------------[------------------+----+--------------]--------------</span></div>
|
||
<div class="line"><a name="l13207"></a><span class="lineno">13207</span>  <span class="comment">// w V</span></div>
|
||
<div class="line"><a name="l13208"></a><span class="lineno">13208</span>  <span class="comment">// = buf * 10^k</span></div>
|
||
<div class="line"><a name="l13209"></a><span class="lineno">13209</span>  <span class="comment">//</span></div>
|
||
<div class="line"><a name="l13210"></a><span class="lineno">13210</span>  <span class="comment">// ten_k represents a unit-in-the-last-place in the decimal representation</span></div>
|
||
<div class="line"><a name="l13211"></a><span class="lineno">13211</span>  <span class="comment">// stored in buf.</span></div>
|
||
<div class="line"><a name="l13212"></a><span class="lineno">13212</span>  <span class="comment">// Decrement buf by ten_k while this takes buf closer to w.</span></div>
|
||
<div class="line"><a name="l13213"></a><span class="lineno">13213</span>  </div>
|
||
<div class="line"><a name="l13214"></a><span class="lineno">13214</span>  <span class="comment">// The tests are written in this order to avoid overflow in unsigned</span></div>
|
||
<div class="line"><a name="l13215"></a><span class="lineno">13215</span>  <span class="comment">// integer arithmetic.</span></div>
|
||
<div class="line"><a name="l13216"></a><span class="lineno">13216</span>  </div>
|
||
<div class="line"><a name="l13217"></a><span class="lineno">13217</span>  <span class="keywordflow">while</span> (rest < dist</div>
|
||
<div class="line"><a name="l13218"></a><span class="lineno">13218</span>  and delta - rest >= ten_k</div>
|
||
<div class="line"><a name="l13219"></a><span class="lineno">13219</span>  and (rest + ten_k < dist or dist - rest > rest + ten_k - dist))</div>
|
||
<div class="line"><a name="l13220"></a><span class="lineno">13220</span>  {</div>
|
||
<div class="line"><a name="l13221"></a><span class="lineno">13221</span>  assert(buf[len - 1] != <span class="charliteral">'0'</span>);</div>
|
||
<div class="line"><a name="l13222"></a><span class="lineno">13222</span>  buf[len - 1]--;</div>
|
||
<div class="line"><a name="l13223"></a><span class="lineno">13223</span>  rest += ten_k;</div>
|
||
<div class="line"><a name="l13224"></a><span class="lineno">13224</span>  }</div>
|
||
<div class="line"><a name="l13225"></a><span class="lineno">13225</span> }</div>
|
||
<div class="line"><a name="l13226"></a><span class="lineno">13226</span>  </div>
|
||
<div class="line"><a name="l13231"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#a9b899c72b0e1e3dd46d75c2b4e6bcdfb">13231</a></span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#a9b899c72b0e1e3dd46d75c2b4e6bcdfb">grisu2_digit_gen</a>(<span class="keywordtype">char</span>* buffer, <span class="keywordtype">int</span>& length, <span class="keywordtype">int</span>& decimal_exponent,</div>
|
||
<div class="line"><a name="l13232"></a><span class="lineno">13232</span>  <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html">diyfp</a> M_minus, <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html">diyfp</a> w, <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html">diyfp</a> M_plus)</div>
|
||
<div class="line"><a name="l13233"></a><span class="lineno">13233</span> {</div>
|
||
<div class="line"><a name="l13234"></a><span class="lineno">13234</span>  static_assert(<a class="code" href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#ac1ea1316de0b4a219f707c76b1db1966">kAlpha</a> >= -60, <span class="stringliteral">"internal error"</span>);</div>
|
||
<div class="line"><a name="l13235"></a><span class="lineno">13235</span>  static_assert(<a class="code" href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#a4a750fcc38da1ce68b7e25ab3a230e20">kGamma</a> <= -32, <span class="stringliteral">"internal error"</span>);</div>
|
||
<div class="line"><a name="l13236"></a><span class="lineno">13236</span>  </div>
|
||
<div class="line"><a name="l13237"></a><span class="lineno">13237</span>  <span class="comment">// Generates the digits (and the exponent) of a decimal floating-point</span></div>
|
||
<div class="line"><a name="l13238"></a><span class="lineno">13238</span>  <span class="comment">// number V = buffer * 10^decimal_exponent in the range [M-, M+]. The diyfp's</span></div>
|
||
<div class="line"><a name="l13239"></a><span class="lineno">13239</span>  <span class="comment">// w, M- and M+ share the same exponent e, which satisfies alpha <= e <= gamma.</span></div>
|
||
<div class="line"><a name="l13240"></a><span class="lineno">13240</span>  <span class="comment">//</span></div>
|
||
<div class="line"><a name="l13241"></a><span class="lineno">13241</span>  <span class="comment">// <--------------------------- delta ----></span></div>
|
||
<div class="line"><a name="l13242"></a><span class="lineno">13242</span>  <span class="comment">// <---- dist ---------></span></div>
|
||
<div class="line"><a name="l13243"></a><span class="lineno">13243</span>  <span class="comment">// --------------[------------------+-------------------]--------------</span></div>
|
||
<div class="line"><a name="l13244"></a><span class="lineno">13244</span>  <span class="comment">// M- w M+</span></div>
|
||
<div class="line"><a name="l13245"></a><span class="lineno">13245</span>  <span class="comment">//</span></div>
|
||
<div class="line"><a name="l13246"></a><span class="lineno">13246</span>  <span class="comment">// Grisu2 generates the digits of M+ from left to right and stops as soon as</span></div>
|
||
<div class="line"><a name="l13247"></a><span class="lineno">13247</span>  <span class="comment">// V is in [M-,M+].</span></div>
|
||
<div class="line"><a name="l13248"></a><span class="lineno">13248</span>  </div>
|
||
<div class="line"><a name="l13249"></a><span class="lineno">13249</span>  assert(M_plus.<a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#ae22e170815983961447c429f324c944d">e</a> >= <a class="code" href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#ac1ea1316de0b4a219f707c76b1db1966">kAlpha</a>);</div>
|
||
<div class="line"><a name="l13250"></a><span class="lineno">13250</span>  assert(M_plus.<a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#ae22e170815983961447c429f324c944d">e</a> <= <a class="code" href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#a4a750fcc38da1ce68b7e25ab3a230e20">kGamma</a>);</div>
|
||
<div class="line"><a name="l13251"></a><span class="lineno">13251</span>  </div>
|
||
<div class="line"><a name="l13252"></a><span class="lineno">13252</span>  std::uint64_t delta = <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#aeb26771af54ad73598c1a0430d65d884">diyfp::sub</a>(M_plus, M_minus).<a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#aea90459e340a231ca31d46946803ef51">f</a>; <span class="comment">// (significand of (M+ - M-), implicit exponent is e)</span></div>
|
||
<div class="line"><a name="l13253"></a><span class="lineno">13253</span>  std::uint64_t dist = <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#aeb26771af54ad73598c1a0430d65d884">diyfp::sub</a>(M_plus, w ).<a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#aea90459e340a231ca31d46946803ef51">f</a>; <span class="comment">// (significand of (M+ - w ), implicit exponent is e)</span></div>
|
||
<div class="line"><a name="l13254"></a><span class="lineno">13254</span>  </div>
|
||
<div class="line"><a name="l13255"></a><span class="lineno">13255</span>  <span class="comment">// Split M+ = f * 2^e into two parts p1 and p2 (note: e < 0):</span></div>
|
||
<div class="line"><a name="l13256"></a><span class="lineno">13256</span>  <span class="comment">//</span></div>
|
||
<div class="line"><a name="l13257"></a><span class="lineno">13257</span>  <span class="comment">// M+ = f * 2^e</span></div>
|
||
<div class="line"><a name="l13258"></a><span class="lineno">13258</span>  <span class="comment">// = ((f div 2^-e) * 2^-e + (f mod 2^-e)) * 2^e</span></div>
|
||
<div class="line"><a name="l13259"></a><span class="lineno">13259</span>  <span class="comment">// = ((p1 ) * 2^-e + (p2 )) * 2^e</span></div>
|
||
<div class="line"><a name="l13260"></a><span class="lineno">13260</span>  <span class="comment">// = p1 + p2 * 2^e</span></div>
|
||
<div class="line"><a name="l13261"></a><span class="lineno">13261</span>  </div>
|
||
<div class="line"><a name="l13262"></a><span class="lineno">13262</span>  <span class="keyword">const</span> <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html">diyfp</a> one(std::uint64_t{1} << -M_plus.<a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#ae22e170815983961447c429f324c944d">e</a>, M_plus.<a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#ae22e170815983961447c429f324c944d">e</a>);</div>
|
||
<div class="line"><a name="l13263"></a><span class="lineno">13263</span>  </div>
|
||
<div class="line"><a name="l13264"></a><span class="lineno">13264</span>  <span class="keyword">auto</span> p1 = <span class="keyword">static_cast<</span>std::uint32_t<span class="keyword">></span>(M_plus.<a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#aea90459e340a231ca31d46946803ef51">f</a> >> -one.e); <span class="comment">// p1 = f div 2^-e (Since -e >= 32, p1 fits into a 32-bit int.)</span></div>
|
||
<div class="line"><a name="l13265"></a><span class="lineno">13265</span>  std::uint64_t p2 = M_plus.<a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#aea90459e340a231ca31d46946803ef51">f</a> & (one.f - 1); <span class="comment">// p2 = f mod 2^-e</span></div>
|
||
<div class="line"><a name="l13266"></a><span class="lineno">13266</span>  </div>
|
||
<div class="line"><a name="l13267"></a><span class="lineno">13267</span>  <span class="comment">// 1)</span></div>
|
||
<div class="line"><a name="l13268"></a><span class="lineno">13268</span>  <span class="comment">//</span></div>
|
||
<div class="line"><a name="l13269"></a><span class="lineno">13269</span>  <span class="comment">// Generate the digits of the integral part p1 = d[n-1]...d[1]d[0]</span></div>
|
||
<div class="line"><a name="l13270"></a><span class="lineno">13270</span>  </div>
|
||
<div class="line"><a name="l13271"></a><span class="lineno">13271</span>  assert(p1 > 0);</div>
|
||
<div class="line"><a name="l13272"></a><span class="lineno">13272</span>  </div>
|
||
<div class="line"><a name="l13273"></a><span class="lineno">13273</span>  std::uint32_t pow10;</div>
|
||
<div class="line"><a name="l13274"></a><span class="lineno">13274</span>  <span class="keyword">const</span> <span class="keywordtype">int</span> k = <a class="code" href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#a36ded358763b5dbcea9867660fbe4e28">find_largest_pow10</a>(p1, pow10);</div>
|
||
<div class="line"><a name="l13275"></a><span class="lineno">13275</span>  </div>
|
||
<div class="line"><a name="l13276"></a><span class="lineno">13276</span>  <span class="comment">// 10^(k-1) <= p1 < 10^k, pow10 = 10^(k-1)</span></div>
|
||
<div class="line"><a name="l13277"></a><span class="lineno">13277</span>  <span class="comment">//</span></div>
|
||
<div class="line"><a name="l13278"></a><span class="lineno">13278</span>  <span class="comment">// p1 = (p1 div 10^(k-1)) * 10^(k-1) + (p1 mod 10^(k-1))</span></div>
|
||
<div class="line"><a name="l13279"></a><span class="lineno">13279</span>  <span class="comment">// = (d[k-1] ) * 10^(k-1) + (p1 mod 10^(k-1))</span></div>
|
||
<div class="line"><a name="l13280"></a><span class="lineno">13280</span>  <span class="comment">//</span></div>
|
||
<div class="line"><a name="l13281"></a><span class="lineno">13281</span>  <span class="comment">// M+ = p1 + p2 * 2^e</span></div>
|
||
<div class="line"><a name="l13282"></a><span class="lineno">13282</span>  <span class="comment">// = d[k-1] * 10^(k-1) + (p1 mod 10^(k-1)) + p2 * 2^e</span></div>
|
||
<div class="line"><a name="l13283"></a><span class="lineno">13283</span>  <span class="comment">// = d[k-1] * 10^(k-1) + ((p1 mod 10^(k-1)) * 2^-e + p2) * 2^e</span></div>
|
||
<div class="line"><a name="l13284"></a><span class="lineno">13284</span>  <span class="comment">// = d[k-1] * 10^(k-1) + ( rest) * 2^e</span></div>
|
||
<div class="line"><a name="l13285"></a><span class="lineno">13285</span>  <span class="comment">//</span></div>
|
||
<div class="line"><a name="l13286"></a><span class="lineno">13286</span>  <span class="comment">// Now generate the digits d[n] of p1 from left to right (n = k-1,...,0)</span></div>
|
||
<div class="line"><a name="l13287"></a><span class="lineno">13287</span>  <span class="comment">//</span></div>
|
||
<div class="line"><a name="l13288"></a><span class="lineno">13288</span>  <span class="comment">// p1 = d[k-1]...d[n] * 10^n + d[n-1]...d[0]</span></div>
|
||
<div class="line"><a name="l13289"></a><span class="lineno">13289</span>  <span class="comment">//</span></div>
|
||
<div class="line"><a name="l13290"></a><span class="lineno">13290</span>  <span class="comment">// but stop as soon as</span></div>
|
||
<div class="line"><a name="l13291"></a><span class="lineno">13291</span>  <span class="comment">//</span></div>
|
||
<div class="line"><a name="l13292"></a><span class="lineno">13292</span>  <span class="comment">// rest * 2^e = (d[n-1]...d[0] * 2^-e + p2) * 2^e <= delta * 2^e</span></div>
|
||
<div class="line"><a name="l13293"></a><span class="lineno">13293</span>  </div>
|
||
<div class="line"><a name="l13294"></a><span class="lineno">13294</span>  <span class="keywordtype">int</span> n = k;</div>
|
||
<div class="line"><a name="l13295"></a><span class="lineno">13295</span>  <span class="keywordflow">while</span> (n > 0)</div>
|
||
<div class="line"><a name="l13296"></a><span class="lineno">13296</span>  {</div>
|
||
<div class="line"><a name="l13297"></a><span class="lineno">13297</span>  <span class="comment">// Invariants:</span></div>
|
||
<div class="line"><a name="l13298"></a><span class="lineno">13298</span>  <span class="comment">// M+ = buffer * 10^n + (p1 + p2 * 2^e) (buffer = 0 for n = k)</span></div>
|
||
<div class="line"><a name="l13299"></a><span class="lineno">13299</span>  <span class="comment">// pow10 = 10^(n-1) <= p1 < 10^n</span></div>
|
||
<div class="line"><a name="l13300"></a><span class="lineno">13300</span>  <span class="comment">//</span></div>
|
||
<div class="line"><a name="l13301"></a><span class="lineno">13301</span>  <span class="keyword">const</span> std::uint32_t d = p1 / pow10; <span class="comment">// d = p1 div 10^(n-1)</span></div>
|
||
<div class="line"><a name="l13302"></a><span class="lineno">13302</span>  <span class="keyword">const</span> std::uint32_t r = p1 % pow10; <span class="comment">// r = p1 mod 10^(n-1)</span></div>
|
||
<div class="line"><a name="l13303"></a><span class="lineno">13303</span>  <span class="comment">//</span></div>
|
||
<div class="line"><a name="l13304"></a><span class="lineno">13304</span>  <span class="comment">// M+ = buffer * 10^n + (d * 10^(n-1) + r) + p2 * 2^e</span></div>
|
||
<div class="line"><a name="l13305"></a><span class="lineno">13305</span>  <span class="comment">// = (buffer * 10 + d) * 10^(n-1) + (r + p2 * 2^e)</span></div>
|
||
<div class="line"><a name="l13306"></a><span class="lineno">13306</span>  <span class="comment">//</span></div>
|
||
<div class="line"><a name="l13307"></a><span class="lineno">13307</span>  assert(d <= 9);</div>
|
||
<div class="line"><a name="l13308"></a><span class="lineno">13308</span>  buffer[length++] = <span class="keyword">static_cast<</span><span class="keywordtype">char</span><span class="keyword">></span>(<span class="charliteral">'0'</span> + d); <span class="comment">// buffer := buffer * 10 + d</span></div>
|
||
<div class="line"><a name="l13309"></a><span class="lineno">13309</span>  <span class="comment">//</span></div>
|
||
<div class="line"><a name="l13310"></a><span class="lineno">13310</span>  <span class="comment">// M+ = buffer * 10^(n-1) + (r + p2 * 2^e)</span></div>
|
||
<div class="line"><a name="l13311"></a><span class="lineno">13311</span>  <span class="comment">//</span></div>
|
||
<div class="line"><a name="l13312"></a><span class="lineno">13312</span>  p1 = r;</div>
|
||
<div class="line"><a name="l13313"></a><span class="lineno">13313</span>  n--;</div>
|
||
<div class="line"><a name="l13314"></a><span class="lineno">13314</span>  <span class="comment">//</span></div>
|
||
<div class="line"><a name="l13315"></a><span class="lineno">13315</span>  <span class="comment">// M+ = buffer * 10^n + (p1 + p2 * 2^e)</span></div>
|
||
<div class="line"><a name="l13316"></a><span class="lineno">13316</span>  <span class="comment">// pow10 = 10^n</span></div>
|
||
<div class="line"><a name="l13317"></a><span class="lineno">13317</span>  <span class="comment">//</span></div>
|
||
<div class="line"><a name="l13318"></a><span class="lineno">13318</span>  </div>
|
||
<div class="line"><a name="l13319"></a><span class="lineno">13319</span>  <span class="comment">// Now check if enough digits have been generated.</span></div>
|
||
<div class="line"><a name="l13320"></a><span class="lineno">13320</span>  <span class="comment">// Compute</span></div>
|
||
<div class="line"><a name="l13321"></a><span class="lineno">13321</span>  <span class="comment">//</span></div>
|
||
<div class="line"><a name="l13322"></a><span class="lineno">13322</span>  <span class="comment">// p1 + p2 * 2^e = (p1 * 2^-e + p2) * 2^e = rest * 2^e</span></div>
|
||
<div class="line"><a name="l13323"></a><span class="lineno">13323</span>  <span class="comment">//</span></div>
|
||
<div class="line"><a name="l13324"></a><span class="lineno">13324</span>  <span class="comment">// Note:</span></div>
|
||
<div class="line"><a name="l13325"></a><span class="lineno">13325</span>  <span class="comment">// Since rest and delta share the same exponent e, it suffices to</span></div>
|
||
<div class="line"><a name="l13326"></a><span class="lineno">13326</span>  <span class="comment">// compare the significands.</span></div>
|
||
<div class="line"><a name="l13327"></a><span class="lineno">13327</span>  <span class="keyword">const</span> std::uint64_t rest = (std::uint64_t{p1} << -one.e) + p2;</div>
|
||
<div class="line"><a name="l13328"></a><span class="lineno">13328</span>  <span class="keywordflow">if</span> (rest <= delta)</div>
|
||
<div class="line"><a name="l13329"></a><span class="lineno">13329</span>  {</div>
|
||
<div class="line"><a name="l13330"></a><span class="lineno">13330</span>  <span class="comment">// V = buffer * 10^n, with M- <= V <= M+.</span></div>
|
||
<div class="line"><a name="l13331"></a><span class="lineno">13331</span>  </div>
|
||
<div class="line"><a name="l13332"></a><span class="lineno">13332</span>  decimal_exponent += n;</div>
|
||
<div class="line"><a name="l13333"></a><span class="lineno">13333</span>  </div>
|
||
<div class="line"><a name="l13334"></a><span class="lineno">13334</span>  <span class="comment">// We may now just stop. But instead look if the buffer could be</span></div>
|
||
<div class="line"><a name="l13335"></a><span class="lineno">13335</span>  <span class="comment">// decremented to bring V closer to w.</span></div>
|
||
<div class="line"><a name="l13336"></a><span class="lineno">13336</span>  <span class="comment">//</span></div>
|
||
<div class="line"><a name="l13337"></a><span class="lineno">13337</span>  <span class="comment">// pow10 = 10^n is now 1 ulp in the decimal representation V.</span></div>
|
||
<div class="line"><a name="l13338"></a><span class="lineno">13338</span>  <span class="comment">// The rounding procedure works with diyfp's with an implicit</span></div>
|
||
<div class="line"><a name="l13339"></a><span class="lineno">13339</span>  <span class="comment">// exponent of e.</span></div>
|
||
<div class="line"><a name="l13340"></a><span class="lineno">13340</span>  <span class="comment">//</span></div>
|
||
<div class="line"><a name="l13341"></a><span class="lineno">13341</span>  <span class="comment">// 10^n = (10^n * 2^-e) * 2^e = ulp * 2^e</span></div>
|
||
<div class="line"><a name="l13342"></a><span class="lineno">13342</span>  <span class="comment">//</span></div>
|
||
<div class="line"><a name="l13343"></a><span class="lineno">13343</span>  <span class="keyword">const</span> std::uint64_t ten_n = std::uint64_t{pow10} << -one.e;</div>
|
||
<div class="line"><a name="l13344"></a><span class="lineno">13344</span>  <a class="code" href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#a5bc841e0bee12fd6489d49cf7bd07bb4">grisu2_round</a>(buffer, length, dist, delta, rest, ten_n);</div>
|
||
<div class="line"><a name="l13345"></a><span class="lineno">13345</span>  </div>
|
||
<div class="line"><a name="l13346"></a><span class="lineno">13346</span>  <span class="keywordflow">return</span>;</div>
|
||
<div class="line"><a name="l13347"></a><span class="lineno">13347</span>  }</div>
|
||
<div class="line"><a name="l13348"></a><span class="lineno">13348</span>  </div>
|
||
<div class="line"><a name="l13349"></a><span class="lineno">13349</span>  pow10 /= 10;</div>
|
||
<div class="line"><a name="l13350"></a><span class="lineno">13350</span>  <span class="comment">//</span></div>
|
||
<div class="line"><a name="l13351"></a><span class="lineno">13351</span>  <span class="comment">// pow10 = 10^(n-1) <= p1 < 10^n</span></div>
|
||
<div class="line"><a name="l13352"></a><span class="lineno">13352</span>  <span class="comment">// Invariants restored.</span></div>
|
||
<div class="line"><a name="l13353"></a><span class="lineno">13353</span>  }</div>
|
||
<div class="line"><a name="l13354"></a><span class="lineno">13354</span>  </div>
|
||
<div class="line"><a name="l13355"></a><span class="lineno">13355</span>  <span class="comment">// 2)</span></div>
|
||
<div class="line"><a name="l13356"></a><span class="lineno">13356</span>  <span class="comment">//</span></div>
|
||
<div class="line"><a name="l13357"></a><span class="lineno">13357</span>  <span class="comment">// The digits of the integral part have been generated:</span></div>
|
||
<div class="line"><a name="l13358"></a><span class="lineno">13358</span>  <span class="comment">//</span></div>
|
||
<div class="line"><a name="l13359"></a><span class="lineno">13359</span>  <span class="comment">// M+ = d[k-1]...d[1]d[0] + p2 * 2^e</span></div>
|
||
<div class="line"><a name="l13360"></a><span class="lineno">13360</span>  <span class="comment">// = buffer + p2 * 2^e</span></div>
|
||
<div class="line"><a name="l13361"></a><span class="lineno">13361</span>  <span class="comment">//</span></div>
|
||
<div class="line"><a name="l13362"></a><span class="lineno">13362</span>  <span class="comment">// Now generate the digits of the fractional part p2 * 2^e.</span></div>
|
||
<div class="line"><a name="l13363"></a><span class="lineno">13363</span>  <span class="comment">//</span></div>
|
||
<div class="line"><a name="l13364"></a><span class="lineno">13364</span>  <span class="comment">// Note:</span></div>
|
||
<div class="line"><a name="l13365"></a><span class="lineno">13365</span>  <span class="comment">// No decimal point is generated: the exponent is adjusted instead.</span></div>
|
||
<div class="line"><a name="l13366"></a><span class="lineno">13366</span>  <span class="comment">//</span></div>
|
||
<div class="line"><a name="l13367"></a><span class="lineno">13367</span>  <span class="comment">// p2 actually represents the fraction</span></div>
|
||
<div class="line"><a name="l13368"></a><span class="lineno">13368</span>  <span class="comment">//</span></div>
|
||
<div class="line"><a name="l13369"></a><span class="lineno">13369</span>  <span class="comment">// p2 * 2^e</span></div>
|
||
<div class="line"><a name="l13370"></a><span class="lineno">13370</span>  <span class="comment">// = p2 / 2^-e</span></div>
|
||
<div class="line"><a name="l13371"></a><span class="lineno">13371</span>  <span class="comment">// = d[-1] / 10^1 + d[-2] / 10^2 + ...</span></div>
|
||
<div class="line"><a name="l13372"></a><span class="lineno">13372</span>  <span class="comment">//</span></div>
|
||
<div class="line"><a name="l13373"></a><span class="lineno">13373</span>  <span class="comment">// Now generate the digits d[-m] of p1 from left to right (m = 1,2,...)</span></div>
|
||
<div class="line"><a name="l13374"></a><span class="lineno">13374</span>  <span class="comment">//</span></div>
|
||
<div class="line"><a name="l13375"></a><span class="lineno">13375</span>  <span class="comment">// p2 * 2^e = d[-1]d[-2]...d[-m] * 10^-m</span></div>
|
||
<div class="line"><a name="l13376"></a><span class="lineno">13376</span>  <span class="comment">// + 10^-m * (d[-m-1] / 10^1 + d[-m-2] / 10^2 + ...)</span></div>
|
||
<div class="line"><a name="l13377"></a><span class="lineno">13377</span>  <span class="comment">//</span></div>
|
||
<div class="line"><a name="l13378"></a><span class="lineno">13378</span>  <span class="comment">// using</span></div>
|
||
<div class="line"><a name="l13379"></a><span class="lineno">13379</span>  <span class="comment">//</span></div>
|
||
<div class="line"><a name="l13380"></a><span class="lineno">13380</span>  <span class="comment">// 10^m * p2 = ((10^m * p2) div 2^-e) * 2^-e + ((10^m * p2) mod 2^-e)</span></div>
|
||
<div class="line"><a name="l13381"></a><span class="lineno">13381</span>  <span class="comment">// = ( d) * 2^-e + ( r)</span></div>
|
||
<div class="line"><a name="l13382"></a><span class="lineno">13382</span>  <span class="comment">//</span></div>
|
||
<div class="line"><a name="l13383"></a><span class="lineno">13383</span>  <span class="comment">// or</span></div>
|
||
<div class="line"><a name="l13384"></a><span class="lineno">13384</span>  <span class="comment">// 10^m * p2 * 2^e = d + r * 2^e</span></div>
|
||
<div class="line"><a name="l13385"></a><span class="lineno">13385</span>  <span class="comment">//</span></div>
|
||
<div class="line"><a name="l13386"></a><span class="lineno">13386</span>  <span class="comment">// i.e.</span></div>
|
||
<div class="line"><a name="l13387"></a><span class="lineno">13387</span>  <span class="comment">//</span></div>
|
||
<div class="line"><a name="l13388"></a><span class="lineno">13388</span>  <span class="comment">// M+ = buffer + p2 * 2^e</span></div>
|
||
<div class="line"><a name="l13389"></a><span class="lineno">13389</span>  <span class="comment">// = buffer + 10^-m * (d + r * 2^e)</span></div>
|
||
<div class="line"><a name="l13390"></a><span class="lineno">13390</span>  <span class="comment">// = (buffer * 10^m + d) * 10^-m + 10^-m * r * 2^e</span></div>
|
||
<div class="line"><a name="l13391"></a><span class="lineno">13391</span>  <span class="comment">//</span></div>
|
||
<div class="line"><a name="l13392"></a><span class="lineno">13392</span>  <span class="comment">// and stop as soon as 10^-m * r * 2^e <= delta * 2^e</span></div>
|
||
<div class="line"><a name="l13393"></a><span class="lineno">13393</span>  </div>
|
||
<div class="line"><a name="l13394"></a><span class="lineno">13394</span>  assert(p2 > delta);</div>
|
||
<div class="line"><a name="l13395"></a><span class="lineno">13395</span>  </div>
|
||
<div class="line"><a name="l13396"></a><span class="lineno">13396</span>  <span class="keywordtype">int</span> m = 0;</div>
|
||
<div class="line"><a name="l13397"></a><span class="lineno">13397</span>  <span class="keywordflow">for</span> (;;)</div>
|
||
<div class="line"><a name="l13398"></a><span class="lineno">13398</span>  {</div>
|
||
<div class="line"><a name="l13399"></a><span class="lineno">13399</span>  <span class="comment">// Invariant:</span></div>
|
||
<div class="line"><a name="l13400"></a><span class="lineno">13400</span>  <span class="comment">// M+ = buffer * 10^-m + 10^-m * (d[-m-1] / 10 + d[-m-2] / 10^2 + ...) * 2^e</span></div>
|
||
<div class="line"><a name="l13401"></a><span class="lineno">13401</span>  <span class="comment">// = buffer * 10^-m + 10^-m * (p2 ) * 2^e</span></div>
|
||
<div class="line"><a name="l13402"></a><span class="lineno">13402</span>  <span class="comment">// = buffer * 10^-m + 10^-m * (1/10 * (10 * p2) ) * 2^e</span></div>
|
||
<div class="line"><a name="l13403"></a><span class="lineno">13403</span>  <span class="comment">// = buffer * 10^-m + 10^-m * (1/10 * ((10*p2 div 2^-e) * 2^-e + (10*p2 mod 2^-e)) * 2^e</span></div>
|
||
<div class="line"><a name="l13404"></a><span class="lineno">13404</span>  <span class="comment">//</span></div>
|
||
<div class="line"><a name="l13405"></a><span class="lineno">13405</span>  assert(p2 <= (std::numeric_limits<std::uint64_t>::max)() / 10);</div>
|
||
<div class="line"><a name="l13406"></a><span class="lineno">13406</span>  p2 *= 10;</div>
|
||
<div class="line"><a name="l13407"></a><span class="lineno">13407</span>  <span class="keyword">const</span> std::uint64_t d = p2 >> -one.e; <span class="comment">// d = (10 * p2) div 2^-e</span></div>
|
||
<div class="line"><a name="l13408"></a><span class="lineno">13408</span>  <span class="keyword">const</span> std::uint64_t r = p2 & (one.f - 1); <span class="comment">// r = (10 * p2) mod 2^-e</span></div>
|
||
<div class="line"><a name="l13409"></a><span class="lineno">13409</span>  <span class="comment">//</span></div>
|
||
<div class="line"><a name="l13410"></a><span class="lineno">13410</span>  <span class="comment">// M+ = buffer * 10^-m + 10^-m * (1/10 * (d * 2^-e + r) * 2^e</span></div>
|
||
<div class="line"><a name="l13411"></a><span class="lineno">13411</span>  <span class="comment">// = buffer * 10^-m + 10^-m * (1/10 * (d + r * 2^e))</span></div>
|
||
<div class="line"><a name="l13412"></a><span class="lineno">13412</span>  <span class="comment">// = (buffer * 10 + d) * 10^(-m-1) + 10^(-m-1) * r * 2^e</span></div>
|
||
<div class="line"><a name="l13413"></a><span class="lineno">13413</span>  <span class="comment">//</span></div>
|
||
<div class="line"><a name="l13414"></a><span class="lineno">13414</span>  assert(d <= 9);</div>
|
||
<div class="line"><a name="l13415"></a><span class="lineno">13415</span>  buffer[length++] = <span class="keyword">static_cast<</span><span class="keywordtype">char</span><span class="keyword">></span>(<span class="charliteral">'0'</span> + d); <span class="comment">// buffer := buffer * 10 + d</span></div>
|
||
<div class="line"><a name="l13416"></a><span class="lineno">13416</span>  <span class="comment">//</span></div>
|
||
<div class="line"><a name="l13417"></a><span class="lineno">13417</span>  <span class="comment">// M+ = buffer * 10^(-m-1) + 10^(-m-1) * r * 2^e</span></div>
|
||
<div class="line"><a name="l13418"></a><span class="lineno">13418</span>  <span class="comment">//</span></div>
|
||
<div class="line"><a name="l13419"></a><span class="lineno">13419</span>  p2 = r;</div>
|
||
<div class="line"><a name="l13420"></a><span class="lineno">13420</span>  m++;</div>
|
||
<div class="line"><a name="l13421"></a><span class="lineno">13421</span>  <span class="comment">//</span></div>
|
||
<div class="line"><a name="l13422"></a><span class="lineno">13422</span>  <span class="comment">// M+ = buffer * 10^-m + 10^-m * p2 * 2^e</span></div>
|
||
<div class="line"><a name="l13423"></a><span class="lineno">13423</span>  <span class="comment">// Invariant restored.</span></div>
|
||
<div class="line"><a name="l13424"></a><span class="lineno">13424</span>  </div>
|
||
<div class="line"><a name="l13425"></a><span class="lineno">13425</span>  <span class="comment">// Check if enough digits have been generated.</span></div>
|
||
<div class="line"><a name="l13426"></a><span class="lineno">13426</span>  <span class="comment">//</span></div>
|
||
<div class="line"><a name="l13427"></a><span class="lineno">13427</span>  <span class="comment">// 10^-m * p2 * 2^e <= delta * 2^e</span></div>
|
||
<div class="line"><a name="l13428"></a><span class="lineno">13428</span>  <span class="comment">// p2 * 2^e <= 10^m * delta * 2^e</span></div>
|
||
<div class="line"><a name="l13429"></a><span class="lineno">13429</span>  <span class="comment">// p2 <= 10^m * delta</span></div>
|
||
<div class="line"><a name="l13430"></a><span class="lineno">13430</span>  delta *= 10;</div>
|
||
<div class="line"><a name="l13431"></a><span class="lineno">13431</span>  dist *= 10;</div>
|
||
<div class="line"><a name="l13432"></a><span class="lineno">13432</span>  <span class="keywordflow">if</span> (p2 <= delta)</div>
|
||
<div class="line"><a name="l13433"></a><span class="lineno">13433</span>  {</div>
|
||
<div class="line"><a name="l13434"></a><span class="lineno">13434</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l13435"></a><span class="lineno">13435</span>  }</div>
|
||
<div class="line"><a name="l13436"></a><span class="lineno">13436</span>  }</div>
|
||
<div class="line"><a name="l13437"></a><span class="lineno">13437</span>  </div>
|
||
<div class="line"><a name="l13438"></a><span class="lineno">13438</span>  <span class="comment">// V = buffer * 10^-m, with M- <= V <= M+.</span></div>
|
||
<div class="line"><a name="l13439"></a><span class="lineno">13439</span>  </div>
|
||
<div class="line"><a name="l13440"></a><span class="lineno">13440</span>  decimal_exponent -= m;</div>
|
||
<div class="line"><a name="l13441"></a><span class="lineno">13441</span>  </div>
|
||
<div class="line"><a name="l13442"></a><span class="lineno">13442</span>  <span class="comment">// 1 ulp in the decimal representation is now 10^-m.</span></div>
|
||
<div class="line"><a name="l13443"></a><span class="lineno">13443</span>  <span class="comment">// Since delta and dist are now scaled by 10^m, we need to do the</span></div>
|
||
<div class="line"><a name="l13444"></a><span class="lineno">13444</span>  <span class="comment">// same with ulp in order to keep the units in sync.</span></div>
|
||
<div class="line"><a name="l13445"></a><span class="lineno">13445</span>  <span class="comment">//</span></div>
|
||
<div class="line"><a name="l13446"></a><span class="lineno">13446</span>  <span class="comment">// 10^m * 10^-m = 1 = 2^-e * 2^e = ten_m * 2^e</span></div>
|
||
<div class="line"><a name="l13447"></a><span class="lineno">13447</span>  <span class="comment">//</span></div>
|
||
<div class="line"><a name="l13448"></a><span class="lineno">13448</span>  <span class="keyword">const</span> std::uint64_t ten_m = one.f;</div>
|
||
<div class="line"><a name="l13449"></a><span class="lineno">13449</span>  <a class="code" href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#a5bc841e0bee12fd6489d49cf7bd07bb4">grisu2_round</a>(buffer, length, dist, delta, p2, ten_m);</div>
|
||
<div class="line"><a name="l13450"></a><span class="lineno">13450</span>  </div>
|
||
<div class="line"><a name="l13451"></a><span class="lineno">13451</span>  <span class="comment">// By construction this algorithm generates the shortest possible decimal</span></div>
|
||
<div class="line"><a name="l13452"></a><span class="lineno">13452</span>  <span class="comment">// number (Loitsch, Theorem 6.2) which rounds back to w.</span></div>
|
||
<div class="line"><a name="l13453"></a><span class="lineno">13453</span>  <span class="comment">// For an input number of precision p, at least</span></div>
|
||
<div class="line"><a name="l13454"></a><span class="lineno">13454</span>  <span class="comment">//</span></div>
|
||
<div class="line"><a name="l13455"></a><span class="lineno">13455</span>  <span class="comment">// N = 1 + ceil(p * log_10(2))</span></div>
|
||
<div class="line"><a name="l13456"></a><span class="lineno">13456</span>  <span class="comment">//</span></div>
|
||
<div class="line"><a name="l13457"></a><span class="lineno">13457</span>  <span class="comment">// decimal digits are sufficient to identify all binary floating-point</span></div>
|
||
<div class="line"><a name="l13458"></a><span class="lineno">13458</span>  <span class="comment">// numbers (Matula, "In-and-Out conversions").</span></div>
|
||
<div class="line"><a name="l13459"></a><span class="lineno">13459</span>  <span class="comment">// This implies that the algorithm does not produce more than N decimal</span></div>
|
||
<div class="line"><a name="l13460"></a><span class="lineno">13460</span>  <span class="comment">// digits.</span></div>
|
||
<div class="line"><a name="l13461"></a><span class="lineno">13461</span>  <span class="comment">//</span></div>
|
||
<div class="line"><a name="l13462"></a><span class="lineno">13462</span>  <span class="comment">// N = 17 for p = 53 (IEEE double precision)</span></div>
|
||
<div class="line"><a name="l13463"></a><span class="lineno">13463</span>  <span class="comment">// N = 9 for p = 24 (IEEE single precision)</span></div>
|
||
<div class="line"><a name="l13464"></a><span class="lineno">13464</span> }</div>
|
||
<div class="line"><a name="l13465"></a><span class="lineno">13465</span>  </div>
|
||
<div class="line"><a name="l13471"></a><span class="lineno">13471</span> <a class="code" href="json_8hpp.html#a5338981b5ad9027c9e54b1c5597f4344">JSON_HEDLEY_NON_NULL</a>(1)</div>
|
||
<div class="line"><a name="l13472"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#a05b681dcb8569b9784c6dccfadb01633">13472</a></span> inline <span class="keywordtype">void</span> <a class="code" href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#a05b681dcb8569b9784c6dccfadb01633">grisu2</a>(<span class="keywordtype">char</span>* buf, <span class="keywordtype">int</span>& len, <span class="keywordtype">int</span>& decimal_exponent,</div>
|
||
<div class="line"><a name="l13473"></a><span class="lineno">13473</span>  <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html">diyfp</a> m_minus, <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html">diyfp</a> v, <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html">diyfp</a> m_plus)</div>
|
||
<div class="line"><a name="l13474"></a><span class="lineno">13474</span> {</div>
|
||
<div class="line"><a name="l13475"></a><span class="lineno">13475</span>  assert(m_plus.e == m_minus.e);</div>
|
||
<div class="line"><a name="l13476"></a><span class="lineno">13476</span>  assert(m_plus.e == v.e);</div>
|
||
<div class="line"><a name="l13477"></a><span class="lineno">13477</span>  </div>
|
||
<div class="line"><a name="l13478"></a><span class="lineno">13478</span>  <span class="comment">// --------(-----------------------+-----------------------)-------- (A)</span></div>
|
||
<div class="line"><a name="l13479"></a><span class="lineno">13479</span>  <span class="comment">// m- v m+</span></div>
|
||
<div class="line"><a name="l13480"></a><span class="lineno">13480</span>  <span class="comment">//</span></div>
|
||
<div class="line"><a name="l13481"></a><span class="lineno">13481</span>  <span class="comment">// --------------------(-----------+-----------------------)-------- (B)</span></div>
|
||
<div class="line"><a name="l13482"></a><span class="lineno">13482</span>  <span class="comment">// m- v m+</span></div>
|
||
<div class="line"><a name="l13483"></a><span class="lineno">13483</span>  <span class="comment">//</span></div>
|
||
<div class="line"><a name="l13484"></a><span class="lineno">13484</span>  <span class="comment">// First scale v (and m- and m+) such that the exponent is in the range</span></div>
|
||
<div class="line"><a name="l13485"></a><span class="lineno">13485</span>  <span class="comment">// [alpha, gamma].</span></div>
|
||
<div class="line"><a name="l13486"></a><span class="lineno">13486</span>  </div>
|
||
<div class="line"><a name="l13487"></a><span class="lineno">13487</span>  <span class="keyword">const</span> <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1cached__power.html">cached_power</a> cached = <a class="code" href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#adbf329a18c5cf854a3477327afd2200b">get_cached_power_for_binary_exponent</a>(m_plus.e);</div>
|
||
<div class="line"><a name="l13488"></a><span class="lineno">13488</span>  </div>
|
||
<div class="line"><a name="l13489"></a><span class="lineno">13489</span>  <span class="keyword">const</span> <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html">diyfp</a> c_minus_k(cached.<a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1cached__power.html#a21ae81f515f5b08d5bf423775ee56074">f</a>, cached.<a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1cached__power.html#a9e89bc89bb7bf4361f43ea27eed91d23">e</a>); <span class="comment">// = c ~= 10^-k</span></div>
|
||
<div class="line"><a name="l13490"></a><span class="lineno">13490</span>  </div>
|
||
<div class="line"><a name="l13491"></a><span class="lineno">13491</span>  <span class="comment">// The exponent of the products is = v.e + c_minus_k.e + q and is in the range [alpha,gamma]</span></div>
|
||
<div class="line"><a name="l13492"></a><span class="lineno">13492</span>  <span class="keyword">const</span> <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html">diyfp</a> w = <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#aa5f250d12ce89c81fdb08900c6a823e8">diyfp::mul</a>(v, c_minus_k);</div>
|
||
<div class="line"><a name="l13493"></a><span class="lineno">13493</span>  <span class="keyword">const</span> <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html">diyfp</a> w_minus = <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#aa5f250d12ce89c81fdb08900c6a823e8">diyfp::mul</a>(m_minus, c_minus_k);</div>
|
||
<div class="line"><a name="l13494"></a><span class="lineno">13494</span>  <span class="keyword">const</span> <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html">diyfp</a> w_plus = <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#aa5f250d12ce89c81fdb08900c6a823e8">diyfp::mul</a>(m_plus, c_minus_k);</div>
|
||
<div class="line"><a name="l13495"></a><span class="lineno">13495</span>  </div>
|
||
<div class="line"><a name="l13496"></a><span class="lineno">13496</span>  <span class="comment">// ----(---+---)---------------(---+---)---------------(---+---)----</span></div>
|
||
<div class="line"><a name="l13497"></a><span class="lineno">13497</span>  <span class="comment">// w- w w+</span></div>
|
||
<div class="line"><a name="l13498"></a><span class="lineno">13498</span>  <span class="comment">// = c*m- = c*v = c*m+</span></div>
|
||
<div class="line"><a name="l13499"></a><span class="lineno">13499</span>  <span class="comment">//</span></div>
|
||
<div class="line"><a name="l13500"></a><span class="lineno">13500</span>  <span class="comment">// diyfp::mul rounds its result and c_minus_k is approximated too. w, w- and</span></div>
|
||
<div class="line"><a name="l13501"></a><span class="lineno">13501</span>  <span class="comment">// w+ are now off by a small amount.</span></div>
|
||
<div class="line"><a name="l13502"></a><span class="lineno">13502</span>  <span class="comment">// In fact:</span></div>
|
||
<div class="line"><a name="l13503"></a><span class="lineno">13503</span>  <span class="comment">//</span></div>
|
||
<div class="line"><a name="l13504"></a><span class="lineno">13504</span>  <span class="comment">// w - v * 10^k < 1 ulp</span></div>
|
||
<div class="line"><a name="l13505"></a><span class="lineno">13505</span>  <span class="comment">//</span></div>
|
||
<div class="line"><a name="l13506"></a><span class="lineno">13506</span>  <span class="comment">// To account for this inaccuracy, add resp. subtract 1 ulp.</span></div>
|
||
<div class="line"><a name="l13507"></a><span class="lineno">13507</span>  <span class="comment">//</span></div>
|
||
<div class="line"><a name="l13508"></a><span class="lineno">13508</span>  <span class="comment">// --------+---[---------------(---+---)---------------]---+--------</span></div>
|
||
<div class="line"><a name="l13509"></a><span class="lineno">13509</span>  <span class="comment">// w- M- w M+ w+</span></div>
|
||
<div class="line"><a name="l13510"></a><span class="lineno">13510</span>  <span class="comment">//</span></div>
|
||
<div class="line"><a name="l13511"></a><span class="lineno">13511</span>  <span class="comment">// Now any number in [M-, M+] (bounds included) will round to w when input,</span></div>
|
||
<div class="line"><a name="l13512"></a><span class="lineno">13512</span>  <span class="comment">// regardless of how the input rounding algorithm breaks ties.</span></div>
|
||
<div class="line"><a name="l13513"></a><span class="lineno">13513</span>  <span class="comment">//</span></div>
|
||
<div class="line"><a name="l13514"></a><span class="lineno">13514</span>  <span class="comment">// And digit_gen generates the shortest possible such number in [M-, M+].</span></div>
|
||
<div class="line"><a name="l13515"></a><span class="lineno">13515</span>  <span class="comment">// Note that this does not mean that Grisu2 always generates the shortest</span></div>
|
||
<div class="line"><a name="l13516"></a><span class="lineno">13516</span>  <span class="comment">// possible number in the interval (m-, m+).</span></div>
|
||
<div class="line"><a name="l13517"></a><span class="lineno">13517</span>  <span class="keyword">const</span> <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html">diyfp</a> M_minus(w_minus.<a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#aea90459e340a231ca31d46946803ef51">f</a> + 1, w_minus.<a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#ae22e170815983961447c429f324c944d">e</a>);</div>
|
||
<div class="line"><a name="l13518"></a><span class="lineno">13518</span>  <span class="keyword">const</span> <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html">diyfp</a> M_plus (w_plus.<a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#aea90459e340a231ca31d46946803ef51">f</a> - 1, w_plus.<a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#ae22e170815983961447c429f324c944d">e</a> );</div>
|
||
<div class="line"><a name="l13519"></a><span class="lineno">13519</span>  </div>
|
||
<div class="line"><a name="l13520"></a><span class="lineno">13520</span>  decimal_exponent = -cached.<a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1cached__power.html#a8c1f2efed643eeaa8fae83c697a29c6a">k</a>; <span class="comment">// = -(-k) = k</span></div>
|
||
<div class="line"><a name="l13521"></a><span class="lineno">13521</span>  </div>
|
||
<div class="line"><a name="l13522"></a><span class="lineno">13522</span>  <a class="code" href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#a9b899c72b0e1e3dd46d75c2b4e6bcdfb">grisu2_digit_gen</a>(buf, len, decimal_exponent, M_minus, w, M_plus);</div>
|
||
<div class="line"><a name="l13523"></a><span class="lineno">13523</span> }</div>
|
||
<div class="line"><a name="l13524"></a><span class="lineno">13524</span>  </div>
|
||
<div class="line"><a name="l13530"></a><span class="lineno">13530</span> <span class="keyword">template</span> <<span class="keyword">typename</span> FloatType></div>
|
||
<div class="line"><a name="l13531"></a><span class="lineno">13531</span> <a class="code" href="json_8hpp.html#a5338981b5ad9027c9e54b1c5597f4344">JSON_HEDLEY_NON_NULL</a>(1)</div>
|
||
<div class="line"><a name="l13532"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#aab7a9670a4f4704a5d0347ad7588576b">13532</a></span> <a class="code" href="namespacenlohmann_1_1detail.html#a59fca69799f6b9e366710cb9043aa77d">void</a> <a class="code" href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#a05b681dcb8569b9784c6dccfadb01633">grisu2</a>(<span class="keywordtype">char</span>* buf, <span class="keywordtype">int</span>& len, <span class="keywordtype">int</span>& decimal_exponent, FloatType value)</div>
|
||
<div class="line"><a name="l13533"></a><span class="lineno">13533</span> {</div>
|
||
<div class="line"><a name="l13534"></a><span class="lineno">13534</span>  static_assert(<a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#a03682754b06ed4f30b263119eecc2d52">diyfp::kPrecision</a> >= std::numeric_limits<FloatType>::digits + 3,</div>
|
||
<div class="line"><a name="l13535"></a><span class="lineno">13535</span>  <span class="stringliteral">"internal error: not enough precision"</span>);</div>
|
||
<div class="line"><a name="l13536"></a><span class="lineno">13536</span>  </div>
|
||
<div class="line"><a name="l13537"></a><span class="lineno">13537</span>  assert(std::isfinite(value));</div>
|
||
<div class="line"><a name="l13538"></a><span class="lineno">13538</span>  assert(value > 0);</div>
|
||
<div class="line"><a name="l13539"></a><span class="lineno">13539</span>  </div>
|
||
<div class="line"><a name="l13540"></a><span class="lineno">13540</span>  <span class="comment">// If the neighbors (and boundaries) of 'value' are always computed for double-precision</span></div>
|
||
<div class="line"><a name="l13541"></a><span class="lineno">13541</span>  <span class="comment">// numbers, all float's can be recovered using strtod (and strtof). However, the resulting</span></div>
|
||
<div class="line"><a name="l13542"></a><span class="lineno">13542</span>  <span class="comment">// decimal representations are not exactly "short".</span></div>
|
||
<div class="line"><a name="l13543"></a><span class="lineno">13543</span>  <span class="comment">//</span></div>
|
||
<div class="line"><a name="l13544"></a><span class="lineno">13544</span>  <span class="comment">// The documentation for 'std::to_chars' (https://en.cppreference.com/w/cpp/utility/to_chars)</span></div>
|
||
<div class="line"><a name="l13545"></a><span class="lineno">13545</span>  <span class="comment">// says "value is converted to a string as if by std::sprintf in the default ("C") locale"</span></div>
|
||
<div class="line"><a name="l13546"></a><span class="lineno">13546</span>  <span class="comment">// and since sprintf promotes float's to double's, I think this is exactly what 'std::to_chars'</span></div>
|
||
<div class="line"><a name="l13547"></a><span class="lineno">13547</span>  <span class="comment">// does.</span></div>
|
||
<div class="line"><a name="l13548"></a><span class="lineno">13548</span>  <span class="comment">// On the other hand, the documentation for 'std::to_chars' requires that "parsing the</span></div>
|
||
<div class="line"><a name="l13549"></a><span class="lineno">13549</span>  <span class="comment">// representation using the corresponding std::from_chars function recovers value exactly". That</span></div>
|
||
<div class="line"><a name="l13550"></a><span class="lineno">13550</span>  <span class="comment">// indicates that single precision floating-point numbers should be recovered using</span></div>
|
||
<div class="line"><a name="l13551"></a><span class="lineno">13551</span>  <span class="comment">// 'std::strtof'.</span></div>
|
||
<div class="line"><a name="l13552"></a><span class="lineno">13552</span>  <span class="comment">//</span></div>
|
||
<div class="line"><a name="l13553"></a><span class="lineno">13553</span>  <span class="comment">// NB: If the neighbors are computed for single-precision numbers, there is a single float</span></div>
|
||
<div class="line"><a name="l13554"></a><span class="lineno">13554</span>  <span class="comment">// (7.0385307e-26f) which can't be recovered using strtod. The resulting double precision</span></div>
|
||
<div class="line"><a name="l13555"></a><span class="lineno">13555</span>  <span class="comment">// value is off by 1 ulp.</span></div>
|
||
<div class="line"><a name="l13556"></a><span class="lineno">13556</span> <span class="preprocessor">#if 0</span></div>
|
||
<div class="line"><a name="l13557"></a><span class="lineno">13557</span>  <span class="keyword">const</span> <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1boundaries.html">boundaries</a> w = <a class="code" href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#a22b6e37654ac93c6d0d9c06ec1bf5ded">compute_boundaries</a>(<span class="keyword">static_cast<</span><span class="keywordtype">double</span><span class="keyword">></span>(value));</div>
|
||
<div class="line"><a name="l13558"></a><span class="lineno">13558</span> <span class="preprocessor">#else</span></div>
|
||
<div class="line"><a name="l13559"></a><span class="lineno">13559</span>  <span class="keyword">const</span> <a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1boundaries.html">boundaries</a> w = <a class="code" href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#a22b6e37654ac93c6d0d9c06ec1bf5ded">compute_boundaries</a>(value);</div>
|
||
<div class="line"><a name="l13560"></a><span class="lineno">13560</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l13561"></a><span class="lineno">13561</span>  </div>
|
||
<div class="line"><a name="l13562"></a><span class="lineno">13562</span>  <a class="code" href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#a05b681dcb8569b9784c6dccfadb01633">grisu2</a>(buf, len, decimal_exponent, w.<a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1boundaries.html#aec4e5028333c01f3229062f31ce16763">minus</a>, w.<a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1boundaries.html#ad1668c60aeade5f2557fafed8b8aee1a">w</a>, w.<a class="code" href="structnlohmann_1_1detail_1_1dtoa__impl_1_1boundaries.html#a3321ae2816a6ec5250a0d8e29f798232">plus</a>);</div>
|
||
<div class="line"><a name="l13563"></a><span class="lineno">13563</span> }</div>
|
||
<div class="line"><a name="l13564"></a><span class="lineno">13564</span>  </div>
|
||
<div class="line"><a name="l13570"></a><span class="lineno">13570</span> <a class="code" href="json_8hpp.html#a5338981b5ad9027c9e54b1c5597f4344">JSON_HEDLEY_NON_NULL</a>(1)</div>
|
||
<div class="line"><a name="l13571"></a><span class="lineno">13571</span> <a class="code" href="json_8hpp.html#a5f2aaec3b681d0a72f7d6e90b70cdcd1">JSON_HEDLEY_RETURNS_NON_NULL</a></div>
|
||
<div class="line"><a name="l13572"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#ad90f19ed10d8133b727df4b9bc5ddf5c">13572</a></span> inline <span class="keywordtype">char</span>* <a class="code" href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#ad90f19ed10d8133b727df4b9bc5ddf5c">append_exponent</a>(<span class="keywordtype">char</span>* buf, <span class="keywordtype">int</span> e)</div>
|
||
<div class="line"><a name="l13573"></a><span class="lineno">13573</span> {</div>
|
||
<div class="line"><a name="l13574"></a><span class="lineno">13574</span>  assert(e > -1000);</div>
|
||
<div class="line"><a name="l13575"></a><span class="lineno">13575</span>  assert(e < 1000);</div>
|
||
<div class="line"><a name="l13576"></a><span class="lineno">13576</span>  </div>
|
||
<div class="line"><a name="l13577"></a><span class="lineno">13577</span>  <span class="keywordflow">if</span> (e < 0)</div>
|
||
<div class="line"><a name="l13578"></a><span class="lineno">13578</span>  {</div>
|
||
<div class="line"><a name="l13579"></a><span class="lineno">13579</span>  e = -e;</div>
|
||
<div class="line"><a name="l13580"></a><span class="lineno">13580</span>  *buf++ = <span class="charliteral">'-'</span>;</div>
|
||
<div class="line"><a name="l13581"></a><span class="lineno">13581</span>  }</div>
|
||
<div class="line"><a name="l13582"></a><span class="lineno">13582</span>  <span class="keywordflow">else</span></div>
|
||
<div class="line"><a name="l13583"></a><span class="lineno">13583</span>  {</div>
|
||
<div class="line"><a name="l13584"></a><span class="lineno">13584</span>  *buf++ = <span class="charliteral">'+'</span>;</div>
|
||
<div class="line"><a name="l13585"></a><span class="lineno">13585</span>  }</div>
|
||
<div class="line"><a name="l13586"></a><span class="lineno">13586</span>  </div>
|
||
<div class="line"><a name="l13587"></a><span class="lineno">13587</span>  <span class="keyword">auto</span> k = <span class="keyword">static_cast<</span>std::uint32_t<span class="keyword">></span>(e);</div>
|
||
<div class="line"><a name="l13588"></a><span class="lineno">13588</span>  <span class="keywordflow">if</span> (k < 10)</div>
|
||
<div class="line"><a name="l13589"></a><span class="lineno">13589</span>  {</div>
|
||
<div class="line"><a name="l13590"></a><span class="lineno">13590</span>  <span class="comment">// Always print at least two digits in the exponent.</span></div>
|
||
<div class="line"><a name="l13591"></a><span class="lineno">13591</span>  <span class="comment">// This is for compatibility with printf("%g").</span></div>
|
||
<div class="line"><a name="l13592"></a><span class="lineno">13592</span>  *buf++ = <span class="charliteral">'0'</span>;</div>
|
||
<div class="line"><a name="l13593"></a><span class="lineno">13593</span>  *buf++ = <span class="keyword">static_cast<</span><span class="keywordtype">char</span><span class="keyword">></span>(<span class="charliteral">'0'</span> + k);</div>
|
||
<div class="line"><a name="l13594"></a><span class="lineno">13594</span>  }</div>
|
||
<div class="line"><a name="l13595"></a><span class="lineno">13595</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (k < 100)</div>
|
||
<div class="line"><a name="l13596"></a><span class="lineno">13596</span>  {</div>
|
||
<div class="line"><a name="l13597"></a><span class="lineno">13597</span>  *buf++ = <span class="keyword">static_cast<</span><span class="keywordtype">char</span><span class="keyword">></span>(<span class="charliteral">'0'</span> + k / 10);</div>
|
||
<div class="line"><a name="l13598"></a><span class="lineno">13598</span>  k %= 10;</div>
|
||
<div class="line"><a name="l13599"></a><span class="lineno">13599</span>  *buf++ = <span class="keyword">static_cast<</span><span class="keywordtype">char</span><span class="keyword">></span>(<span class="charliteral">'0'</span> + k);</div>
|
||
<div class="line"><a name="l13600"></a><span class="lineno">13600</span>  }</div>
|
||
<div class="line"><a name="l13601"></a><span class="lineno">13601</span>  <span class="keywordflow">else</span></div>
|
||
<div class="line"><a name="l13602"></a><span class="lineno">13602</span>  {</div>
|
||
<div class="line"><a name="l13603"></a><span class="lineno">13603</span>  *buf++ = <span class="keyword">static_cast<</span><span class="keywordtype">char</span><span class="keyword">></span>(<span class="charliteral">'0'</span> + k / 100);</div>
|
||
<div class="line"><a name="l13604"></a><span class="lineno">13604</span>  k %= 100;</div>
|
||
<div class="line"><a name="l13605"></a><span class="lineno">13605</span>  *buf++ = <span class="keyword">static_cast<</span><span class="keywordtype">char</span><span class="keyword">></span>(<span class="charliteral">'0'</span> + k / 10);</div>
|
||
<div class="line"><a name="l13606"></a><span class="lineno">13606</span>  k %= 10;</div>
|
||
<div class="line"><a name="l13607"></a><span class="lineno">13607</span>  *buf++ = <span class="keyword">static_cast<</span><span class="keywordtype">char</span><span class="keyword">></span>(<span class="charliteral">'0'</span> + k);</div>
|
||
<div class="line"><a name="l13608"></a><span class="lineno">13608</span>  }</div>
|
||
<div class="line"><a name="l13609"></a><span class="lineno">13609</span>  </div>
|
||
<div class="line"><a name="l13610"></a><span class="lineno">13610</span>  <span class="keywordflow">return</span> buf;</div>
|
||
<div class="line"><a name="l13611"></a><span class="lineno">13611</span> }</div>
|
||
<div class="line"><a name="l13612"></a><span class="lineno">13612</span>  </div>
|
||
<div class="line"><a name="l13622"></a><span class="lineno">13622</span> <a class="code" href="json_8hpp.html#a5338981b5ad9027c9e54b1c5597f4344">JSON_HEDLEY_NON_NULL</a>(1)</div>
|
||
<div class="line"><a name="l13623"></a><span class="lineno">13623</span> <a class="code" href="json_8hpp.html#a5f2aaec3b681d0a72f7d6e90b70cdcd1">JSON_HEDLEY_RETURNS_NON_NULL</a></div>
|
||
<div class="line"><a name="l13624"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#ab441f2761e33839ca48bc2225e14a2a9">13624</a></span> inline <span class="keywordtype">char</span>* <a class="code" href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#ab441f2761e33839ca48bc2225e14a2a9">format_buffer</a>(<span class="keywordtype">char</span>* buf, <span class="keywordtype">int</span> len, <span class="keywordtype">int</span> decimal_exponent,</div>
|
||
<div class="line"><a name="l13625"></a><span class="lineno">13625</span>  <span class="keywordtype">int</span> min_exp, <span class="keywordtype">int</span> max_exp)</div>
|
||
<div class="line"><a name="l13626"></a><span class="lineno">13626</span> {</div>
|
||
<div class="line"><a name="l13627"></a><span class="lineno">13627</span>  assert(min_exp < 0);</div>
|
||
<div class="line"><a name="l13628"></a><span class="lineno">13628</span>  assert(max_exp > 0);</div>
|
||
<div class="line"><a name="l13629"></a><span class="lineno">13629</span>  </div>
|
||
<div class="line"><a name="l13630"></a><span class="lineno">13630</span>  <span class="keyword">const</span> <span class="keywordtype">int</span> k = len;</div>
|
||
<div class="line"><a name="l13631"></a><span class="lineno">13631</span>  <span class="keyword">const</span> <span class="keywordtype">int</span> n = len + decimal_exponent;</div>
|
||
<div class="line"><a name="l13632"></a><span class="lineno">13632</span>  </div>
|
||
<div class="line"><a name="l13633"></a><span class="lineno">13633</span>  <span class="comment">// v = buf * 10^(n-k)</span></div>
|
||
<div class="line"><a name="l13634"></a><span class="lineno">13634</span>  <span class="comment">// k is the length of the buffer (number of decimal digits)</span></div>
|
||
<div class="line"><a name="l13635"></a><span class="lineno">13635</span>  <span class="comment">// n is the position of the decimal point relative to the start of the buffer.</span></div>
|
||
<div class="line"><a name="l13636"></a><span class="lineno">13636</span>  </div>
|
||
<div class="line"><a name="l13637"></a><span class="lineno">13637</span>  <span class="keywordflow">if</span> (k <= n and n <= max_exp)</div>
|
||
<div class="line"><a name="l13638"></a><span class="lineno">13638</span>  {</div>
|
||
<div class="line"><a name="l13639"></a><span class="lineno">13639</span>  <span class="comment">// digits[000]</span></div>
|
||
<div class="line"><a name="l13640"></a><span class="lineno">13640</span>  <span class="comment">// len <= max_exp + 2</span></div>
|
||
<div class="line"><a name="l13641"></a><span class="lineno">13641</span>  </div>
|
||
<div class="line"><a name="l13642"></a><span class="lineno">13642</span>  std::memset(buf + k, <span class="charliteral">'0'</span>, <span class="keyword">static_cast<</span><span class="keywordtype">size_t</span><span class="keyword">></span>(n - k));</div>
|
||
<div class="line"><a name="l13643"></a><span class="lineno">13643</span>  <span class="comment">// Make it look like a floating-point number (#362, #378)</span></div>
|
||
<div class="line"><a name="l13644"></a><span class="lineno">13644</span>  buf[n + 0] = <span class="charliteral">'.'</span>;</div>
|
||
<div class="line"><a name="l13645"></a><span class="lineno">13645</span>  buf[n + 1] = <span class="charliteral">'0'</span>;</div>
|
||
<div class="line"><a name="l13646"></a><span class="lineno">13646</span>  <span class="keywordflow">return</span> buf + (n + 2);</div>
|
||
<div class="line"><a name="l13647"></a><span class="lineno">13647</span>  }</div>
|
||
<div class="line"><a name="l13648"></a><span class="lineno">13648</span>  </div>
|
||
<div class="line"><a name="l13649"></a><span class="lineno">13649</span>  <span class="keywordflow">if</span> (0 < n and n <= max_exp)</div>
|
||
<div class="line"><a name="l13650"></a><span class="lineno">13650</span>  {</div>
|
||
<div class="line"><a name="l13651"></a><span class="lineno">13651</span>  <span class="comment">// dig.its</span></div>
|
||
<div class="line"><a name="l13652"></a><span class="lineno">13652</span>  <span class="comment">// len <= max_digits10 + 1</span></div>
|
||
<div class="line"><a name="l13653"></a><span class="lineno">13653</span>  </div>
|
||
<div class="line"><a name="l13654"></a><span class="lineno">13654</span>  assert(k > n);</div>
|
||
<div class="line"><a name="l13655"></a><span class="lineno">13655</span>  </div>
|
||
<div class="line"><a name="l13656"></a><span class="lineno">13656</span>  std::memmove(buf + (n + 1), buf + n, <span class="keyword">static_cast<</span><span class="keywordtype">size_t</span><span class="keyword">></span>(k - n));</div>
|
||
<div class="line"><a name="l13657"></a><span class="lineno">13657</span>  buf[n] = <span class="charliteral">'.'</span>;</div>
|
||
<div class="line"><a name="l13658"></a><span class="lineno">13658</span>  <span class="keywordflow">return</span> buf + (k + 1);</div>
|
||
<div class="line"><a name="l13659"></a><span class="lineno">13659</span>  }</div>
|
||
<div class="line"><a name="l13660"></a><span class="lineno">13660</span>  </div>
|
||
<div class="line"><a name="l13661"></a><span class="lineno">13661</span>  <span class="keywordflow">if</span> (min_exp < n and n <= 0)</div>
|
||
<div class="line"><a name="l13662"></a><span class="lineno">13662</span>  {</div>
|
||
<div class="line"><a name="l13663"></a><span class="lineno">13663</span>  <span class="comment">// 0.[000]digits</span></div>
|
||
<div class="line"><a name="l13664"></a><span class="lineno">13664</span>  <span class="comment">// len <= 2 + (-min_exp - 1) + max_digits10</span></div>
|
||
<div class="line"><a name="l13665"></a><span class="lineno">13665</span>  </div>
|
||
<div class="line"><a name="l13666"></a><span class="lineno">13666</span>  std::memmove(buf + (2 + -n), buf, <span class="keyword">static_cast<</span><span class="keywordtype">size_t</span><span class="keyword">></span>(k));</div>
|
||
<div class="line"><a name="l13667"></a><span class="lineno">13667</span>  buf[0] = <span class="charliteral">'0'</span>;</div>
|
||
<div class="line"><a name="l13668"></a><span class="lineno">13668</span>  buf[1] = <span class="charliteral">'.'</span>;</div>
|
||
<div class="line"><a name="l13669"></a><span class="lineno">13669</span>  std::memset(buf + 2, <span class="charliteral">'0'</span>, <span class="keyword">static_cast<</span><span class="keywordtype">size_t</span><span class="keyword">></span>(-n));</div>
|
||
<div class="line"><a name="l13670"></a><span class="lineno">13670</span>  <span class="keywordflow">return</span> buf + (2 + (-n) + k);</div>
|
||
<div class="line"><a name="l13671"></a><span class="lineno">13671</span>  }</div>
|
||
<div class="line"><a name="l13672"></a><span class="lineno">13672</span>  </div>
|
||
<div class="line"><a name="l13673"></a><span class="lineno">13673</span>  <span class="keywordflow">if</span> (k == 1)</div>
|
||
<div class="line"><a name="l13674"></a><span class="lineno">13674</span>  {</div>
|
||
<div class="line"><a name="l13675"></a><span class="lineno">13675</span>  <span class="comment">// dE+123</span></div>
|
||
<div class="line"><a name="l13676"></a><span class="lineno">13676</span>  <span class="comment">// len <= 1 + 5</span></div>
|
||
<div class="line"><a name="l13677"></a><span class="lineno">13677</span>  </div>
|
||
<div class="line"><a name="l13678"></a><span class="lineno">13678</span>  buf += 1;</div>
|
||
<div class="line"><a name="l13679"></a><span class="lineno">13679</span>  }</div>
|
||
<div class="line"><a name="l13680"></a><span class="lineno">13680</span>  <span class="keywordflow">else</span></div>
|
||
<div class="line"><a name="l13681"></a><span class="lineno">13681</span>  {</div>
|
||
<div class="line"><a name="l13682"></a><span class="lineno">13682</span>  <span class="comment">// d.igitsE+123</span></div>
|
||
<div class="line"><a name="l13683"></a><span class="lineno">13683</span>  <span class="comment">// len <= max_digits10 + 1 + 5</span></div>
|
||
<div class="line"><a name="l13684"></a><span class="lineno">13684</span>  </div>
|
||
<div class="line"><a name="l13685"></a><span class="lineno">13685</span>  std::memmove(buf + 2, buf + 1, <span class="keyword">static_cast<</span><span class="keywordtype">size_t</span><span class="keyword">></span>(k - 1));</div>
|
||
<div class="line"><a name="l13686"></a><span class="lineno">13686</span>  buf[1] = <span class="charliteral">'.'</span>;</div>
|
||
<div class="line"><a name="l13687"></a><span class="lineno">13687</span>  buf += 1 + k;</div>
|
||
<div class="line"><a name="l13688"></a><span class="lineno">13688</span>  }</div>
|
||
<div class="line"><a name="l13689"></a><span class="lineno">13689</span>  </div>
|
||
<div class="line"><a name="l13690"></a><span class="lineno">13690</span>  *buf++ = <span class="charliteral">'e'</span>;</div>
|
||
<div class="line"><a name="l13691"></a><span class="lineno">13691</span>  <span class="keywordflow">return</span> <a class="code" href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#ad90f19ed10d8133b727df4b9bc5ddf5c">append_exponent</a>(buf, n - 1);</div>
|
||
<div class="line"><a name="l13692"></a><span class="lineno">13692</span> }</div>
|
||
<div class="line"><a name="l13693"></a><span class="lineno">13693</span>  </div>
|
||
<div class="line"><a name="l13694"></a><span class="lineno">13694</span> } <span class="comment">// namespace dtoa_impl</span></div>
|
||
<div class="line"><a name="l13695"></a><span class="lineno">13695</span>  </div>
|
||
<div class="line"><a name="l13706"></a><span class="lineno">13706</span> <span class="keyword">template</span> <<span class="keyword">typename</span> FloatType></div>
|
||
<div class="line"><a name="l13707"></a><span class="lineno">13707</span> <a class="code" href="json_8hpp.html#a5338981b5ad9027c9e54b1c5597f4344">JSON_HEDLEY_NON_NULL</a>(1, 2)</div>
|
||
<div class="line"><a name="l13708"></a><span class="lineno">13708</span> <a class="code" href="json_8hpp.html#a5f2aaec3b681d0a72f7d6e90b70cdcd1">JSON_HEDLEY_RETURNS_NON_NULL</a></div>
|
||
<div class="line"><a name="l13709"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a6cca370ac6c99294dbe4fe24716a57dd">13709</a></span> <span class="keywordtype">char</span>* <a class="code" href="namespacenlohmann_1_1detail.html#a6cca370ac6c99294dbe4fe24716a57dd">to_chars</a>(<span class="keywordtype">char</span>* first, const <span class="keywordtype">char</span>* last, FloatType value)</div>
|
||
<div class="line"><a name="l13710"></a><span class="lineno">13710</span> {</div>
|
||
<div class="line"><a name="l13711"></a><span class="lineno">13711</span>  <span class="keyword">static_cast<</span><span class="keywordtype">void</span><span class="keyword">></span>(last); <span class="comment">// maybe unused - fix warning</span></div>
|
||
<div class="line"><a name="l13712"></a><span class="lineno">13712</span>  assert(std::isfinite(value));</div>
|
||
<div class="line"><a name="l13713"></a><span class="lineno">13713</span>  </div>
|
||
<div class="line"><a name="l13714"></a><span class="lineno">13714</span>  <span class="comment">// Use signbit(value) instead of (value < 0) since signbit works for -0.</span></div>
|
||
<div class="line"><a name="l13715"></a><span class="lineno">13715</span>  <span class="keywordflow">if</span> (std::signbit(value))</div>
|
||
<div class="line"><a name="l13716"></a><span class="lineno">13716</span>  {</div>
|
||
<div class="line"><a name="l13717"></a><span class="lineno">13717</span>  value = -value;</div>
|
||
<div class="line"><a name="l13718"></a><span class="lineno">13718</span>  *first++ = <span class="charliteral">'-'</span>;</div>
|
||
<div class="line"><a name="l13719"></a><span class="lineno">13719</span>  }</div>
|
||
<div class="line"><a name="l13720"></a><span class="lineno">13720</span>  </div>
|
||
<div class="line"><a name="l13721"></a><span class="lineno">13721</span>  <span class="keywordflow">if</span> (value == 0) <span class="comment">// +-0</span></div>
|
||
<div class="line"><a name="l13722"></a><span class="lineno">13722</span>  {</div>
|
||
<div class="line"><a name="l13723"></a><span class="lineno">13723</span>  *first++ = <span class="charliteral">'0'</span>;</div>
|
||
<div class="line"><a name="l13724"></a><span class="lineno">13724</span>  <span class="comment">// Make it look like a floating-point number (#362, #378)</span></div>
|
||
<div class="line"><a name="l13725"></a><span class="lineno">13725</span>  *first++ = <span class="charliteral">'.'</span>;</div>
|
||
<div class="line"><a name="l13726"></a><span class="lineno">13726</span>  *first++ = <span class="charliteral">'0'</span>;</div>
|
||
<div class="line"><a name="l13727"></a><span class="lineno">13727</span>  <span class="keywordflow">return</span> first;</div>
|
||
<div class="line"><a name="l13728"></a><span class="lineno">13728</span>  }</div>
|
||
<div class="line"><a name="l13729"></a><span class="lineno">13729</span>  </div>
|
||
<div class="line"><a name="l13730"></a><span class="lineno">13730</span>  assert(last - first >= std::numeric_limits<FloatType>::max_digits10);</div>
|
||
<div class="line"><a name="l13731"></a><span class="lineno">13731</span>  </div>
|
||
<div class="line"><a name="l13732"></a><span class="lineno">13732</span>  <span class="comment">// Compute v = buffer * 10^decimal_exponent.</span></div>
|
||
<div class="line"><a name="l13733"></a><span class="lineno">13733</span>  <span class="comment">// The decimal digits are stored in the buffer, which needs to be interpreted</span></div>
|
||
<div class="line"><a name="l13734"></a><span class="lineno">13734</span>  <span class="comment">// as an unsigned decimal integer.</span></div>
|
||
<div class="line"><a name="l13735"></a><span class="lineno">13735</span>  <span class="comment">// len is the length of the buffer, i.e. the number of decimal digits.</span></div>
|
||
<div class="line"><a name="l13736"></a><span class="lineno">13736</span>  <span class="keywordtype">int</span> len = 0;</div>
|
||
<div class="line"><a name="l13737"></a><span class="lineno">13737</span>  <span class="keywordtype">int</span> decimal_exponent = 0;</div>
|
||
<div class="line"><a name="l13738"></a><span class="lineno">13738</span>  <a class="code" href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#a05b681dcb8569b9784c6dccfadb01633">dtoa_impl::grisu2</a>(first, len, decimal_exponent, value);</div>
|
||
<div class="line"><a name="l13739"></a><span class="lineno">13739</span>  </div>
|
||
<div class="line"><a name="l13740"></a><span class="lineno">13740</span>  assert(len <= std::numeric_limits<FloatType>::max_digits10);</div>
|
||
<div class="line"><a name="l13741"></a><span class="lineno">13741</span>  </div>
|
||
<div class="line"><a name="l13742"></a><span class="lineno">13742</span>  <span class="comment">// Format the buffer like printf("%.*g", prec, value)</span></div>
|
||
<div class="line"><a name="l13743"></a><span class="lineno">13743</span>  constexpr <span class="keywordtype">int</span> kMinExp = -4;</div>
|
||
<div class="line"><a name="l13744"></a><span class="lineno">13744</span>  <span class="comment">// Use digits10 here to increase compatibility with version 2.</span></div>
|
||
<div class="line"><a name="l13745"></a><span class="lineno">13745</span>  constexpr <span class="keywordtype">int</span> kMaxExp = std::numeric_limits<FloatType>::digits10;</div>
|
||
<div class="line"><a name="l13746"></a><span class="lineno">13746</span>  </div>
|
||
<div class="line"><a name="l13747"></a><span class="lineno">13747</span>  assert(last - first >= kMaxExp + 2);</div>
|
||
<div class="line"><a name="l13748"></a><span class="lineno">13748</span>  assert(last - first >= 2 + (-kMinExp - 1) + std::numeric_limits<FloatType>::max_digits10);</div>
|
||
<div class="line"><a name="l13749"></a><span class="lineno">13749</span>  assert(last - first >= std::numeric_limits<FloatType>::max_digits10 + 6);</div>
|
||
<div class="line"><a name="l13750"></a><span class="lineno">13750</span>  </div>
|
||
<div class="line"><a name="l13751"></a><span class="lineno">13751</span>  <span class="keywordflow">return</span> <a class="code" href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#ab441f2761e33839ca48bc2225e14a2a9">dtoa_impl::format_buffer</a>(first, len, decimal_exponent, kMinExp, kMaxExp);</div>
|
||
<div class="line"><a name="l13752"></a><span class="lineno">13752</span> }</div>
|
||
<div class="line"><a name="l13753"></a><span class="lineno">13753</span>  </div>
|
||
<div class="line"><a name="l13754"></a><span class="lineno">13754</span> } <span class="comment">// namespace detail</span></div>
|
||
<div class="line"><a name="l13755"></a><span class="lineno">13755</span> } <span class="comment">// namespace nlohmann</span></div>
|
||
<div class="line"><a name="l13756"></a><span class="lineno">13756</span>  </div>
|
||
<div class="line"><a name="l13757"></a><span class="lineno">13757</span> <span class="comment">// #include <nlohmann/detail/exceptions.hpp></span></div>
|
||
<div class="line"><a name="l13758"></a><span class="lineno">13758</span>  </div>
|
||
<div class="line"><a name="l13759"></a><span class="lineno">13759</span> <span class="comment">// #include <nlohmann/detail/macro_scope.hpp></span></div>
|
||
<div class="line"><a name="l13760"></a><span class="lineno">13760</span>  </div>
|
||
<div class="line"><a name="l13761"></a><span class="lineno">13761</span> <span class="comment">// #include <nlohmann/detail/meta/cpp_future.hpp></span></div>
|
||
<div class="line"><a name="l13762"></a><span class="lineno">13762</span>  </div>
|
||
<div class="line"><a name="l13763"></a><span class="lineno">13763</span> <span class="comment">// #include <nlohmann/detail/output/binary_writer.hpp></span></div>
|
||
<div class="line"><a name="l13764"></a><span class="lineno">13764</span>  </div>
|
||
<div class="line"><a name="l13765"></a><span class="lineno">13765</span> <span class="comment">// #include <nlohmann/detail/output/output_adapters.hpp></span></div>
|
||
<div class="line"><a name="l13766"></a><span class="lineno">13766</span>  </div>
|
||
<div class="line"><a name="l13767"></a><span class="lineno">13767</span> <span class="comment">// #include <nlohmann/detail/value_t.hpp></span></div>
|
||
<div class="line"><a name="l13768"></a><span class="lineno">13768</span>  </div>
|
||
<div class="line"><a name="l13769"></a><span class="lineno">13769</span>  </div>
|
||
<div class="line"><a name="l13770"></a><span class="lineno">13770</span> <span class="keyword">namespace </span><a class="code" href="namespacenlohmann.html">nlohmann</a></div>
|
||
<div class="line"><a name="l13771"></a><span class="lineno">13771</span> {</div>
|
||
<div class="line"><a name="l13772"></a><span class="lineno">13772</span> <span class="keyword">namespace </span>detail</div>
|
||
<div class="line"><a name="l13773"></a><span class="lineno">13773</span> {</div>
|
||
<div class="line"><a name="l13775"></a><span class="lineno">13775</span> <span class="comment">// serialization //</span></div>
|
||
<div class="line"><a name="l13777"></a><span class="lineno">13777</span> <span class="comment"></span> </div>
|
||
<div class="line"><a name="l13779"></a><span class="lineno"><a class="line" href="namespacenlohmann_1_1detail.html#a5a76b60b26dc8c47256a996d18d967df">13779</a></span> <span class="keyword">enum class</span> <a class="code" href="namespacenlohmann_1_1detail.html#a5a76b60b26dc8c47256a996d18d967df">error_handler_t</a></div>
|
||
<div class="line"><a name="l13780"></a><span class="lineno">13780</span> {</div>
|
||
<div class="line"><a name="l13781"></a><span class="lineno">13781</span>  <a class="code" href="namespacenlohmann_1_1detail.html#a5a76b60b26dc8c47256a996d18d967dfa2133fd717402a7966ee88d06f9e0b792">strict</a>, </div>
|
||
<div class="line"><a name="l13782"></a><span class="lineno">13782</span>  <a class="code" href="namespacenlohmann_1_1detail.html#a5a76b60b26dc8c47256a996d18d967dfa9dde360102c103867bd2f45872f1129c">replace</a>, </div>
|
||
<div class="line"><a name="l13783"></a><span class="lineno">13783</span>  <a class="code" href="namespacenlohmann_1_1detail.html#a5a76b60b26dc8c47256a996d18d967dfa567bc1d268f135496de3d5b946b691f3">ignore</a> </div>
|
||
<div class="line"><a name="l13784"></a><span class="lineno">13784</span> };</div>
|
||
<div class="line"><a name="l13785"></a><span class="lineno">13785</span>  </div>
|
||
<div class="line"><a name="l13786"></a><span class="lineno">13786</span> <span class="keyword">template</span><<span class="keyword">typename</span> BasicJsonType></div>
|
||
<div class="line"><a name="l13787"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1serializer.html">13787</a></span> <span class="keyword">class </span><a class="code" href="classnlohmann_1_1detail_1_1serializer.html">serializer</a></div>
|
||
<div class="line"><a name="l13788"></a><span class="lineno">13788</span> {</div>
|
||
<div class="line"><a name="l13789"></a><span class="lineno">13789</span>  <span class="keyword">using</span> string_t = <span class="keyword">typename</span> BasicJsonType::string_t;</div>
|
||
<div class="line"><a name="l13790"></a><span class="lineno">13790</span>  <span class="keyword">using</span> number_float_t = <span class="keyword">typename</span> BasicJsonType::number_float_t;</div>
|
||
<div class="line"><a name="l13791"></a><span class="lineno">13791</span>  <span class="keyword">using</span> number_integer_t = <span class="keyword">typename</span> BasicJsonType::number_integer_t;</div>
|
||
<div class="line"><a name="l13792"></a><span class="lineno">13792</span>  <span class="keyword">using</span> number_unsigned_t = <span class="keyword">typename</span> BasicJsonType::number_unsigned_t;</div>
|
||
<div class="line"><a name="l13793"></a><span class="lineno">13793</span>  <span class="keyword">static</span> constexpr std::uint8_t UTF8_ACCEPT = 0;</div>
|
||
<div class="line"><a name="l13794"></a><span class="lineno">13794</span>  <span class="keyword">static</span> constexpr std::uint8_t UTF8_REJECT = 1;</div>
|
||
<div class="line"><a name="l13795"></a><span class="lineno">13795</span>  </div>
|
||
<div class="line"><a name="l13796"></a><span class="lineno">13796</span>  <span class="keyword">public</span>:</div>
|
||
<div class="line"><a name="l13802"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1serializer.html#ac010525281d97867ee842da37294fe83">13802</a></span>  <a class="code" href="classnlohmann_1_1detail_1_1serializer.html#ac010525281d97867ee842da37294fe83">serializer</a>(<a class="code" href="namespacenlohmann_1_1detail.html#a9b680ddfb58f27eb53a67229447fc556">output_adapter_t<char></a> s, <span class="keyword">const</span> <span class="keywordtype">char</span> ichar,</div>
|
||
<div class="line"><a name="l13803"></a><span class="lineno">13803</span>  <a class="code" href="namespacenlohmann_1_1detail.html#a5a76b60b26dc8c47256a996d18d967df">error_handler_t</a> error_handler_ = <a class="code" href="namespacenlohmann_1_1detail.html#a5a76b60b26dc8c47256a996d18d967dfa2133fd717402a7966ee88d06f9e0b792">error_handler_t::strict</a>)</div>
|
||
<div class="line"><a name="l13804"></a><span class="lineno">13804</span>  : o(<a class="code" href="namespacestd.html">std</a>::move(s))</div>
|
||
<div class="line"><a name="l13805"></a><span class="lineno">13805</span>  , loc(<a class="code" href="namespacestd.html">std</a>::localeconv())</div>
|
||
<div class="line"><a name="l13806"></a><span class="lineno">13806</span>  , thousands_sep(loc->thousands_sep == nullptr ? <span class="stringliteral">'\0'</span> : * (loc->thousands_sep))</div>
|
||
<div class="line"><a name="l13807"></a><span class="lineno">13807</span>  , decimal_point(loc->decimal_point == nullptr ? <span class="stringliteral">'\0'</span> : * (loc->decimal_point))</div>
|
||
<div class="line"><a name="l13808"></a><span class="lineno">13808</span>  , indent_char(ichar)</div>
|
||
<div class="line"><a name="l13809"></a><span class="lineno">13809</span>  , indent_string(512, indent_char)</div>
|
||
<div class="line"><a name="l13810"></a><span class="lineno">13810</span>  , error_handler(error_handler_)</div>
|
||
<div class="line"><a name="l13811"></a><span class="lineno">13811</span>  {}</div>
|
||
<div class="line"><a name="l13812"></a><span class="lineno">13812</span>  </div>
|
||
<div class="line"><a name="l13813"></a><span class="lineno">13813</span>  <span class="comment">// delete because of pointer members</span></div>
|
||
<div class="line"><a name="l13814"></a><span class="lineno">13814</span>  <a class="code" href="classnlohmann_1_1detail_1_1serializer.html#ac010525281d97867ee842da37294fe83">serializer</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1serializer.html">serializer</a>&) = <span class="keyword">delete</span>;</div>
|
||
<div class="line"><a name="l13815"></a><span class="lineno">13815</span>  <a class="code" href="classnlohmann_1_1detail_1_1serializer.html">serializer</a>& <a class="code" href="classnlohmann_1_1detail_1_1serializer.html#a5f14c33012477b9f9876dc54d97009a0">operator=</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1serializer.html">serializer</a>&) = <span class="keyword">delete</span>;</div>
|
||
<div class="line"><a name="l13816"></a><span class="lineno">13816</span>  <a class="code" href="classnlohmann_1_1detail_1_1serializer.html#ac010525281d97867ee842da37294fe83">serializer</a>(<a class="code" href="classnlohmann_1_1detail_1_1serializer.html">serializer</a>&&) = <span class="keyword">delete</span>;</div>
|
||
<div class="line"><a name="l13817"></a><span class="lineno">13817</span>  <a class="code" href="classnlohmann_1_1detail_1_1serializer.html">serializer</a>& <a class="code" href="classnlohmann_1_1detail_1_1serializer.html#a5f14c33012477b9f9876dc54d97009a0">operator=</a>(<a class="code" href="classnlohmann_1_1detail_1_1serializer.html">serializer</a>&&) = <span class="keyword">delete</span>;</div>
|
||
<div class="line"><a name="l13818"></a><span class="lineno">13818</span>  <a class="code" href="classnlohmann_1_1detail_1_1serializer.html#aa6c62b51cbebb185307df851dc0167f0">~serializer</a>() = <span class="keywordflow">default</span>;</div>
|
||
<div class="line"><a name="l13819"></a><span class="lineno">13819</span>  </div>
|
||
<div class="line"><a name="l13837"></a><span class="lineno"><a class="line" href="classnlohmann_1_1detail_1_1serializer.html#a95460ebd1a535a543e5a0ec52e00f48b">13837</a></span>  <span class="keywordtype">void</span> <a class="code" href="classnlohmann_1_1detail_1_1serializer.html#a95460ebd1a535a543e5a0ec52e00f48b">dump</a>(<span class="keyword">const</span> BasicJsonType& val, <span class="keyword">const</span> <span class="keywordtype">bool</span> pretty_print,</div>
|
||
<div class="line"><a name="l13838"></a><span class="lineno">13838</span>  <span class="keyword">const</span> <span class="keywordtype">bool</span> ensure_ascii,</div>
|
||
<div class="line"><a name="l13839"></a><span class="lineno">13839</span>  <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> indent_step,</div>
|
||
<div class="line"><a name="l13840"></a><span class="lineno">13840</span>  <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> current_indent = 0)</div>
|
||
<div class="line"><a name="l13841"></a><span class="lineno">13841</span>  {</div>
|
||
<div class="line"><a name="l13842"></a><span class="lineno">13842</span>  <span class="keywordflow">switch</span> (val.m_type)</div>
|
||
<div class="line"><a name="l13843"></a><span class="lineno">13843</span>  {</div>
|
||
<div class="line"><a name="l13844"></a><span class="lineno">13844</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>:</div>
|
||
<div class="line"><a name="l13845"></a><span class="lineno">13845</span>  {</div>
|
||
<div class="line"><a name="l13846"></a><span class="lineno">13846</span>  <span class="keywordflow">if</span> (val.m_value.object->empty())</div>
|
||
<div class="line"><a name="l13847"></a><span class="lineno">13847</span>  {</div>
|
||
<div class="line"><a name="l13848"></a><span class="lineno">13848</span>  o->write_characters(<span class="stringliteral">"{}"</span>, 2);</div>
|
||
<div class="line"><a name="l13849"></a><span class="lineno">13849</span>  <span class="keywordflow">return</span>;</div>
|
||
<div class="line"><a name="l13850"></a><span class="lineno">13850</span>  }</div>
|
||
<div class="line"><a name="l13851"></a><span class="lineno">13851</span>  </div>
|
||
<div class="line"><a name="l13852"></a><span class="lineno">13852</span>  <span class="keywordflow">if</span> (pretty_print)</div>
|
||
<div class="line"><a name="l13853"></a><span class="lineno">13853</span>  {</div>
|
||
<div class="line"><a name="l13854"></a><span class="lineno">13854</span>  o->write_characters(<span class="stringliteral">"{\n"</span>, 2);</div>
|
||
<div class="line"><a name="l13855"></a><span class="lineno">13855</span>  </div>
|
||
<div class="line"><a name="l13856"></a><span class="lineno">13856</span>  <span class="comment">// variable to hold indentation for recursive calls</span></div>
|
||
<div class="line"><a name="l13857"></a><span class="lineno">13857</span>  <span class="keyword">const</span> <span class="keyword">auto</span> new_indent = current_indent + indent_step;</div>
|
||
<div class="line"><a name="l13858"></a><span class="lineno">13858</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(indent_string.size() < new_indent))</div>
|
||
<div class="line"><a name="l13859"></a><span class="lineno">13859</span>  {</div>
|
||
<div class="line"><a name="l13860"></a><span class="lineno">13860</span>  indent_string.resize(indent_string.size() * 2, <span class="charliteral">' '</span>);</div>
|
||
<div class="line"><a name="l13861"></a><span class="lineno">13861</span>  }</div>
|
||
<div class="line"><a name="l13862"></a><span class="lineno">13862</span>  </div>
|
||
<div class="line"><a name="l13863"></a><span class="lineno">13863</span>  <span class="comment">// first n-1 elements</span></div>
|
||
<div class="line"><a name="l13864"></a><span class="lineno">13864</span>  <span class="keyword">auto</span> i = val.m_value.object->cbegin();</div>
|
||
<div class="line"><a name="l13865"></a><span class="lineno">13865</span>  <span class="keywordflow">for</span> (std::size_t cnt = 0; cnt < val.m_value.object->size() - 1; ++cnt, ++i)</div>
|
||
<div class="line"><a name="l13866"></a><span class="lineno">13866</span>  {</div>
|
||
<div class="line"><a name="l13867"></a><span class="lineno">13867</span>  o->write_characters(indent_string.c_str(), new_indent);</div>
|
||
<div class="line"><a name="l13868"></a><span class="lineno">13868</span>  o->write_character(<span class="charliteral">'\"'</span>);</div>
|
||
<div class="line"><a name="l13869"></a><span class="lineno">13869</span>  dump_escaped(i->first, ensure_ascii);</div>
|
||
<div class="line"><a name="l13870"></a><span class="lineno">13870</span>  o->write_characters(<span class="stringliteral">"\": "</span>, 3);</div>
|
||
<div class="line"><a name="l13871"></a><span class="lineno">13871</span>  <a class="code" href="classnlohmann_1_1detail_1_1serializer.html#a95460ebd1a535a543e5a0ec52e00f48b">dump</a>(i->second, <span class="keyword">true</span>, ensure_ascii, indent_step, new_indent);</div>
|
||
<div class="line"><a name="l13872"></a><span class="lineno">13872</span>  o->write_characters(<span class="stringliteral">",\n"</span>, 2);</div>
|
||
<div class="line"><a name="l13873"></a><span class="lineno">13873</span>  }</div>
|
||
<div class="line"><a name="l13874"></a><span class="lineno">13874</span>  </div>
|
||
<div class="line"><a name="l13875"></a><span class="lineno">13875</span>  <span class="comment">// last element</span></div>
|
||
<div class="line"><a name="l13876"></a><span class="lineno">13876</span>  assert(i != val.m_value.object->cend());</div>
|
||
<div class="line"><a name="l13877"></a><span class="lineno">13877</span>  assert(std::next(i) == val.m_value.object->cend());</div>
|
||
<div class="line"><a name="l13878"></a><span class="lineno">13878</span>  o->write_characters(indent_string.c_str(), new_indent);</div>
|
||
<div class="line"><a name="l13879"></a><span class="lineno">13879</span>  o->write_character(<span class="charliteral">'\"'</span>);</div>
|
||
<div class="line"><a name="l13880"></a><span class="lineno">13880</span>  dump_escaped(i->first, ensure_ascii);</div>
|
||
<div class="line"><a name="l13881"></a><span class="lineno">13881</span>  o->write_characters(<span class="stringliteral">"\": "</span>, 3);</div>
|
||
<div class="line"><a name="l13882"></a><span class="lineno">13882</span>  <a class="code" href="classnlohmann_1_1detail_1_1serializer.html#a95460ebd1a535a543e5a0ec52e00f48b">dump</a>(i->second, <span class="keyword">true</span>, ensure_ascii, indent_step, new_indent);</div>
|
||
<div class="line"><a name="l13883"></a><span class="lineno">13883</span>  </div>
|
||
<div class="line"><a name="l13884"></a><span class="lineno">13884</span>  o->write_character(<span class="charliteral">'\n'</span>);</div>
|
||
<div class="line"><a name="l13885"></a><span class="lineno">13885</span>  o->write_characters(indent_string.c_str(), current_indent);</div>
|
||
<div class="line"><a name="l13886"></a><span class="lineno">13886</span>  o->write_character(<span class="charliteral">'}'</span>);</div>
|
||
<div class="line"><a name="l13887"></a><span class="lineno">13887</span>  }</div>
|
||
<div class="line"><a name="l13888"></a><span class="lineno">13888</span>  <span class="keywordflow">else</span></div>
|
||
<div class="line"><a name="l13889"></a><span class="lineno">13889</span>  {</div>
|
||
<div class="line"><a name="l13890"></a><span class="lineno">13890</span>  o->write_character(<span class="charliteral">'{'</span>);</div>
|
||
<div class="line"><a name="l13891"></a><span class="lineno">13891</span>  </div>
|
||
<div class="line"><a name="l13892"></a><span class="lineno">13892</span>  <span class="comment">// first n-1 elements</span></div>
|
||
<div class="line"><a name="l13893"></a><span class="lineno">13893</span>  <span class="keyword">auto</span> i = val.m_value.object->cbegin();</div>
|
||
<div class="line"><a name="l13894"></a><span class="lineno">13894</span>  <span class="keywordflow">for</span> (std::size_t cnt = 0; cnt < val.m_value.object->size() - 1; ++cnt, ++i)</div>
|
||
<div class="line"><a name="l13895"></a><span class="lineno">13895</span>  {</div>
|
||
<div class="line"><a name="l13896"></a><span class="lineno">13896</span>  o->write_character(<span class="charliteral">'\"'</span>);</div>
|
||
<div class="line"><a name="l13897"></a><span class="lineno">13897</span>  dump_escaped(i->first, ensure_ascii);</div>
|
||
<div class="line"><a name="l13898"></a><span class="lineno">13898</span>  o->write_characters(<span class="stringliteral">"\":"</span>, 2);</div>
|
||
<div class="line"><a name="l13899"></a><span class="lineno">13899</span>  <a class="code" href="classnlohmann_1_1detail_1_1serializer.html#a95460ebd1a535a543e5a0ec52e00f48b">dump</a>(i->second, <span class="keyword">false</span>, ensure_ascii, indent_step, current_indent);</div>
|
||
<div class="line"><a name="l13900"></a><span class="lineno">13900</span>  o->write_character(<span class="charliteral">','</span>);</div>
|
||
<div class="line"><a name="l13901"></a><span class="lineno">13901</span>  }</div>
|
||
<div class="line"><a name="l13902"></a><span class="lineno">13902</span>  </div>
|
||
<div class="line"><a name="l13903"></a><span class="lineno">13903</span>  <span class="comment">// last element</span></div>
|
||
<div class="line"><a name="l13904"></a><span class="lineno">13904</span>  assert(i != val.m_value.object->cend());</div>
|
||
<div class="line"><a name="l13905"></a><span class="lineno">13905</span>  assert(std::next(i) == val.m_value.object->cend());</div>
|
||
<div class="line"><a name="l13906"></a><span class="lineno">13906</span>  o->write_character(<span class="charliteral">'\"'</span>);</div>
|
||
<div class="line"><a name="l13907"></a><span class="lineno">13907</span>  dump_escaped(i->first, ensure_ascii);</div>
|
||
<div class="line"><a name="l13908"></a><span class="lineno">13908</span>  o->write_characters(<span class="stringliteral">"\":"</span>, 2);</div>
|
||
<div class="line"><a name="l13909"></a><span class="lineno">13909</span>  <a class="code" href="classnlohmann_1_1detail_1_1serializer.html#a95460ebd1a535a543e5a0ec52e00f48b">dump</a>(i->second, <span class="keyword">false</span>, ensure_ascii, indent_step, current_indent);</div>
|
||
<div class="line"><a name="l13910"></a><span class="lineno">13910</span>  </div>
|
||
<div class="line"><a name="l13911"></a><span class="lineno">13911</span>  o->write_character(<span class="charliteral">'}'</span>);</div>
|
||
<div class="line"><a name="l13912"></a><span class="lineno">13912</span>  }</div>
|
||
<div class="line"><a name="l13913"></a><span class="lineno">13913</span>  </div>
|
||
<div class="line"><a name="l13914"></a><span class="lineno">13914</span>  <span class="keywordflow">return</span>;</div>
|
||
<div class="line"><a name="l13915"></a><span class="lineno">13915</span>  }</div>
|
||
<div class="line"><a name="l13916"></a><span class="lineno">13916</span>  </div>
|
||
<div class="line"><a name="l13917"></a><span class="lineno">13917</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>:</div>
|
||
<div class="line"><a name="l13918"></a><span class="lineno">13918</span>  {</div>
|
||
<div class="line"><a name="l13919"></a><span class="lineno">13919</span>  <span class="keywordflow">if</span> (val.m_value.array->empty())</div>
|
||
<div class="line"><a name="l13920"></a><span class="lineno">13920</span>  {</div>
|
||
<div class="line"><a name="l13921"></a><span class="lineno">13921</span>  o->write_characters(<span class="stringliteral">"[]"</span>, 2);</div>
|
||
<div class="line"><a name="l13922"></a><span class="lineno">13922</span>  <span class="keywordflow">return</span>;</div>
|
||
<div class="line"><a name="l13923"></a><span class="lineno">13923</span>  }</div>
|
||
<div class="line"><a name="l13924"></a><span class="lineno">13924</span>  </div>
|
||
<div class="line"><a name="l13925"></a><span class="lineno">13925</span>  <span class="keywordflow">if</span> (pretty_print)</div>
|
||
<div class="line"><a name="l13926"></a><span class="lineno">13926</span>  {</div>
|
||
<div class="line"><a name="l13927"></a><span class="lineno">13927</span>  o->write_characters(<span class="stringliteral">"[\n"</span>, 2);</div>
|
||
<div class="line"><a name="l13928"></a><span class="lineno">13928</span>  </div>
|
||
<div class="line"><a name="l13929"></a><span class="lineno">13929</span>  <span class="comment">// variable to hold indentation for recursive calls</span></div>
|
||
<div class="line"><a name="l13930"></a><span class="lineno">13930</span>  <span class="keyword">const</span> <span class="keyword">auto</span> new_indent = current_indent + indent_step;</div>
|
||
<div class="line"><a name="l13931"></a><span class="lineno">13931</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(indent_string.size() < new_indent))</div>
|
||
<div class="line"><a name="l13932"></a><span class="lineno">13932</span>  {</div>
|
||
<div class="line"><a name="l13933"></a><span class="lineno">13933</span>  indent_string.resize(indent_string.size() * 2, <span class="charliteral">' '</span>);</div>
|
||
<div class="line"><a name="l13934"></a><span class="lineno">13934</span>  }</div>
|
||
<div class="line"><a name="l13935"></a><span class="lineno">13935</span>  </div>
|
||
<div class="line"><a name="l13936"></a><span class="lineno">13936</span>  <span class="comment">// first n-1 elements</span></div>
|
||
<div class="line"><a name="l13937"></a><span class="lineno">13937</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span> i = val.m_value.array->cbegin();</div>
|
||
<div class="line"><a name="l13938"></a><span class="lineno">13938</span>  i != val.m_value.array->cend() - 1; ++i)</div>
|
||
<div class="line"><a name="l13939"></a><span class="lineno">13939</span>  {</div>
|
||
<div class="line"><a name="l13940"></a><span class="lineno">13940</span>  o->write_characters(indent_string.c_str(), new_indent);</div>
|
||
<div class="line"><a name="l13941"></a><span class="lineno">13941</span>  <a class="code" href="classnlohmann_1_1detail_1_1serializer.html#a95460ebd1a535a543e5a0ec52e00f48b">dump</a>(*i, <span class="keyword">true</span>, ensure_ascii, indent_step, new_indent);</div>
|
||
<div class="line"><a name="l13942"></a><span class="lineno">13942</span>  o->write_characters(<span class="stringliteral">",\n"</span>, 2);</div>
|
||
<div class="line"><a name="l13943"></a><span class="lineno">13943</span>  }</div>
|
||
<div class="line"><a name="l13944"></a><span class="lineno">13944</span>  </div>
|
||
<div class="line"><a name="l13945"></a><span class="lineno">13945</span>  <span class="comment">// last element</span></div>
|
||
<div class="line"><a name="l13946"></a><span class="lineno">13946</span>  assert(not val.m_value.array->empty());</div>
|
||
<div class="line"><a name="l13947"></a><span class="lineno">13947</span>  o->write_characters(indent_string.c_str(), new_indent);</div>
|
||
<div class="line"><a name="l13948"></a><span class="lineno">13948</span>  <a class="code" href="classnlohmann_1_1detail_1_1serializer.html#a95460ebd1a535a543e5a0ec52e00f48b">dump</a>(val.m_value.array->back(), <span class="keyword">true</span>, ensure_ascii, indent_step, new_indent);</div>
|
||
<div class="line"><a name="l13949"></a><span class="lineno">13949</span>  </div>
|
||
<div class="line"><a name="l13950"></a><span class="lineno">13950</span>  o->write_character(<span class="charliteral">'\n'</span>);</div>
|
||
<div class="line"><a name="l13951"></a><span class="lineno">13951</span>  o->write_characters(indent_string.c_str(), current_indent);</div>
|
||
<div class="line"><a name="l13952"></a><span class="lineno">13952</span>  o->write_character(<span class="charliteral">']'</span>);</div>
|
||
<div class="line"><a name="l13953"></a><span class="lineno">13953</span>  }</div>
|
||
<div class="line"><a name="l13954"></a><span class="lineno">13954</span>  <span class="keywordflow">else</span></div>
|
||
<div class="line"><a name="l13955"></a><span class="lineno">13955</span>  {</div>
|
||
<div class="line"><a name="l13956"></a><span class="lineno">13956</span>  o->write_character(<span class="charliteral">'['</span>);</div>
|
||
<div class="line"><a name="l13957"></a><span class="lineno">13957</span>  </div>
|
||
<div class="line"><a name="l13958"></a><span class="lineno">13958</span>  <span class="comment">// first n-1 elements</span></div>
|
||
<div class="line"><a name="l13959"></a><span class="lineno">13959</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span> i = val.m_value.array->cbegin();</div>
|
||
<div class="line"><a name="l13960"></a><span class="lineno">13960</span>  i != val.m_value.array->cend() - 1; ++i)</div>
|
||
<div class="line"><a name="l13961"></a><span class="lineno">13961</span>  {</div>
|
||
<div class="line"><a name="l13962"></a><span class="lineno">13962</span>  <a class="code" href="classnlohmann_1_1detail_1_1serializer.html#a95460ebd1a535a543e5a0ec52e00f48b">dump</a>(*i, <span class="keyword">false</span>, ensure_ascii, indent_step, current_indent);</div>
|
||
<div class="line"><a name="l13963"></a><span class="lineno">13963</span>  o->write_character(<span class="charliteral">','</span>);</div>
|
||
<div class="line"><a name="l13964"></a><span class="lineno">13964</span>  }</div>
|
||
<div class="line"><a name="l13965"></a><span class="lineno">13965</span>  </div>
|
||
<div class="line"><a name="l13966"></a><span class="lineno">13966</span>  <span class="comment">// last element</span></div>
|
||
<div class="line"><a name="l13967"></a><span class="lineno">13967</span>  assert(not val.m_value.array->empty());</div>
|
||
<div class="line"><a name="l13968"></a><span class="lineno">13968</span>  <a class="code" href="classnlohmann_1_1detail_1_1serializer.html#a95460ebd1a535a543e5a0ec52e00f48b">dump</a>(val.m_value.array->back(), <span class="keyword">false</span>, ensure_ascii, indent_step, current_indent);</div>
|
||
<div class="line"><a name="l13969"></a><span class="lineno">13969</span>  </div>
|
||
<div class="line"><a name="l13970"></a><span class="lineno">13970</span>  o->write_character(<span class="charliteral">']'</span>);</div>
|
||
<div class="line"><a name="l13971"></a><span class="lineno">13971</span>  }</div>
|
||
<div class="line"><a name="l13972"></a><span class="lineno">13972</span>  </div>
|
||
<div class="line"><a name="l13973"></a><span class="lineno">13973</span>  <span class="keywordflow">return</span>;</div>
|
||
<div class="line"><a name="l13974"></a><span class="lineno">13974</span>  }</div>
|
||
<div class="line"><a name="l13975"></a><span class="lineno">13975</span>  </div>
|
||
<div class="line"><a name="l13976"></a><span class="lineno">13976</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ab45cffe084dd3d20d928bee85e7b0f21">value_t::string</a>:</div>
|
||
<div class="line"><a name="l13977"></a><span class="lineno">13977</span>  {</div>
|
||
<div class="line"><a name="l13978"></a><span class="lineno">13978</span>  o->write_character(<span class="charliteral">'\"'</span>);</div>
|
||
<div class="line"><a name="l13979"></a><span class="lineno">13979</span>  dump_escaped(*val.m_value.string, ensure_ascii);</div>
|
||
<div class="line"><a name="l13980"></a><span class="lineno">13980</span>  o->write_character(<span class="charliteral">'\"'</span>);</div>
|
||
<div class="line"><a name="l13981"></a><span class="lineno">13981</span>  <span class="keywordflow">return</span>;</div>
|
||
<div class="line"><a name="l13982"></a><span class="lineno">13982</span>  }</div>
|
||
<div class="line"><a name="l13983"></a><span class="lineno">13983</span>  </div>
|
||
<div class="line"><a name="l13984"></a><span class="lineno">13984</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a84e2c64f38f78ba3ea5c905ab5a2da27">value_t::boolean</a>:</div>
|
||
<div class="line"><a name="l13985"></a><span class="lineno">13985</span>  {</div>
|
||
<div class="line"><a name="l13986"></a><span class="lineno">13986</span>  <span class="keywordflow">if</span> (val.m_value.boolean)</div>
|
||
<div class="line"><a name="l13987"></a><span class="lineno">13987</span>  {</div>
|
||
<div class="line"><a name="l13988"></a><span class="lineno">13988</span>  o->write_characters(<span class="stringliteral">"true"</span>, 4);</div>
|
||
<div class="line"><a name="l13989"></a><span class="lineno">13989</span>  }</div>
|
||
<div class="line"><a name="l13990"></a><span class="lineno">13990</span>  <span class="keywordflow">else</span></div>
|
||
<div class="line"><a name="l13991"></a><span class="lineno">13991</span>  {</div>
|
||
<div class="line"><a name="l13992"></a><span class="lineno">13992</span>  o->write_characters(<span class="stringliteral">"false"</span>, 5);</div>
|
||
<div class="line"><a name="l13993"></a><span class="lineno">13993</span>  }</div>
|
||
<div class="line"><a name="l13994"></a><span class="lineno">13994</span>  <span class="keywordflow">return</span>;</div>
|
||
<div class="line"><a name="l13995"></a><span class="lineno">13995</span>  }</div>
|
||
<div class="line"><a name="l13996"></a><span class="lineno">13996</span>  </div>
|
||
<div class="line"><a name="l13997"></a><span class="lineno">13997</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a5763da164f8659d94a56e29df64b4bcc">value_t::number_integer</a>:</div>
|
||
<div class="line"><a name="l13998"></a><span class="lineno">13998</span>  {</div>
|
||
<div class="line"><a name="l13999"></a><span class="lineno">13999</span>  dump_integer(val.m_value.number_integer);</div>
|
||
<div class="line"><a name="l14000"></a><span class="lineno">14000</span>  <span class="keywordflow">return</span>;</div>
|
||
<div class="line"><a name="l14001"></a><span class="lineno">14001</span>  }</div>
|
||
<div class="line"><a name="l14002"></a><span class="lineno">14002</span>  </div>
|
||
<div class="line"><a name="l14003"></a><span class="lineno">14003</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985adce7cc8ec29055c4158828921f2f265e">value_t::number_unsigned</a>:</div>
|
||
<div class="line"><a name="l14004"></a><span class="lineno">14004</span>  {</div>
|
||
<div class="line"><a name="l14005"></a><span class="lineno">14005</span>  dump_integer(val.m_value.number_unsigned);</div>
|
||
<div class="line"><a name="l14006"></a><span class="lineno">14006</span>  <span class="keywordflow">return</span>;</div>
|
||
<div class="line"><a name="l14007"></a><span class="lineno">14007</span>  }</div>
|
||
<div class="line"><a name="l14008"></a><span class="lineno">14008</span>  </div>
|
||
<div class="line"><a name="l14009"></a><span class="lineno">14009</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ad9966ecb59667235a57b4b999a649eef">value_t::number_float</a>:</div>
|
||
<div class="line"><a name="l14010"></a><span class="lineno">14010</span>  {</div>
|
||
<div class="line"><a name="l14011"></a><span class="lineno">14011</span>  dump_float(val.m_value.number_float);</div>
|
||
<div class="line"><a name="l14012"></a><span class="lineno">14012</span>  <span class="keywordflow">return</span>;</div>
|
||
<div class="line"><a name="l14013"></a><span class="lineno">14013</span>  }</div>
|
||
<div class="line"><a name="l14014"></a><span class="lineno">14014</span>  </div>
|
||
<div class="line"><a name="l14015"></a><span class="lineno">14015</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a94708897ec9db8647dfe695714c98e46">value_t::discarded</a>:</div>
|
||
<div class="line"><a name="l14016"></a><span class="lineno">14016</span>  {</div>
|
||
<div class="line"><a name="l14017"></a><span class="lineno">14017</span>  o->write_characters(<span class="stringliteral">"<discarded>"</span>, 11);</div>
|
||
<div class="line"><a name="l14018"></a><span class="lineno">14018</span>  <span class="keywordflow">return</span>;</div>
|
||
<div class="line"><a name="l14019"></a><span class="lineno">14019</span>  }</div>
|
||
<div class="line"><a name="l14020"></a><span class="lineno">14020</span>  </div>
|
||
<div class="line"><a name="l14021"></a><span class="lineno">14021</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a37a6259cc0c1dae299a7866489dff0bd">value_t::null</a>:</div>
|
||
<div class="line"><a name="l14022"></a><span class="lineno">14022</span>  {</div>
|
||
<div class="line"><a name="l14023"></a><span class="lineno">14023</span>  o->write_characters(<span class="stringliteral">"null"</span>, 4);</div>
|
||
<div class="line"><a name="l14024"></a><span class="lineno">14024</span>  <span class="keywordflow">return</span>;</div>
|
||
<div class="line"><a name="l14025"></a><span class="lineno">14025</span>  }</div>
|
||
<div class="line"><a name="l14026"></a><span class="lineno">14026</span>  </div>
|
||
<div class="line"><a name="l14027"></a><span class="lineno">14027</span>  <span class="keywordflow">default</span>: <span class="comment">// LCOV_EXCL_LINE</span></div>
|
||
<div class="line"><a name="l14028"></a><span class="lineno">14028</span>  assert(<span class="keyword">false</span>); <span class="comment">// LCOV_EXCL_LINE</span></div>
|
||
<div class="line"><a name="l14029"></a><span class="lineno">14029</span>  }</div>
|
||
<div class="line"><a name="l14030"></a><span class="lineno">14030</span>  }</div>
|
||
<div class="line"><a name="l14031"></a><span class="lineno">14031</span>  </div>
|
||
<div class="line"><a name="l14032"></a><span class="lineno">14032</span>  <span class="keyword">private</span>:</div>
|
||
<div class="line"><a name="l14047"></a><span class="lineno">14047</span>  <span class="keywordtype">void</span> dump_escaped(<span class="keyword">const</span> string_t& s, <span class="keyword">const</span> <span class="keywordtype">bool</span> ensure_ascii)</div>
|
||
<div class="line"><a name="l14048"></a><span class="lineno">14048</span>  {</div>
|
||
<div class="line"><a name="l14049"></a><span class="lineno">14049</span>  std::uint32_t codepoint;</div>
|
||
<div class="line"><a name="l14050"></a><span class="lineno">14050</span>  std::uint8_t state = UTF8_ACCEPT;</div>
|
||
<div class="line"><a name="l14051"></a><span class="lineno">14051</span>  std::size_t bytes = 0; <span class="comment">// number of bytes written to string_buffer</span></div>
|
||
<div class="line"><a name="l14052"></a><span class="lineno">14052</span>  </div>
|
||
<div class="line"><a name="l14053"></a><span class="lineno">14053</span>  <span class="comment">// number of bytes written at the point of the last valid byte</span></div>
|
||
<div class="line"><a name="l14054"></a><span class="lineno">14054</span>  std::size_t bytes_after_last_accept = 0;</div>
|
||
<div class="line"><a name="l14055"></a><span class="lineno">14055</span>  std::size_t undumped_chars = 0;</div>
|
||
<div class="line"><a name="l14056"></a><span class="lineno">14056</span>  </div>
|
||
<div class="line"><a name="l14057"></a><span class="lineno">14057</span>  <span class="keywordflow">for</span> (std::size_t i = 0; i < s.size(); ++i)</div>
|
||
<div class="line"><a name="l14058"></a><span class="lineno">14058</span>  {</div>
|
||
<div class="line"><a name="l14059"></a><span class="lineno">14059</span>  <span class="keyword">const</span> <span class="keyword">auto</span> <span class="keywordtype">byte</span> = <span class="keyword">static_cast<</span>uint8_t<span class="keyword">></span>(s[i]);</div>
|
||
<div class="line"><a name="l14060"></a><span class="lineno">14060</span>  </div>
|
||
<div class="line"><a name="l14061"></a><span class="lineno">14061</span>  <span class="keywordflow">switch</span> (decode(state, codepoint, <span class="keywordtype">byte</span>))</div>
|
||
<div class="line"><a name="l14062"></a><span class="lineno">14062</span>  {</div>
|
||
<div class="line"><a name="l14063"></a><span class="lineno">14063</span>  <span class="keywordflow">case</span> UTF8_ACCEPT: <span class="comment">// decode found a new code point</span></div>
|
||
<div class="line"><a name="l14064"></a><span class="lineno">14064</span>  {</div>
|
||
<div class="line"><a name="l14065"></a><span class="lineno">14065</span>  <span class="keywordflow">switch</span> (codepoint)</div>
|
||
<div class="line"><a name="l14066"></a><span class="lineno">14066</span>  {</div>
|
||
<div class="line"><a name="l14067"></a><span class="lineno">14067</span>  <span class="keywordflow">case</span> 0x08: <span class="comment">// backspace</span></div>
|
||
<div class="line"><a name="l14068"></a><span class="lineno">14068</span>  {</div>
|
||
<div class="line"><a name="l14069"></a><span class="lineno">14069</span>  string_buffer[bytes++] = <span class="charliteral">'\\'</span>;</div>
|
||
<div class="line"><a name="l14070"></a><span class="lineno">14070</span>  string_buffer[bytes++] = <span class="charliteral">'b'</span>;</div>
|
||
<div class="line"><a name="l14071"></a><span class="lineno">14071</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l14072"></a><span class="lineno">14072</span>  }</div>
|
||
<div class="line"><a name="l14073"></a><span class="lineno">14073</span>  </div>
|
||
<div class="line"><a name="l14074"></a><span class="lineno">14074</span>  <span class="keywordflow">case</span> 0x09: <span class="comment">// horizontal tab</span></div>
|
||
<div class="line"><a name="l14075"></a><span class="lineno">14075</span>  {</div>
|
||
<div class="line"><a name="l14076"></a><span class="lineno">14076</span>  string_buffer[bytes++] = <span class="charliteral">'\\'</span>;</div>
|
||
<div class="line"><a name="l14077"></a><span class="lineno">14077</span>  string_buffer[bytes++] = <span class="charliteral">'t'</span>;</div>
|
||
<div class="line"><a name="l14078"></a><span class="lineno">14078</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l14079"></a><span class="lineno">14079</span>  }</div>
|
||
<div class="line"><a name="l14080"></a><span class="lineno">14080</span>  </div>
|
||
<div class="line"><a name="l14081"></a><span class="lineno">14081</span>  <span class="keywordflow">case</span> 0x0A: <span class="comment">// newline</span></div>
|
||
<div class="line"><a name="l14082"></a><span class="lineno">14082</span>  {</div>
|
||
<div class="line"><a name="l14083"></a><span class="lineno">14083</span>  string_buffer[bytes++] = <span class="charliteral">'\\'</span>;</div>
|
||
<div class="line"><a name="l14084"></a><span class="lineno">14084</span>  string_buffer[bytes++] = <span class="charliteral">'n'</span>;</div>
|
||
<div class="line"><a name="l14085"></a><span class="lineno">14085</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l14086"></a><span class="lineno">14086</span>  }</div>
|
||
<div class="line"><a name="l14087"></a><span class="lineno">14087</span>  </div>
|
||
<div class="line"><a name="l14088"></a><span class="lineno">14088</span>  <span class="keywordflow">case</span> 0x0C: <span class="comment">// formfeed</span></div>
|
||
<div class="line"><a name="l14089"></a><span class="lineno">14089</span>  {</div>
|
||
<div class="line"><a name="l14090"></a><span class="lineno">14090</span>  string_buffer[bytes++] = <span class="charliteral">'\\'</span>;</div>
|
||
<div class="line"><a name="l14091"></a><span class="lineno">14091</span>  string_buffer[bytes++] = <span class="charliteral">'f'</span>;</div>
|
||
<div class="line"><a name="l14092"></a><span class="lineno">14092</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l14093"></a><span class="lineno">14093</span>  }</div>
|
||
<div class="line"><a name="l14094"></a><span class="lineno">14094</span>  </div>
|
||
<div class="line"><a name="l14095"></a><span class="lineno">14095</span>  <span class="keywordflow">case</span> 0x0D: <span class="comment">// carriage return</span></div>
|
||
<div class="line"><a name="l14096"></a><span class="lineno">14096</span>  {</div>
|
||
<div class="line"><a name="l14097"></a><span class="lineno">14097</span>  string_buffer[bytes++] = <span class="charliteral">'\\'</span>;</div>
|
||
<div class="line"><a name="l14098"></a><span class="lineno">14098</span>  string_buffer[bytes++] = <span class="charliteral">'r'</span>;</div>
|
||
<div class="line"><a name="l14099"></a><span class="lineno">14099</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l14100"></a><span class="lineno">14100</span>  }</div>
|
||
<div class="line"><a name="l14101"></a><span class="lineno">14101</span>  </div>
|
||
<div class="line"><a name="l14102"></a><span class="lineno">14102</span>  <span class="keywordflow">case</span> 0x22: <span class="comment">// quotation mark</span></div>
|
||
<div class="line"><a name="l14103"></a><span class="lineno">14103</span>  {</div>
|
||
<div class="line"><a name="l14104"></a><span class="lineno">14104</span>  string_buffer[bytes++] = <span class="charliteral">'\\'</span>;</div>
|
||
<div class="line"><a name="l14105"></a><span class="lineno">14105</span>  string_buffer[bytes++] = <span class="charliteral">'\"'</span>;</div>
|
||
<div class="line"><a name="l14106"></a><span class="lineno">14106</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l14107"></a><span class="lineno">14107</span>  }</div>
|
||
<div class="line"><a name="l14108"></a><span class="lineno">14108</span>  </div>
|
||
<div class="line"><a name="l14109"></a><span class="lineno">14109</span>  <span class="keywordflow">case</span> 0x5C: <span class="comment">// reverse solidus</span></div>
|
||
<div class="line"><a name="l14110"></a><span class="lineno">14110</span>  {</div>
|
||
<div class="line"><a name="l14111"></a><span class="lineno">14111</span>  string_buffer[bytes++] = <span class="charliteral">'\\'</span>;</div>
|
||
<div class="line"><a name="l14112"></a><span class="lineno">14112</span>  string_buffer[bytes++] = <span class="charliteral">'\\'</span>;</div>
|
||
<div class="line"><a name="l14113"></a><span class="lineno">14113</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l14114"></a><span class="lineno">14114</span>  }</div>
|
||
<div class="line"><a name="l14115"></a><span class="lineno">14115</span>  </div>
|
||
<div class="line"><a name="l14116"></a><span class="lineno">14116</span>  <span class="keywordflow">default</span>:</div>
|
||
<div class="line"><a name="l14117"></a><span class="lineno">14117</span>  {</div>
|
||
<div class="line"><a name="l14118"></a><span class="lineno">14118</span>  <span class="comment">// escape control characters (0x00..0x1F) or, if</span></div>
|
||
<div class="line"><a name="l14119"></a><span class="lineno">14119</span>  <span class="comment">// ensure_ascii parameter is used, non-ASCII characters</span></div>
|
||
<div class="line"><a name="l14120"></a><span class="lineno">14120</span>  <span class="keywordflow">if</span> ((codepoint <= 0x1F) or (ensure_ascii and (codepoint >= 0x7F)))</div>
|
||
<div class="line"><a name="l14121"></a><span class="lineno">14121</span>  {</div>
|
||
<div class="line"><a name="l14122"></a><span class="lineno">14122</span>  <span class="keywordflow">if</span> (codepoint <= 0xFFFF)</div>
|
||
<div class="line"><a name="l14123"></a><span class="lineno">14123</span>  {</div>
|
||
<div class="line"><a name="l14124"></a><span class="lineno">14124</span>  (std::snprintf)(string_buffer.data() + bytes, 7, <span class="stringliteral">"\\u%04x"</span>,</div>
|
||
<div class="line"><a name="l14125"></a><span class="lineno">14125</span>  <span class="keyword">static_cast<</span>std::uint16_t<span class="keyword">></span>(codepoint));</div>
|
||
<div class="line"><a name="l14126"></a><span class="lineno">14126</span>  bytes += 6;</div>
|
||
<div class="line"><a name="l14127"></a><span class="lineno">14127</span>  }</div>
|
||
<div class="line"><a name="l14128"></a><span class="lineno">14128</span>  <span class="keywordflow">else</span></div>
|
||
<div class="line"><a name="l14129"></a><span class="lineno">14129</span>  {</div>
|
||
<div class="line"><a name="l14130"></a><span class="lineno">14130</span>  (std::snprintf)(string_buffer.data() + bytes, 13, <span class="stringliteral">"\\u%04x\\u%04x"</span>,</div>
|
||
<div class="line"><a name="l14131"></a><span class="lineno">14131</span>  <span class="keyword">static_cast<</span>std::uint16_t<span class="keyword">></span>(0xD7C0u + (codepoint >> 10u)),</div>
|
||
<div class="line"><a name="l14132"></a><span class="lineno">14132</span>  <span class="keyword">static_cast<</span>std::uint16_t<span class="keyword">></span>(0xDC00u + (codepoint & 0x3FFu)));</div>
|
||
<div class="line"><a name="l14133"></a><span class="lineno">14133</span>  bytes += 12;</div>
|
||
<div class="line"><a name="l14134"></a><span class="lineno">14134</span>  }</div>
|
||
<div class="line"><a name="l14135"></a><span class="lineno">14135</span>  }</div>
|
||
<div class="line"><a name="l14136"></a><span class="lineno">14136</span>  <span class="keywordflow">else</span></div>
|
||
<div class="line"><a name="l14137"></a><span class="lineno">14137</span>  {</div>
|
||
<div class="line"><a name="l14138"></a><span class="lineno">14138</span>  <span class="comment">// copy byte to buffer (all previous bytes</span></div>
|
||
<div class="line"><a name="l14139"></a><span class="lineno">14139</span>  <span class="comment">// been copied have in default case above)</span></div>
|
||
<div class="line"><a name="l14140"></a><span class="lineno">14140</span>  string_buffer[bytes++] = s[i];</div>
|
||
<div class="line"><a name="l14141"></a><span class="lineno">14141</span>  }</div>
|
||
<div class="line"><a name="l14142"></a><span class="lineno">14142</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l14143"></a><span class="lineno">14143</span>  }</div>
|
||
<div class="line"><a name="l14144"></a><span class="lineno">14144</span>  }</div>
|
||
<div class="line"><a name="l14145"></a><span class="lineno">14145</span>  </div>
|
||
<div class="line"><a name="l14146"></a><span class="lineno">14146</span>  <span class="comment">// write buffer and reset index; there must be 13 bytes</span></div>
|
||
<div class="line"><a name="l14147"></a><span class="lineno">14147</span>  <span class="comment">// left, as this is the maximal number of bytes to be</span></div>
|
||
<div class="line"><a name="l14148"></a><span class="lineno">14148</span>  <span class="comment">// written ("\uxxxx\uxxxx\0") for one code point</span></div>
|
||
<div class="line"><a name="l14149"></a><span class="lineno">14149</span>  <span class="keywordflow">if</span> (string_buffer.size() - bytes < 13)</div>
|
||
<div class="line"><a name="l14150"></a><span class="lineno">14150</span>  {</div>
|
||
<div class="line"><a name="l14151"></a><span class="lineno">14151</span>  o->write_characters(string_buffer.data(), bytes);</div>
|
||
<div class="line"><a name="l14152"></a><span class="lineno">14152</span>  bytes = 0;</div>
|
||
<div class="line"><a name="l14153"></a><span class="lineno">14153</span>  }</div>
|
||
<div class="line"><a name="l14154"></a><span class="lineno">14154</span>  </div>
|
||
<div class="line"><a name="l14155"></a><span class="lineno">14155</span>  <span class="comment">// remember the byte position of this accept</span></div>
|
||
<div class="line"><a name="l14156"></a><span class="lineno">14156</span>  bytes_after_last_accept = bytes;</div>
|
||
<div class="line"><a name="l14157"></a><span class="lineno">14157</span>  undumped_chars = 0;</div>
|
||
<div class="line"><a name="l14158"></a><span class="lineno">14158</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l14159"></a><span class="lineno">14159</span>  }</div>
|
||
<div class="line"><a name="l14160"></a><span class="lineno">14160</span>  </div>
|
||
<div class="line"><a name="l14161"></a><span class="lineno">14161</span>  <span class="keywordflow">case</span> UTF8_REJECT: <span class="comment">// decode found invalid UTF-8 byte</span></div>
|
||
<div class="line"><a name="l14162"></a><span class="lineno">14162</span>  {</div>
|
||
<div class="line"><a name="l14163"></a><span class="lineno">14163</span>  <span class="keywordflow">switch</span> (error_handler)</div>
|
||
<div class="line"><a name="l14164"></a><span class="lineno">14164</span>  {</div>
|
||
<div class="line"><a name="l14165"></a><span class="lineno">14165</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a5a76b60b26dc8c47256a996d18d967dfa2133fd717402a7966ee88d06f9e0b792">error_handler_t::strict</a>:</div>
|
||
<div class="line"><a name="l14166"></a><span class="lineno">14166</span>  {</div>
|
||
<div class="line"><a name="l14167"></a><span class="lineno">14167</span>  std::string sn(3, <span class="charliteral">'\0'</span>);</div>
|
||
<div class="line"><a name="l14168"></a><span class="lineno">14168</span>  (std::snprintf)(&sn[0], sn.size(), <span class="stringliteral">"%.2X"</span>, byte);</div>
|
||
<div class="line"><a name="l14169"></a><span class="lineno">14169</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(316, <span class="stringliteral">"invalid UTF-8 byte at index "</span> + <a class="code" href="namespacenlohmann.html#a6ce645a0b8717757e096a5b5773b7a16">std::to_string</a>(i) + <span class="stringliteral">": 0x"</span> + sn));</div>
|
||
<div class="line"><a name="l14170"></a><span class="lineno">14170</span>  }</div>
|
||
<div class="line"><a name="l14171"></a><span class="lineno">14171</span>  </div>
|
||
<div class="line"><a name="l14172"></a><span class="lineno">14172</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a5a76b60b26dc8c47256a996d18d967dfa567bc1d268f135496de3d5b946b691f3">error_handler_t::ignore</a>:</div>
|
||
<div class="line"><a name="l14173"></a><span class="lineno">14173</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a5a76b60b26dc8c47256a996d18d967dfa9dde360102c103867bd2f45872f1129c">error_handler_t::replace</a>:</div>
|
||
<div class="line"><a name="l14174"></a><span class="lineno">14174</span>  {</div>
|
||
<div class="line"><a name="l14175"></a><span class="lineno">14175</span>  <span class="comment">// in case we saw this character the first time, we</span></div>
|
||
<div class="line"><a name="l14176"></a><span class="lineno">14176</span>  <span class="comment">// would like to read it again, because the byte</span></div>
|
||
<div class="line"><a name="l14177"></a><span class="lineno">14177</span>  <span class="comment">// may be OK for itself, but just not OK for the</span></div>
|
||
<div class="line"><a name="l14178"></a><span class="lineno">14178</span>  <span class="comment">// previous sequence</span></div>
|
||
<div class="line"><a name="l14179"></a><span class="lineno">14179</span>  <span class="keywordflow">if</span> (undumped_chars > 0)</div>
|
||
<div class="line"><a name="l14180"></a><span class="lineno">14180</span>  {</div>
|
||
<div class="line"><a name="l14181"></a><span class="lineno">14181</span>  --i;</div>
|
||
<div class="line"><a name="l14182"></a><span class="lineno">14182</span>  }</div>
|
||
<div class="line"><a name="l14183"></a><span class="lineno">14183</span>  </div>
|
||
<div class="line"><a name="l14184"></a><span class="lineno">14184</span>  <span class="comment">// reset length buffer to the last accepted index;</span></div>
|
||
<div class="line"><a name="l14185"></a><span class="lineno">14185</span>  <span class="comment">// thus removing/ignoring the invalid characters</span></div>
|
||
<div class="line"><a name="l14186"></a><span class="lineno">14186</span>  bytes = bytes_after_last_accept;</div>
|
||
<div class="line"><a name="l14187"></a><span class="lineno">14187</span>  </div>
|
||
<div class="line"><a name="l14188"></a><span class="lineno">14188</span>  <span class="keywordflow">if</span> (error_handler == <a class="code" href="namespacenlohmann_1_1detail.html#a5a76b60b26dc8c47256a996d18d967dfa9dde360102c103867bd2f45872f1129c">error_handler_t::replace</a>)</div>
|
||
<div class="line"><a name="l14189"></a><span class="lineno">14189</span>  {</div>
|
||
<div class="line"><a name="l14190"></a><span class="lineno">14190</span>  <span class="comment">// add a replacement character</span></div>
|
||
<div class="line"><a name="l14191"></a><span class="lineno">14191</span>  <span class="keywordflow">if</span> (ensure_ascii)</div>
|
||
<div class="line"><a name="l14192"></a><span class="lineno">14192</span>  {</div>
|
||
<div class="line"><a name="l14193"></a><span class="lineno">14193</span>  string_buffer[bytes++] = <span class="charliteral">'\\'</span>;</div>
|
||
<div class="line"><a name="l14194"></a><span class="lineno">14194</span>  string_buffer[bytes++] = <span class="charliteral">'u'</span>;</div>
|
||
<div class="line"><a name="l14195"></a><span class="lineno">14195</span>  string_buffer[bytes++] = <span class="charliteral">'f'</span>;</div>
|
||
<div class="line"><a name="l14196"></a><span class="lineno">14196</span>  string_buffer[bytes++] = <span class="charliteral">'f'</span>;</div>
|
||
<div class="line"><a name="l14197"></a><span class="lineno">14197</span>  string_buffer[bytes++] = <span class="charliteral">'f'</span>;</div>
|
||
<div class="line"><a name="l14198"></a><span class="lineno">14198</span>  string_buffer[bytes++] = <span class="charliteral">'d'</span>;</div>
|
||
<div class="line"><a name="l14199"></a><span class="lineno">14199</span>  }</div>
|
||
<div class="line"><a name="l14200"></a><span class="lineno">14200</span>  <span class="keywordflow">else</span></div>
|
||
<div class="line"><a name="l14201"></a><span class="lineno">14201</span>  {</div>
|
||
<div class="line"><a name="l14202"></a><span class="lineno">14202</span>  string_buffer[bytes++] = <a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">detail::binary_writer<BasicJsonType, char>::to_char_type</a>(<span class="stringliteral">'\xEF'</span>);</div>
|
||
<div class="line"><a name="l14203"></a><span class="lineno">14203</span>  string_buffer[bytes++] = <a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">detail::binary_writer<BasicJsonType, char>::to_char_type</a>(<span class="stringliteral">'\xBF'</span>);</div>
|
||
<div class="line"><a name="l14204"></a><span class="lineno">14204</span>  string_buffer[bytes++] = <a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">detail::binary_writer<BasicJsonType, char>::to_char_type</a>(<span class="stringliteral">'\xBD'</span>);</div>
|
||
<div class="line"><a name="l14205"></a><span class="lineno">14205</span>  }</div>
|
||
<div class="line"><a name="l14206"></a><span class="lineno">14206</span>  </div>
|
||
<div class="line"><a name="l14207"></a><span class="lineno">14207</span>  <span class="comment">// write buffer and reset index; there must be 13 bytes</span></div>
|
||
<div class="line"><a name="l14208"></a><span class="lineno">14208</span>  <span class="comment">// left, as this is the maximal number of bytes to be</span></div>
|
||
<div class="line"><a name="l14209"></a><span class="lineno">14209</span>  <span class="comment">// written ("\uxxxx\uxxxx\0") for one code point</span></div>
|
||
<div class="line"><a name="l14210"></a><span class="lineno">14210</span>  <span class="keywordflow">if</span> (string_buffer.size() - bytes < 13)</div>
|
||
<div class="line"><a name="l14211"></a><span class="lineno">14211</span>  {</div>
|
||
<div class="line"><a name="l14212"></a><span class="lineno">14212</span>  o->write_characters(string_buffer.data(), bytes);</div>
|
||
<div class="line"><a name="l14213"></a><span class="lineno">14213</span>  bytes = 0;</div>
|
||
<div class="line"><a name="l14214"></a><span class="lineno">14214</span>  }</div>
|
||
<div class="line"><a name="l14215"></a><span class="lineno">14215</span>  </div>
|
||
<div class="line"><a name="l14216"></a><span class="lineno">14216</span>  bytes_after_last_accept = bytes;</div>
|
||
<div class="line"><a name="l14217"></a><span class="lineno">14217</span>  }</div>
|
||
<div class="line"><a name="l14218"></a><span class="lineno">14218</span>  </div>
|
||
<div class="line"><a name="l14219"></a><span class="lineno">14219</span>  undumped_chars = 0;</div>
|
||
<div class="line"><a name="l14220"></a><span class="lineno">14220</span>  </div>
|
||
<div class="line"><a name="l14221"></a><span class="lineno">14221</span>  <span class="comment">// continue processing the string</span></div>
|
||
<div class="line"><a name="l14222"></a><span class="lineno">14222</span>  state = UTF8_ACCEPT;</div>
|
||
<div class="line"><a name="l14223"></a><span class="lineno">14223</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l14224"></a><span class="lineno">14224</span>  }</div>
|
||
<div class="line"><a name="l14225"></a><span class="lineno">14225</span>  </div>
|
||
<div class="line"><a name="l14226"></a><span class="lineno">14226</span>  <span class="keywordflow">default</span>: <span class="comment">// LCOV_EXCL_LINE</span></div>
|
||
<div class="line"><a name="l14227"></a><span class="lineno">14227</span>  assert(<span class="keyword">false</span>); <span class="comment">// LCOV_EXCL_LINE</span></div>
|
||
<div class="line"><a name="l14228"></a><span class="lineno">14228</span>  }</div>
|
||
<div class="line"><a name="l14229"></a><span class="lineno">14229</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l14230"></a><span class="lineno">14230</span>  }</div>
|
||
<div class="line"><a name="l14231"></a><span class="lineno">14231</span>  </div>
|
||
<div class="line"><a name="l14232"></a><span class="lineno">14232</span>  <span class="keywordflow">default</span>: <span class="comment">// decode found yet incomplete multi-byte code point</span></div>
|
||
<div class="line"><a name="l14233"></a><span class="lineno">14233</span>  {</div>
|
||
<div class="line"><a name="l14234"></a><span class="lineno">14234</span>  <span class="keywordflow">if</span> (not ensure_ascii)</div>
|
||
<div class="line"><a name="l14235"></a><span class="lineno">14235</span>  {</div>
|
||
<div class="line"><a name="l14236"></a><span class="lineno">14236</span>  <span class="comment">// code point will not be escaped - copy byte to buffer</span></div>
|
||
<div class="line"><a name="l14237"></a><span class="lineno">14237</span>  string_buffer[bytes++] = s[i];</div>
|
||
<div class="line"><a name="l14238"></a><span class="lineno">14238</span>  }</div>
|
||
<div class="line"><a name="l14239"></a><span class="lineno">14239</span>  ++undumped_chars;</div>
|
||
<div class="line"><a name="l14240"></a><span class="lineno">14240</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l14241"></a><span class="lineno">14241</span>  }</div>
|
||
<div class="line"><a name="l14242"></a><span class="lineno">14242</span>  }</div>
|
||
<div class="line"><a name="l14243"></a><span class="lineno">14243</span>  }</div>
|
||
<div class="line"><a name="l14244"></a><span class="lineno">14244</span>  </div>
|
||
<div class="line"><a name="l14245"></a><span class="lineno">14245</span>  <span class="comment">// we finished processing the string</span></div>
|
||
<div class="line"><a name="l14246"></a><span class="lineno">14246</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a355f2770653ff7bdd5c74b204b5a3ad0">JSON_HEDLEY_LIKELY</a>(state == UTF8_ACCEPT))</div>
|
||
<div class="line"><a name="l14247"></a><span class="lineno">14247</span>  {</div>
|
||
<div class="line"><a name="l14248"></a><span class="lineno">14248</span>  <span class="comment">// write buffer</span></div>
|
||
<div class="line"><a name="l14249"></a><span class="lineno">14249</span>  <span class="keywordflow">if</span> (bytes > 0)</div>
|
||
<div class="line"><a name="l14250"></a><span class="lineno">14250</span>  {</div>
|
||
<div class="line"><a name="l14251"></a><span class="lineno">14251</span>  o->write_characters(string_buffer.data(), bytes);</div>
|
||
<div class="line"><a name="l14252"></a><span class="lineno">14252</span>  }</div>
|
||
<div class="line"><a name="l14253"></a><span class="lineno">14253</span>  }</div>
|
||
<div class="line"><a name="l14254"></a><span class="lineno">14254</span>  <span class="keywordflow">else</span></div>
|
||
<div class="line"><a name="l14255"></a><span class="lineno">14255</span>  {</div>
|
||
<div class="line"><a name="l14256"></a><span class="lineno">14256</span>  <span class="comment">// we finish reading, but do not accept: string was incomplete</span></div>
|
||
<div class="line"><a name="l14257"></a><span class="lineno">14257</span>  <span class="keywordflow">switch</span> (error_handler)</div>
|
||
<div class="line"><a name="l14258"></a><span class="lineno">14258</span>  {</div>
|
||
<div class="line"><a name="l14259"></a><span class="lineno">14259</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a5a76b60b26dc8c47256a996d18d967dfa2133fd717402a7966ee88d06f9e0b792">error_handler_t::strict</a>:</div>
|
||
<div class="line"><a name="l14260"></a><span class="lineno">14260</span>  {</div>
|
||
<div class="line"><a name="l14261"></a><span class="lineno">14261</span>  std::string sn(3, <span class="charliteral">'\0'</span>);</div>
|
||
<div class="line"><a name="l14262"></a><span class="lineno">14262</span>  (std::snprintf)(&sn[0], sn.size(), <span class="stringliteral">"%.2X"</span>, <span class="keyword">static_cast<</span>std::uint8_t<span class="keyword">></span>(s.back()));</div>
|
||
<div class="line"><a name="l14263"></a><span class="lineno">14263</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(316, <span class="stringliteral">"incomplete UTF-8 string; last byte: 0x"</span> + sn));</div>
|
||
<div class="line"><a name="l14264"></a><span class="lineno">14264</span>  }</div>
|
||
<div class="line"><a name="l14265"></a><span class="lineno">14265</span>  </div>
|
||
<div class="line"><a name="l14266"></a><span class="lineno">14266</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a5a76b60b26dc8c47256a996d18d967dfa567bc1d268f135496de3d5b946b691f3">error_handler_t::ignore</a>:</div>
|
||
<div class="line"><a name="l14267"></a><span class="lineno">14267</span>  {</div>
|
||
<div class="line"><a name="l14268"></a><span class="lineno">14268</span>  <span class="comment">// write all accepted bytes</span></div>
|
||
<div class="line"><a name="l14269"></a><span class="lineno">14269</span>  o->write_characters(string_buffer.data(), bytes_after_last_accept);</div>
|
||
<div class="line"><a name="l14270"></a><span class="lineno">14270</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l14271"></a><span class="lineno">14271</span>  }</div>
|
||
<div class="line"><a name="l14272"></a><span class="lineno">14272</span>  </div>
|
||
<div class="line"><a name="l14273"></a><span class="lineno">14273</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a5a76b60b26dc8c47256a996d18d967dfa9dde360102c103867bd2f45872f1129c">error_handler_t::replace</a>:</div>
|
||
<div class="line"><a name="l14274"></a><span class="lineno">14274</span>  {</div>
|
||
<div class="line"><a name="l14275"></a><span class="lineno">14275</span>  <span class="comment">// write all accepted bytes</span></div>
|
||
<div class="line"><a name="l14276"></a><span class="lineno">14276</span>  o->write_characters(string_buffer.data(), bytes_after_last_accept);</div>
|
||
<div class="line"><a name="l14277"></a><span class="lineno">14277</span>  <span class="comment">// add a replacement character</span></div>
|
||
<div class="line"><a name="l14278"></a><span class="lineno">14278</span>  <span class="keywordflow">if</span> (ensure_ascii)</div>
|
||
<div class="line"><a name="l14279"></a><span class="lineno">14279</span>  {</div>
|
||
<div class="line"><a name="l14280"></a><span class="lineno">14280</span>  o->write_characters(<span class="stringliteral">"\\ufffd"</span>, 6);</div>
|
||
<div class="line"><a name="l14281"></a><span class="lineno">14281</span>  }</div>
|
||
<div class="line"><a name="l14282"></a><span class="lineno">14282</span>  <span class="keywordflow">else</span></div>
|
||
<div class="line"><a name="l14283"></a><span class="lineno">14283</span>  {</div>
|
||
<div class="line"><a name="l14284"></a><span class="lineno">14284</span>  o->write_characters(<span class="stringliteral">"\xEF\xBF\xBD"</span>, 3);</div>
|
||
<div class="line"><a name="l14285"></a><span class="lineno">14285</span>  }</div>
|
||
<div class="line"><a name="l14286"></a><span class="lineno">14286</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l14287"></a><span class="lineno">14287</span>  }</div>
|
||
<div class="line"><a name="l14288"></a><span class="lineno">14288</span>  </div>
|
||
<div class="line"><a name="l14289"></a><span class="lineno">14289</span>  <span class="keywordflow">default</span>: <span class="comment">// LCOV_EXCL_LINE</span></div>
|
||
<div class="line"><a name="l14290"></a><span class="lineno">14290</span>  assert(<span class="keyword">false</span>); <span class="comment">// LCOV_EXCL_LINE</span></div>
|
||
<div class="line"><a name="l14291"></a><span class="lineno">14291</span>  }</div>
|
||
<div class="line"><a name="l14292"></a><span class="lineno">14292</span>  }</div>
|
||
<div class="line"><a name="l14293"></a><span class="lineno">14293</span>  }</div>
|
||
<div class="line"><a name="l14294"></a><span class="lineno">14294</span>  </div>
|
||
<div class="line"><a name="l14303"></a><span class="lineno">14303</span>  <span class="keyword">inline</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> count_digits(number_unsigned_t x) noexcept</div>
|
||
<div class="line"><a name="l14304"></a><span class="lineno">14304</span>  {</div>
|
||
<div class="line"><a name="l14305"></a><span class="lineno">14305</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> n_digits = 1;</div>
|
||
<div class="line"><a name="l14306"></a><span class="lineno">14306</span>  <span class="keywordflow">for</span> (;;)</div>
|
||
<div class="line"><a name="l14307"></a><span class="lineno">14307</span>  {</div>
|
||
<div class="line"><a name="l14308"></a><span class="lineno">14308</span>  <span class="keywordflow">if</span> (x < 10)</div>
|
||
<div class="line"><a name="l14309"></a><span class="lineno">14309</span>  {</div>
|
||
<div class="line"><a name="l14310"></a><span class="lineno">14310</span>  <span class="keywordflow">return</span> n_digits;</div>
|
||
<div class="line"><a name="l14311"></a><span class="lineno">14311</span>  }</div>
|
||
<div class="line"><a name="l14312"></a><span class="lineno">14312</span>  <span class="keywordflow">if</span> (x < 100)</div>
|
||
<div class="line"><a name="l14313"></a><span class="lineno">14313</span>  {</div>
|
||
<div class="line"><a name="l14314"></a><span class="lineno">14314</span>  <span class="keywordflow">return</span> n_digits + 1;</div>
|
||
<div class="line"><a name="l14315"></a><span class="lineno">14315</span>  }</div>
|
||
<div class="line"><a name="l14316"></a><span class="lineno">14316</span>  <span class="keywordflow">if</span> (x < 1000)</div>
|
||
<div class="line"><a name="l14317"></a><span class="lineno">14317</span>  {</div>
|
||
<div class="line"><a name="l14318"></a><span class="lineno">14318</span>  <span class="keywordflow">return</span> n_digits + 2;</div>
|
||
<div class="line"><a name="l14319"></a><span class="lineno">14319</span>  }</div>
|
||
<div class="line"><a name="l14320"></a><span class="lineno">14320</span>  <span class="keywordflow">if</span> (x < 10000)</div>
|
||
<div class="line"><a name="l14321"></a><span class="lineno">14321</span>  {</div>
|
||
<div class="line"><a name="l14322"></a><span class="lineno">14322</span>  <span class="keywordflow">return</span> n_digits + 3;</div>
|
||
<div class="line"><a name="l14323"></a><span class="lineno">14323</span>  }</div>
|
||
<div class="line"><a name="l14324"></a><span class="lineno">14324</span>  x = x / 10000u;</div>
|
||
<div class="line"><a name="l14325"></a><span class="lineno">14325</span>  n_digits += 4;</div>
|
||
<div class="line"><a name="l14326"></a><span class="lineno">14326</span>  }</div>
|
||
<div class="line"><a name="l14327"></a><span class="lineno">14327</span>  }</div>
|
||
<div class="line"><a name="l14328"></a><span class="lineno">14328</span>  </div>
|
||
<div class="line"><a name="l14338"></a><span class="lineno">14338</span>  <span class="keyword">template</span><<span class="keyword">typename</span> NumberType, <a class="code" href="namespacenlohmann_1_1detail.html#a02bcbc878bee413f25b985ada771aa9c">detail::enable_if_t</a><</div>
|
||
<div class="line"><a name="l14339"></a><span class="lineno">14339</span>  std::is_same<NumberType, number_unsigned_t>::value or</div>
|
||
<div class="line"><a name="l14340"></a><span class="lineno">14340</span>  std::is_same<NumberType, number_integer_t>::value,</div>
|
||
<div class="line"><a name="l14341"></a><span class="lineno">14341</span>  <span class="keywordtype">int</span>> = 0></div>
|
||
<div class="line"><a name="l14342"></a><span class="lineno">14342</span>  <span class="keywordtype">void</span> dump_integer(NumberType x)</div>
|
||
<div class="line"><a name="l14343"></a><span class="lineno">14343</span>  {</div>
|
||
<div class="line"><a name="l14344"></a><span class="lineno">14344</span>  <span class="keyword">static</span> constexpr std::array<std::array<char, 2>, 100> digits_to_99</div>
|
||
<div class="line"><a name="l14345"></a><span class="lineno">14345</span>  {</div>
|
||
<div class="line"><a name="l14346"></a><span class="lineno">14346</span>  {</div>
|
||
<div class="line"><a name="l14347"></a><span class="lineno">14347</span>  {{<span class="charliteral">'0'</span>, <span class="charliteral">'0'</span>}}, {{<span class="charliteral">'0'</span>, <span class="charliteral">'1'</span>}}, {{<span class="charliteral">'0'</span>, <span class="charliteral">'2'</span>}}, {{<span class="charliteral">'0'</span>, <span class="charliteral">'3'</span>}}, {{<span class="charliteral">'0'</span>, <span class="charliteral">'4'</span>}}, {{<span class="charliteral">'0'</span>, <span class="charliteral">'5'</span>}}, {{<span class="charliteral">'0'</span>, <span class="charliteral">'6'</span>}}, {{<span class="charliteral">'0'</span>, <span class="charliteral">'7'</span>}}, {{<span class="charliteral">'0'</span>, <span class="charliteral">'8'</span>}}, {{<span class="charliteral">'0'</span>, <span class="charliteral">'9'</span>}},</div>
|
||
<div class="line"><a name="l14348"></a><span class="lineno">14348</span>  {{<span class="charliteral">'1'</span>, <span class="charliteral">'0'</span>}}, {{<span class="charliteral">'1'</span>, <span class="charliteral">'1'</span>}}, {{<span class="charliteral">'1'</span>, <span class="charliteral">'2'</span>}}, {{<span class="charliteral">'1'</span>, <span class="charliteral">'3'</span>}}, {{<span class="charliteral">'1'</span>, <span class="charliteral">'4'</span>}}, {{<span class="charliteral">'1'</span>, <span class="charliteral">'5'</span>}}, {{<span class="charliteral">'1'</span>, <span class="charliteral">'6'</span>}}, {{<span class="charliteral">'1'</span>, <span class="charliteral">'7'</span>}}, {{<span class="charliteral">'1'</span>, <span class="charliteral">'8'</span>}}, {{<span class="charliteral">'1'</span>, <span class="charliteral">'9'</span>}},</div>
|
||
<div class="line"><a name="l14349"></a><span class="lineno">14349</span>  {{<span class="charliteral">'2'</span>, <span class="charliteral">'0'</span>}}, {{<span class="charliteral">'2'</span>, <span class="charliteral">'1'</span>}}, {{<span class="charliteral">'2'</span>, <span class="charliteral">'2'</span>}}, {{<span class="charliteral">'2'</span>, <span class="charliteral">'3'</span>}}, {{<span class="charliteral">'2'</span>, <span class="charliteral">'4'</span>}}, {{<span class="charliteral">'2'</span>, <span class="charliteral">'5'</span>}}, {{<span class="charliteral">'2'</span>, <span class="charliteral">'6'</span>}}, {{<span class="charliteral">'2'</span>, <span class="charliteral">'7'</span>}}, {{<span class="charliteral">'2'</span>, <span class="charliteral">'8'</span>}}, {{<span class="charliteral">'2'</span>, <span class="charliteral">'9'</span>}},</div>
|
||
<div class="line"><a name="l14350"></a><span class="lineno">14350</span>  {{<span class="charliteral">'3'</span>, <span class="charliteral">'0'</span>}}, {{<span class="charliteral">'3'</span>, <span class="charliteral">'1'</span>}}, {{<span class="charliteral">'3'</span>, <span class="charliteral">'2'</span>}}, {{<span class="charliteral">'3'</span>, <span class="charliteral">'3'</span>}}, {{<span class="charliteral">'3'</span>, <span class="charliteral">'4'</span>}}, {{<span class="charliteral">'3'</span>, <span class="charliteral">'5'</span>}}, {{<span class="charliteral">'3'</span>, <span class="charliteral">'6'</span>}}, {{<span class="charliteral">'3'</span>, <span class="charliteral">'7'</span>}}, {{<span class="charliteral">'3'</span>, <span class="charliteral">'8'</span>}}, {{<span class="charliteral">'3'</span>, <span class="charliteral">'9'</span>}},</div>
|
||
<div class="line"><a name="l14351"></a><span class="lineno">14351</span>  {{<span class="charliteral">'4'</span>, <span class="charliteral">'0'</span>}}, {{<span class="charliteral">'4'</span>, <span class="charliteral">'1'</span>}}, {{<span class="charliteral">'4'</span>, <span class="charliteral">'2'</span>}}, {{<span class="charliteral">'4'</span>, <span class="charliteral">'3'</span>}}, {{<span class="charliteral">'4'</span>, <span class="charliteral">'4'</span>}}, {{<span class="charliteral">'4'</span>, <span class="charliteral">'5'</span>}}, {{<span class="charliteral">'4'</span>, <span class="charliteral">'6'</span>}}, {{<span class="charliteral">'4'</span>, <span class="charliteral">'7'</span>}}, {{<span class="charliteral">'4'</span>, <span class="charliteral">'8'</span>}}, {{<span class="charliteral">'4'</span>, <span class="charliteral">'9'</span>}},</div>
|
||
<div class="line"><a name="l14352"></a><span class="lineno">14352</span>  {{<span class="charliteral">'5'</span>, <span class="charliteral">'0'</span>}}, {{<span class="charliteral">'5'</span>, <span class="charliteral">'1'</span>}}, {{<span class="charliteral">'5'</span>, <span class="charliteral">'2'</span>}}, {{<span class="charliteral">'5'</span>, <span class="charliteral">'3'</span>}}, {{<span class="charliteral">'5'</span>, <span class="charliteral">'4'</span>}}, {{<span class="charliteral">'5'</span>, <span class="charliteral">'5'</span>}}, {{<span class="charliteral">'5'</span>, <span class="charliteral">'6'</span>}}, {{<span class="charliteral">'5'</span>, <span class="charliteral">'7'</span>}}, {{<span class="charliteral">'5'</span>, <span class="charliteral">'8'</span>}}, {{<span class="charliteral">'5'</span>, <span class="charliteral">'9'</span>}},</div>
|
||
<div class="line"><a name="l14353"></a><span class="lineno">14353</span>  {{<span class="charliteral">'6'</span>, <span class="charliteral">'0'</span>}}, {{<span class="charliteral">'6'</span>, <span class="charliteral">'1'</span>}}, {{<span class="charliteral">'6'</span>, <span class="charliteral">'2'</span>}}, {{<span class="charliteral">'6'</span>, <span class="charliteral">'3'</span>}}, {{<span class="charliteral">'6'</span>, <span class="charliteral">'4'</span>}}, {{<span class="charliteral">'6'</span>, <span class="charliteral">'5'</span>}}, {{<span class="charliteral">'6'</span>, <span class="charliteral">'6'</span>}}, {{<span class="charliteral">'6'</span>, <span class="charliteral">'7'</span>}}, {{<span class="charliteral">'6'</span>, <span class="charliteral">'8'</span>}}, {{<span class="charliteral">'6'</span>, <span class="charliteral">'9'</span>}},</div>
|
||
<div class="line"><a name="l14354"></a><span class="lineno">14354</span>  {{<span class="charliteral">'7'</span>, <span class="charliteral">'0'</span>}}, {{<span class="charliteral">'7'</span>, <span class="charliteral">'1'</span>}}, {{<span class="charliteral">'7'</span>, <span class="charliteral">'2'</span>}}, {{<span class="charliteral">'7'</span>, <span class="charliteral">'3'</span>}}, {{<span class="charliteral">'7'</span>, <span class="charliteral">'4'</span>}}, {{<span class="charliteral">'7'</span>, <span class="charliteral">'5'</span>}}, {{<span class="charliteral">'7'</span>, <span class="charliteral">'6'</span>}}, {{<span class="charliteral">'7'</span>, <span class="charliteral">'7'</span>}}, {{<span class="charliteral">'7'</span>, <span class="charliteral">'8'</span>}}, {{<span class="charliteral">'7'</span>, <span class="charliteral">'9'</span>}},</div>
|
||
<div class="line"><a name="l14355"></a><span class="lineno">14355</span>  {{<span class="charliteral">'8'</span>, <span class="charliteral">'0'</span>}}, {{<span class="charliteral">'8'</span>, <span class="charliteral">'1'</span>}}, {{<span class="charliteral">'8'</span>, <span class="charliteral">'2'</span>}}, {{<span class="charliteral">'8'</span>, <span class="charliteral">'3'</span>}}, {{<span class="charliteral">'8'</span>, <span class="charliteral">'4'</span>}}, {{<span class="charliteral">'8'</span>, <span class="charliteral">'5'</span>}}, {{<span class="charliteral">'8'</span>, <span class="charliteral">'6'</span>}}, {{<span class="charliteral">'8'</span>, <span class="charliteral">'7'</span>}}, {{<span class="charliteral">'8'</span>, <span class="charliteral">'8'</span>}}, {{<span class="charliteral">'8'</span>, <span class="charliteral">'9'</span>}},</div>
|
||
<div class="line"><a name="l14356"></a><span class="lineno">14356</span>  {{<span class="charliteral">'9'</span>, <span class="charliteral">'0'</span>}}, {{<span class="charliteral">'9'</span>, <span class="charliteral">'1'</span>}}, {{<span class="charliteral">'9'</span>, <span class="charliteral">'2'</span>}}, {{<span class="charliteral">'9'</span>, <span class="charliteral">'3'</span>}}, {{<span class="charliteral">'9'</span>, <span class="charliteral">'4'</span>}}, {{<span class="charliteral">'9'</span>, <span class="charliteral">'5'</span>}}, {{<span class="charliteral">'9'</span>, <span class="charliteral">'6'</span>}}, {{<span class="charliteral">'9'</span>, <span class="charliteral">'7'</span>}}, {{<span class="charliteral">'9'</span>, <span class="charliteral">'8'</span>}}, {{<span class="charliteral">'9'</span>, <span class="charliteral">'9'</span>}},</div>
|
||
<div class="line"><a name="l14357"></a><span class="lineno">14357</span>  }</div>
|
||
<div class="line"><a name="l14358"></a><span class="lineno">14358</span>  };</div>
|
||
<div class="line"><a name="l14359"></a><span class="lineno">14359</span>  </div>
|
||
<div class="line"><a name="l14360"></a><span class="lineno">14360</span>  <span class="comment">// special case for "0"</span></div>
|
||
<div class="line"><a name="l14361"></a><span class="lineno">14361</span>  <span class="keywordflow">if</span> (x == 0)</div>
|
||
<div class="line"><a name="l14362"></a><span class="lineno">14362</span>  {</div>
|
||
<div class="line"><a name="l14363"></a><span class="lineno">14363</span>  o->write_character(<span class="charliteral">'0'</span>);</div>
|
||
<div class="line"><a name="l14364"></a><span class="lineno">14364</span>  <span class="keywordflow">return</span>;</div>
|
||
<div class="line"><a name="l14365"></a><span class="lineno">14365</span>  }</div>
|
||
<div class="line"><a name="l14366"></a><span class="lineno">14366</span>  </div>
|
||
<div class="line"><a name="l14367"></a><span class="lineno">14367</span>  <span class="comment">// use a pointer to fill the buffer</span></div>
|
||
<div class="line"><a name="l14368"></a><span class="lineno">14368</span>  <span class="keyword">auto</span> buffer_ptr = number_buffer.begin();</div>
|
||
<div class="line"><a name="l14369"></a><span class="lineno">14369</span>  </div>
|
||
<div class="line"><a name="l14370"></a><span class="lineno">14370</span>  <span class="keyword">const</span> <span class="keywordtype">bool</span> is_negative = std::is_same<NumberType, number_integer_t>::value and not(x >= 0); <span class="comment">// see issue #755</span></div>
|
||
<div class="line"><a name="l14371"></a><span class="lineno">14371</span>  number_unsigned_t abs_value;</div>
|
||
<div class="line"><a name="l14372"></a><span class="lineno">14372</span>  </div>
|
||
<div class="line"><a name="l14373"></a><span class="lineno">14373</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> n_chars;</div>
|
||
<div class="line"><a name="l14374"></a><span class="lineno">14374</span>  </div>
|
||
<div class="line"><a name="l14375"></a><span class="lineno">14375</span>  <span class="keywordflow">if</span> (is_negative)</div>
|
||
<div class="line"><a name="l14376"></a><span class="lineno">14376</span>  {</div>
|
||
<div class="line"><a name="l14377"></a><span class="lineno">14377</span>  *buffer_ptr = <span class="charliteral">'-'</span>;</div>
|
||
<div class="line"><a name="l14378"></a><span class="lineno">14378</span>  abs_value = remove_sign(x);</div>
|
||
<div class="line"><a name="l14379"></a><span class="lineno">14379</span>  </div>
|
||
<div class="line"><a name="l14380"></a><span class="lineno">14380</span>  <span class="comment">// account one more byte for the minus sign</span></div>
|
||
<div class="line"><a name="l14381"></a><span class="lineno">14381</span>  n_chars = 1 + count_digits(abs_value);</div>
|
||
<div class="line"><a name="l14382"></a><span class="lineno">14382</span>  }</div>
|
||
<div class="line"><a name="l14383"></a><span class="lineno">14383</span>  <span class="keywordflow">else</span></div>
|
||
<div class="line"><a name="l14384"></a><span class="lineno">14384</span>  {</div>
|
||
<div class="line"><a name="l14385"></a><span class="lineno">14385</span>  abs_value = <span class="keyword">static_cast<</span>number_unsigned_t<span class="keyword">></span>(x);</div>
|
||
<div class="line"><a name="l14386"></a><span class="lineno">14386</span>  n_chars = count_digits(abs_value);</div>
|
||
<div class="line"><a name="l14387"></a><span class="lineno">14387</span>  }</div>
|
||
<div class="line"><a name="l14388"></a><span class="lineno">14388</span>  </div>
|
||
<div class="line"><a name="l14389"></a><span class="lineno">14389</span>  <span class="comment">// spare 1 byte for '\0'</span></div>
|
||
<div class="line"><a name="l14390"></a><span class="lineno">14390</span>  assert(n_chars < number_buffer.size() - 1);</div>
|
||
<div class="line"><a name="l14391"></a><span class="lineno">14391</span>  </div>
|
||
<div class="line"><a name="l14392"></a><span class="lineno">14392</span>  <span class="comment">// jump to the end to generate the string from backward</span></div>
|
||
<div class="line"><a name="l14393"></a><span class="lineno">14393</span>  <span class="comment">// so we later avoid reversing the result</span></div>
|
||
<div class="line"><a name="l14394"></a><span class="lineno">14394</span>  buffer_ptr += n_chars;</div>
|
||
<div class="line"><a name="l14395"></a><span class="lineno">14395</span>  </div>
|
||
<div class="line"><a name="l14396"></a><span class="lineno">14396</span>  <span class="comment">// Fast int2ascii implementation inspired by "Fastware" talk by Andrei Alexandrescu</span></div>
|
||
<div class="line"><a name="l14397"></a><span class="lineno">14397</span>  <span class="comment">// See: https://www.youtube.com/watch?v=o4-CwDo2zpg</span></div>
|
||
<div class="line"><a name="l14398"></a><span class="lineno">14398</span>  <span class="keywordflow">while</span> (abs_value >= 100)</div>
|
||
<div class="line"><a name="l14399"></a><span class="lineno">14399</span>  {</div>
|
||
<div class="line"><a name="l14400"></a><span class="lineno">14400</span>  <span class="keyword">const</span> <span class="keyword">auto</span> digits_index = <span class="keyword">static_cast<</span><span class="keywordtype">unsigned</span><span class="keyword">></span>((abs_value % 100));</div>
|
||
<div class="line"><a name="l14401"></a><span class="lineno">14401</span>  abs_value /= 100;</div>
|
||
<div class="line"><a name="l14402"></a><span class="lineno">14402</span>  *(--buffer_ptr) = digits_to_99[digits_index][1];</div>
|
||
<div class="line"><a name="l14403"></a><span class="lineno">14403</span>  *(--buffer_ptr) = digits_to_99[digits_index][0];</div>
|
||
<div class="line"><a name="l14404"></a><span class="lineno">14404</span>  }</div>
|
||
<div class="line"><a name="l14405"></a><span class="lineno">14405</span>  </div>
|
||
<div class="line"><a name="l14406"></a><span class="lineno">14406</span>  <span class="keywordflow">if</span> (abs_value >= 10)</div>
|
||
<div class="line"><a name="l14407"></a><span class="lineno">14407</span>  {</div>
|
||
<div class="line"><a name="l14408"></a><span class="lineno">14408</span>  <span class="keyword">const</span> <span class="keyword">auto</span> digits_index = <span class="keyword">static_cast<</span><span class="keywordtype">unsigned</span><span class="keyword">></span>(abs_value);</div>
|
||
<div class="line"><a name="l14409"></a><span class="lineno">14409</span>  *(--buffer_ptr) = digits_to_99[digits_index][1];</div>
|
||
<div class="line"><a name="l14410"></a><span class="lineno">14410</span>  *(--buffer_ptr) = digits_to_99[digits_index][0];</div>
|
||
<div class="line"><a name="l14411"></a><span class="lineno">14411</span>  }</div>
|
||
<div class="line"><a name="l14412"></a><span class="lineno">14412</span>  <span class="keywordflow">else</span></div>
|
||
<div class="line"><a name="l14413"></a><span class="lineno">14413</span>  {</div>
|
||
<div class="line"><a name="l14414"></a><span class="lineno">14414</span>  *(--buffer_ptr) = <span class="keyword">static_cast<</span><span class="keywordtype">char</span><span class="keyword">></span>(<span class="charliteral">'0'</span> + abs_value);</div>
|
||
<div class="line"><a name="l14415"></a><span class="lineno">14415</span>  }</div>
|
||
<div class="line"><a name="l14416"></a><span class="lineno">14416</span>  </div>
|
||
<div class="line"><a name="l14417"></a><span class="lineno">14417</span>  o->write_characters(number_buffer.data(), n_chars);</div>
|
||
<div class="line"><a name="l14418"></a><span class="lineno">14418</span>  }</div>
|
||
<div class="line"><a name="l14419"></a><span class="lineno">14419</span>  </div>
|
||
<div class="line"><a name="l14428"></a><span class="lineno">14428</span>  <span class="keywordtype">void</span> dump_float(number_float_t x)</div>
|
||
<div class="line"><a name="l14429"></a><span class="lineno">14429</span>  {</div>
|
||
<div class="line"><a name="l14430"></a><span class="lineno">14430</span>  <span class="comment">// NaN / inf</span></div>
|
||
<div class="line"><a name="l14431"></a><span class="lineno">14431</span>  <span class="keywordflow">if</span> (not std::isfinite(x))</div>
|
||
<div class="line"><a name="l14432"></a><span class="lineno">14432</span>  {</div>
|
||
<div class="line"><a name="l14433"></a><span class="lineno">14433</span>  o->write_characters(<span class="stringliteral">"null"</span>, 4);</div>
|
||
<div class="line"><a name="l14434"></a><span class="lineno">14434</span>  <span class="keywordflow">return</span>;</div>
|
||
<div class="line"><a name="l14435"></a><span class="lineno">14435</span>  }</div>
|
||
<div class="line"><a name="l14436"></a><span class="lineno">14436</span>  </div>
|
||
<div class="line"><a name="l14437"></a><span class="lineno">14437</span>  <span class="comment">// If number_float_t is an IEEE-754 single or double precision number,</span></div>
|
||
<div class="line"><a name="l14438"></a><span class="lineno">14438</span>  <span class="comment">// use the Grisu2 algorithm to produce short numbers which are</span></div>
|
||
<div class="line"><a name="l14439"></a><span class="lineno">14439</span>  <span class="comment">// guaranteed to round-trip, using strtof and strtod, resp.</span></div>
|
||
<div class="line"><a name="l14440"></a><span class="lineno">14440</span>  <span class="comment">//</span></div>
|
||
<div class="line"><a name="l14441"></a><span class="lineno">14441</span>  <span class="comment">// NB: The test below works if <long double> == <double>.</span></div>
|
||
<div class="line"><a name="l14442"></a><span class="lineno">14442</span>  <span class="keyword">static</span> constexpr <span class="keywordtype">bool</span> is_ieee_single_or_double</div>
|
||
<div class="line"><a name="l14443"></a><span class="lineno">14443</span>  = (std::numeric_limits<number_float_t>::is_iec559 and std::numeric_limits<number_float_t>::digits == 24 and std::numeric_limits<number_float_t>::max_exponent == 128) or</div>
|
||
<div class="line"><a name="l14444"></a><span class="lineno">14444</span>  (std::numeric_limits<number_float_t>::is_iec559 and std::numeric_limits<number_float_t>::digits == 53 and std::numeric_limits<number_float_t>::max_exponent == 1024);</div>
|
||
<div class="line"><a name="l14445"></a><span class="lineno">14445</span>  </div>
|
||
<div class="line"><a name="l14446"></a><span class="lineno">14446</span>  dump_float(x, std::integral_constant<bool, is_ieee_single_or_double>());</div>
|
||
<div class="line"><a name="l14447"></a><span class="lineno">14447</span>  }</div>
|
||
<div class="line"><a name="l14448"></a><span class="lineno">14448</span>  </div>
|
||
<div class="line"><a name="l14449"></a><span class="lineno">14449</span>  <span class="keywordtype">void</span> dump_float(number_float_t x, std::true_type <span class="comment">/*is_ieee_single_or_double*/</span>)</div>
|
||
<div class="line"><a name="l14450"></a><span class="lineno">14450</span>  {</div>
|
||
<div class="line"><a name="l14451"></a><span class="lineno">14451</span>  <span class="keywordtype">char</span>* begin = number_buffer.data();</div>
|
||
<div class="line"><a name="l14452"></a><span class="lineno">14452</span>  <span class="keywordtype">char</span>* end = <a class="code" href="namespacenlohmann_1_1detail.html#a6cca370ac6c99294dbe4fe24716a57dd">::nlohmann::detail::to_chars</a>(begin, begin + number_buffer.size(), x);</div>
|
||
<div class="line"><a name="l14453"></a><span class="lineno">14453</span>  </div>
|
||
<div class="line"><a name="l14454"></a><span class="lineno">14454</span>  o->write_characters(begin, <span class="keyword">static_cast<</span><span class="keywordtype">size_t</span><span class="keyword">></span>(end - begin));</div>
|
||
<div class="line"><a name="l14455"></a><span class="lineno">14455</span>  }</div>
|
||
<div class="line"><a name="l14456"></a><span class="lineno">14456</span>  </div>
|
||
<div class="line"><a name="l14457"></a><span class="lineno">14457</span>  <span class="keywordtype">void</span> dump_float(number_float_t x, std::false_type <span class="comment">/*is_ieee_single_or_double*/</span>)</div>
|
||
<div class="line"><a name="l14458"></a><span class="lineno">14458</span>  {</div>
|
||
<div class="line"><a name="l14459"></a><span class="lineno">14459</span>  <span class="comment">// get number of digits for a float -> text -> float round-trip</span></div>
|
||
<div class="line"><a name="l14460"></a><span class="lineno">14460</span>  <span class="keyword">static</span> constexpr <span class="keyword">auto</span> d = std::numeric_limits<number_float_t>::max_digits10;</div>
|
||
<div class="line"><a name="l14461"></a><span class="lineno">14461</span>  </div>
|
||
<div class="line"><a name="l14462"></a><span class="lineno">14462</span>  <span class="comment">// the actual conversion</span></div>
|
||
<div class="line"><a name="l14463"></a><span class="lineno">14463</span>  std::ptrdiff_t len = (std::snprintf)(number_buffer.data(), number_buffer.size(), <span class="stringliteral">"%.*g"</span>, d, x);</div>
|
||
<div class="line"><a name="l14464"></a><span class="lineno">14464</span>  </div>
|
||
<div class="line"><a name="l14465"></a><span class="lineno">14465</span>  <span class="comment">// negative value indicates an error</span></div>
|
||
<div class="line"><a name="l14466"></a><span class="lineno">14466</span>  assert(len > 0);</div>
|
||
<div class="line"><a name="l14467"></a><span class="lineno">14467</span>  <span class="comment">// check if buffer was large enough</span></div>
|
||
<div class="line"><a name="l14468"></a><span class="lineno">14468</span>  assert(<span class="keyword">static_cast<</span>std::size_t<span class="keyword">></span>(len) < number_buffer.size());</div>
|
||
<div class="line"><a name="l14469"></a><span class="lineno">14469</span>  </div>
|
||
<div class="line"><a name="l14470"></a><span class="lineno">14470</span>  <span class="comment">// erase thousands separator</span></div>
|
||
<div class="line"><a name="l14471"></a><span class="lineno">14471</span>  <span class="keywordflow">if</span> (thousands_sep != <span class="charliteral">'\0'</span>)</div>
|
||
<div class="line"><a name="l14472"></a><span class="lineno">14472</span>  {</div>
|
||
<div class="line"><a name="l14473"></a><span class="lineno">14473</span>  <span class="keyword">const</span> <span class="keyword">auto</span> end = std::remove(number_buffer.begin(),</div>
|
||
<div class="line"><a name="l14474"></a><span class="lineno">14474</span>  number_buffer.begin() + len, thousands_sep);</div>
|
||
<div class="line"><a name="l14475"></a><span class="lineno">14475</span>  std::fill(end, number_buffer.end(), <span class="charliteral">'\0'</span>);</div>
|
||
<div class="line"><a name="l14476"></a><span class="lineno">14476</span>  assert((end - number_buffer.begin()) <= len);</div>
|
||
<div class="line"><a name="l14477"></a><span class="lineno">14477</span>  len = (end - number_buffer.begin());</div>
|
||
<div class="line"><a name="l14478"></a><span class="lineno">14478</span>  }</div>
|
||
<div class="line"><a name="l14479"></a><span class="lineno">14479</span>  </div>
|
||
<div class="line"><a name="l14480"></a><span class="lineno">14480</span>  <span class="comment">// convert decimal point to '.'</span></div>
|
||
<div class="line"><a name="l14481"></a><span class="lineno">14481</span>  <span class="keywordflow">if</span> (decimal_point != <span class="charliteral">'\0'</span> and decimal_point != <span class="charliteral">'.'</span>)</div>
|
||
<div class="line"><a name="l14482"></a><span class="lineno">14482</span>  {</div>
|
||
<div class="line"><a name="l14483"></a><span class="lineno">14483</span>  <span class="keyword">const</span> <span class="keyword">auto</span> dec_pos = std::find(number_buffer.begin(), number_buffer.end(), decimal_point);</div>
|
||
<div class="line"><a name="l14484"></a><span class="lineno">14484</span>  <span class="keywordflow">if</span> (dec_pos != number_buffer.end())</div>
|
||
<div class="line"><a name="l14485"></a><span class="lineno">14485</span>  {</div>
|
||
<div class="line"><a name="l14486"></a><span class="lineno">14486</span>  *dec_pos = <span class="charliteral">'.'</span>;</div>
|
||
<div class="line"><a name="l14487"></a><span class="lineno">14487</span>  }</div>
|
||
<div class="line"><a name="l14488"></a><span class="lineno">14488</span>  }</div>
|
||
<div class="line"><a name="l14489"></a><span class="lineno">14489</span>  </div>
|
||
<div class="line"><a name="l14490"></a><span class="lineno">14490</span>  o->write_characters(number_buffer.data(), <span class="keyword">static_cast<</span>std::size_t<span class="keyword">></span>(len));</div>
|
||
<div class="line"><a name="l14491"></a><span class="lineno">14491</span>  </div>
|
||
<div class="line"><a name="l14492"></a><span class="lineno">14492</span>  <span class="comment">// determine if need to append ".0"</span></div>
|
||
<div class="line"><a name="l14493"></a><span class="lineno">14493</span>  <span class="keyword">const</span> <span class="keywordtype">bool</span> value_is_int_like =</div>
|
||
<div class="line"><a name="l14494"></a><span class="lineno">14494</span>  std::none_of(number_buffer.begin(), number_buffer.begin() + len + 1,</div>
|
||
<div class="line"><a name="l14495"></a><span class="lineno">14495</span>  [](<span class="keywordtype">char</span> c)</div>
|
||
<div class="line"><a name="l14496"></a><span class="lineno">14496</span>  {</div>
|
||
<div class="line"><a name="l14497"></a><span class="lineno">14497</span>  return c == <span class="stringliteral">'.'</span> or c == <span class="stringliteral">'e'</span>;</div>
|
||
<div class="line"><a name="l14498"></a><span class="lineno">14498</span>  });</div>
|
||
<div class="line"><a name="l14499"></a><span class="lineno">14499</span>  </div>
|
||
<div class="line"><a name="l14500"></a><span class="lineno">14500</span>  <span class="keywordflow">if</span> (value_is_int_like)</div>
|
||
<div class="line"><a name="l14501"></a><span class="lineno">14501</span>  {</div>
|
||
<div class="line"><a name="l14502"></a><span class="lineno">14502</span>  o->write_characters(<span class="stringliteral">".0"</span>, 2);</div>
|
||
<div class="line"><a name="l14503"></a><span class="lineno">14503</span>  }</div>
|
||
<div class="line"><a name="l14504"></a><span class="lineno">14504</span>  }</div>
|
||
<div class="line"><a name="l14505"></a><span class="lineno">14505</span>  </div>
|
||
<div class="line"><a name="l14527"></a><span class="lineno">14527</span>  <span class="keyword">static</span> std::uint8_t decode(std::uint8_t& state, std::uint32_t& codep, <span class="keyword">const</span> std::uint8_t <span class="keywordtype">byte</span>) noexcept</div>
|
||
<div class="line"><a name="l14528"></a><span class="lineno">14528</span>  {</div>
|
||
<div class="line"><a name="l14529"></a><span class="lineno">14529</span>  <span class="keyword">static</span> <span class="keyword">const</span> std::array<std::uint8_t, 400> utf8d =</div>
|
||
<div class="line"><a name="l14530"></a><span class="lineno">14530</span>  {</div>
|
||
<div class="line"><a name="l14531"></a><span class="lineno">14531</span>  {</div>
|
||
<div class="line"><a name="l14532"></a><span class="lineno">14532</span>  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, <span class="comment">// 00..1F</span></div>
|
||
<div class="line"><a name="l14533"></a><span class="lineno">14533</span>  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, <span class="comment">// 20..3F</span></div>
|
||
<div class="line"><a name="l14534"></a><span class="lineno">14534</span>  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, <span class="comment">// 40..5F</span></div>
|
||
<div class="line"><a name="l14535"></a><span class="lineno">14535</span>  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, <span class="comment">// 60..7F</span></div>
|
||
<div class="line"><a name="l14536"></a><span class="lineno">14536</span>  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, <span class="comment">// 80..9F</span></div>
|
||
<div class="line"><a name="l14537"></a><span class="lineno">14537</span>  7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, <span class="comment">// A0..BF</span></div>
|
||
<div class="line"><a name="l14538"></a><span class="lineno">14538</span>  8, 8, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, <span class="comment">// C0..DF</span></div>
|
||
<div class="line"><a name="l14539"></a><span class="lineno">14539</span>  0xA, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, <span class="comment">// E0..EF</span></div>
|
||
<div class="line"><a name="l14540"></a><span class="lineno">14540</span>  0xB, 0x6, 0x6, 0x6, 0x5, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, <span class="comment">// F0..FF</span></div>
|
||
<div class="line"><a name="l14541"></a><span class="lineno">14541</span>  0x0, 0x1, 0x2, 0x3, 0x5, 0x8, 0x7, 0x1, 0x1, 0x1, 0x4, 0x6, 0x1, 0x1, 0x1, 0x1, <span class="comment">// s0..s0</span></div>
|
||
<div class="line"><a name="l14542"></a><span class="lineno">14542</span>  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, <span class="comment">// s1..s2</span></div>
|
||
<div class="line"><a name="l14543"></a><span class="lineno">14543</span>  1, 2, 1, 1, 1, 1, 1, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, <span class="comment">// s3..s4</span></div>
|
||
<div class="line"><a name="l14544"></a><span class="lineno">14544</span>  1, 2, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 3, 1, 1, 1, 1, 1, 1, <span class="comment">// s5..s6</span></div>
|
||
<div class="line"><a name="l14545"></a><span class="lineno">14545</span>  1, 3, 1, 1, 1, 1, 1, 3, 1, 3, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 <span class="comment">// s7..s8</span></div>
|
||
<div class="line"><a name="l14546"></a><span class="lineno">14546</span>  }</div>
|
||
<div class="line"><a name="l14547"></a><span class="lineno">14547</span>  };</div>
|
||
<div class="line"><a name="l14548"></a><span class="lineno">14548</span>  </div>
|
||
<div class="line"><a name="l14549"></a><span class="lineno">14549</span>  <span class="keyword">const</span> std::uint8_t type = utf8d[byte];</div>
|
||
<div class="line"><a name="l14550"></a><span class="lineno">14550</span>  </div>
|
||
<div class="line"><a name="l14551"></a><span class="lineno">14551</span>  codep = (state != UTF8_ACCEPT)</div>
|
||
<div class="line"><a name="l14552"></a><span class="lineno">14552</span>  ? (<span class="keywordtype">byte</span> & 0x3fu) | (codep << 6u)</div>
|
||
<div class="line"><a name="l14553"></a><span class="lineno">14553</span>  : (0xFFu >> type) & (byte);</div>
|
||
<div class="line"><a name="l14554"></a><span class="lineno">14554</span>  </div>
|
||
<div class="line"><a name="l14555"></a><span class="lineno">14555</span>  state = utf8d[256u + state * 16u + type];</div>
|
||
<div class="line"><a name="l14556"></a><span class="lineno">14556</span>  <span class="keywordflow">return</span> state;</div>
|
||
<div class="line"><a name="l14557"></a><span class="lineno">14557</span>  }</div>
|
||
<div class="line"><a name="l14558"></a><span class="lineno">14558</span>  </div>
|
||
<div class="line"><a name="l14559"></a><span class="lineno">14559</span>  <span class="comment">/*</span></div>
|
||
<div class="line"><a name="l14560"></a><span class="lineno">14560</span> <span class="comment"> * Overload to make the compiler happy while it is instantiating</span></div>
|
||
<div class="line"><a name="l14561"></a><span class="lineno">14561</span> <span class="comment"> * dump_integer for number_unsigned_t.</span></div>
|
||
<div class="line"><a name="l14562"></a><span class="lineno">14562</span> <span class="comment"> * Must never be called.</span></div>
|
||
<div class="line"><a name="l14563"></a><span class="lineno">14563</span> <span class="comment"> */</span></div>
|
||
<div class="line"><a name="l14564"></a><span class="lineno">14564</span>  number_unsigned_t remove_sign(number_unsigned_t x)</div>
|
||
<div class="line"><a name="l14565"></a><span class="lineno">14565</span>  {</div>
|
||
<div class="line"><a name="l14566"></a><span class="lineno">14566</span>  assert(<span class="keyword">false</span>); <span class="comment">// LCOV_EXCL_LINE</span></div>
|
||
<div class="line"><a name="l14567"></a><span class="lineno">14567</span>  <span class="keywordflow">return</span> x; <span class="comment">// LCOV_EXCL_LINE</span></div>
|
||
<div class="line"><a name="l14568"></a><span class="lineno">14568</span>  }</div>
|
||
<div class="line"><a name="l14569"></a><span class="lineno">14569</span>  </div>
|
||
<div class="line"><a name="l14570"></a><span class="lineno">14570</span>  <span class="comment">/*</span></div>
|
||
<div class="line"><a name="l14571"></a><span class="lineno">14571</span> <span class="comment"> * Helper function for dump_integer</span></div>
|
||
<div class="line"><a name="l14572"></a><span class="lineno">14572</span> <span class="comment"> *</span></div>
|
||
<div class="line"><a name="l14573"></a><span class="lineno">14573</span> <span class="comment"> * This function takes a negative signed integer and returns its absolute</span></div>
|
||
<div class="line"><a name="l14574"></a><span class="lineno">14574</span> <span class="comment"> * value as unsigned integer. The plus/minus shuffling is necessary as we can</span></div>
|
||
<div class="line"><a name="l14575"></a><span class="lineno">14575</span> <span class="comment"> * not directly remove the sign of an arbitrary signed integer as the</span></div>
|
||
<div class="line"><a name="l14576"></a><span class="lineno">14576</span> <span class="comment"> * absolute values of INT_MIN and INT_MAX are usually not the same. See</span></div>
|
||
<div class="line"><a name="l14577"></a><span class="lineno">14577</span> <span class="comment"> * #1708 for details.</span></div>
|
||
<div class="line"><a name="l14578"></a><span class="lineno">14578</span> <span class="comment"> */</span></div>
|
||
<div class="line"><a name="l14579"></a><span class="lineno">14579</span>  <span class="keyword">inline</span> number_unsigned_t remove_sign(number_integer_t x) noexcept</div>
|
||
<div class="line"><a name="l14580"></a><span class="lineno">14580</span>  {</div>
|
||
<div class="line"><a name="l14581"></a><span class="lineno">14581</span>  assert(x < 0 and x < (std::numeric_limits<number_integer_t>::max)());</div>
|
||
<div class="line"><a name="l14582"></a><span class="lineno">14582</span>  <span class="keywordflow">return</span> <span class="keyword">static_cast<</span>number_unsigned_t<span class="keyword">></span>(-(x + 1)) + 1;</div>
|
||
<div class="line"><a name="l14583"></a><span class="lineno">14583</span>  }</div>
|
||
<div class="line"><a name="l14584"></a><span class="lineno">14584</span>  </div>
|
||
<div class="line"><a name="l14585"></a><span class="lineno">14585</span>  <span class="keyword">private</span>:</div>
|
||
<div class="line"><a name="l14587"></a><span class="lineno">14587</span>  output_adapter_t<char> o = <span class="keyword">nullptr</span>;</div>
|
||
<div class="line"><a name="l14588"></a><span class="lineno">14588</span>  </div>
|
||
<div class="line"><a name="l14590"></a><span class="lineno">14590</span>  std::array<char, 64> number_buffer{{}};</div>
|
||
<div class="line"><a name="l14591"></a><span class="lineno">14591</span>  </div>
|
||
<div class="line"><a name="l14593"></a><span class="lineno">14593</span>  <span class="keyword">const</span> std::lconv* loc = <span class="keyword">nullptr</span>;</div>
|
||
<div class="line"><a name="l14595"></a><span class="lineno">14595</span>  <span class="keyword">const</span> <span class="keywordtype">char</span> thousands_sep = <span class="charliteral">'\0'</span>;</div>
|
||
<div class="line"><a name="l14597"></a><span class="lineno">14597</span>  <span class="keyword">const</span> <span class="keywordtype">char</span> decimal_point = <span class="charliteral">'\0'</span>;</div>
|
||
<div class="line"><a name="l14598"></a><span class="lineno">14598</span>  </div>
|
||
<div class="line"><a name="l14600"></a><span class="lineno">14600</span>  std::array<char, 512> string_buffer{{}};</div>
|
||
<div class="line"><a name="l14601"></a><span class="lineno">14601</span>  </div>
|
||
<div class="line"><a name="l14603"></a><span class="lineno">14603</span>  <span class="keyword">const</span> <span class="keywordtype">char</span> indent_char;</div>
|
||
<div class="line"><a name="l14605"></a><span class="lineno">14605</span>  string_t indent_string;</div>
|
||
<div class="line"><a name="l14606"></a><span class="lineno">14606</span>  </div>
|
||
<div class="line"><a name="l14608"></a><span class="lineno">14608</span>  <span class="keyword">const</span> <a class="code" href="namespacenlohmann_1_1detail.html#a5a76b60b26dc8c47256a996d18d967df">error_handler_t</a> error_handler;</div>
|
||
<div class="line"><a name="l14609"></a><span class="lineno">14609</span> };</div>
|
||
<div class="line"><a name="l14610"></a><span class="lineno">14610</span> } <span class="comment">// namespace detail</span></div>
|
||
<div class="line"><a name="l14611"></a><span class="lineno">14611</span> } <span class="comment">// namespace nlohmann</span></div>
|
||
<div class="line"><a name="l14612"></a><span class="lineno">14612</span>  </div>
|
||
<div class="line"><a name="l14613"></a><span class="lineno">14613</span> <span class="comment">// #include <nlohmann/detail/value_t.hpp></span></div>
|
||
<div class="line"><a name="l14614"></a><span class="lineno">14614</span>  </div>
|
||
<div class="line"><a name="l14615"></a><span class="lineno">14615</span> <span class="comment">// #include <nlohmann/json_fwd.hpp></span></div>
|
||
<div class="line"><a name="l14616"></a><span class="lineno">14616</span>  </div>
|
||
<div class="line"><a name="l14617"></a><span class="lineno">14617</span>  </div>
|
||
<div class="line"><a name="l14623"></a><span class="lineno">14623</span> <span class="keyword">namespace </span><a class="code" href="namespacenlohmann.html">nlohmann</a></div>
|
||
<div class="line"><a name="l14624"></a><span class="lineno">14624</span> {</div>
|
||
<div class="line"><a name="l14625"></a><span class="lineno">14625</span>  </div>
|
||
<div class="line"><a name="l14707"></a><span class="lineno">14707</span> <a class="code" href="json_8hpp.html#a0643bd74c2dc6f0e4e420b8190ea8f0f">NLOHMANN_BASIC_JSON_TPL_DECLARATION</a></div>
|
||
<div class="line"><a name="l14708"></a><span class="lineno">14708</span> <span class="keyword">class </span>basic_json</div>
|
||
<div class="line"><a name="l14709"></a><span class="lineno">14709</span> {</div>
|
||
<div class="line"><a name="l14710"></a><span class="lineno">14710</span>  <span class="keyword">private</span>:</div>
|
||
<div class="line"><a name="l14711"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a6275ed57bae6866cdf5db5370a7ad47c">14711</a></span>  <span class="keyword">template</span><detail::value_t> <span class="keyword">friend</span> <span class="keyword">struct </span><a class="code" href="structnlohmann_1_1detail_1_1external__constructor.html">detail::external_constructor</a>;</div>
|
||
<div class="line"><a name="l14712"></a><span class="lineno">14712</span>  friend ::nlohmann::json_pointer<basic_json>;</div>
|
||
<div class="line"><a name="l14713"></a><span class="lineno">14713</span>  friend ::nlohmann::detail::parser<basic_json>;</div>
|
||
<div class="line"><a name="l14714"></a><span class="lineno">14714</span>  friend ::nlohmann::detail::serializer<basic_json>;</div>
|
||
<div class="line"><a name="l14715"></a><span class="lineno">14715</span>  <span class="keyword">template</span><<span class="keyword">typename</span> BasicJsonType></div>
|
||
<div class="line"><a name="l14716"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a842e5c7ca096025c18b11e715d3401f4">14716</a></span>  <span class="keyword">friend</span> class ::nlohmann::detail::iter_impl;</div>
|
||
<div class="line"><a name="l14717"></a><span class="lineno">14717</span>  <span class="keyword">template</span><<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> CharType></div>
|
||
<div class="line"><a name="l14718"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a69d491bbda88ade6d3c7a2b11309e8bf">14718</a></span>  <span class="keyword">friend</span> class ::nlohmann::detail::binary_writer;</div>
|
||
<div class="line"><a name="l14719"></a><span class="lineno">14719</span>  <span class="keyword">template</span><<span class="keyword">typename</span> BasicJsonType, <span class="keyword">typename</span> SAX></div>
|
||
<div class="line"><a name="l14720"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a3226693341c251507fec5d6f4fa5ce79">14720</a></span>  <span class="keyword">friend</span> class ::nlohmann::detail::binary_reader;</div>
|
||
<div class="line"><a name="l14721"></a><span class="lineno">14721</span>  <span class="keyword">template</span><<span class="keyword">typename</span> BasicJsonType></div>
|
||
<div class="line"><a name="l14722"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a47aabb1eceae32e8a6e8e7f0ff34be60">14722</a></span>  <span class="keyword">friend</span> class ::nlohmann::detail::json_sax_dom_parser;</div>
|
||
<div class="line"><a name="l14723"></a><span class="lineno">14723</span>  <span class="keyword">template</span><<span class="keyword">typename</span> BasicJsonType></div>
|
||
<div class="line"><a name="l14724"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a95574da8d12905ea99dc348934c837da">14724</a></span>  <span class="keyword">friend</span> class ::nlohmann::detail::json_sax_dom_callback_parser;</div>
|
||
<div class="line"><a name="l14725"></a><span class="lineno">14725</span>  </div>
|
||
<div class="line"><a name="l14727"></a><span class="lineno">14727</span>  <span class="keyword">using</span> basic_json_t = <a class="code" href="json_8hpp.html#a80b7254e63f199a1f656f07ae551f632">NLOHMANN_BASIC_JSON_TPL</a>;</div>
|
||
<div class="line"><a name="l14728"></a><span class="lineno">14728</span>  </div>
|
||
<div class="line"><a name="l14729"></a><span class="lineno">14729</span>  <span class="comment">// convenience aliases for types residing in namespace detail;</span></div>
|
||
<div class="line"><a name="l14730"></a><span class="lineno">14730</span>  <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1detail_1_1lexer.html">lexer</a> = <a class="code" href="classnlohmann_1_1detail_1_1lexer.html">::nlohmann::detail::lexer<basic_json></a>;</div>
|
||
<div class="line"><a name="l14731"></a><span class="lineno">14731</span>  <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1detail_1_1parser.html">parser</a> = <a class="code" href="classnlohmann_1_1detail_1_1parser.html">::nlohmann::detail::parser<basic_json></a>;</div>
|
||
<div class="line"><a name="l14732"></a><span class="lineno">14732</span>  </div>
|
||
<div class="line"><a name="l14733"></a><span class="lineno">14733</span>  <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html">primitive_iterator_t</a> = <a class="code" href="classnlohmann_1_1detail_1_1primitive__iterator__t.html">::nlohmann::detail::primitive_iterator_t</a>;</div>
|
||
<div class="line"><a name="l14734"></a><span class="lineno">14734</span>  <span class="keyword">template</span><<span class="keyword">typename</span> BasicJsonType></div>
|
||
<div class="line"><a name="l14735"></a><span class="lineno">14735</span>  <span class="keyword">using</span> <a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html">internal_iterator</a> = <a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html">::nlohmann::detail::internal_iterator<BasicJsonType></a>;</div>
|
||
<div class="line"><a name="l14736"></a><span class="lineno">14736</span>  <span class="keyword">template</span><<span class="keyword">typename</span> BasicJsonType></div>
|
||
<div class="line"><a name="l14737"></a><span class="lineno">14737</span>  <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">iter_impl</a> = <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">::nlohmann::detail::iter_impl<BasicJsonType></a>;</div>
|
||
<div class="line"><a name="l14738"></a><span class="lineno">14738</span>  <span class="keyword">template</span><<span class="keyword">typename</span> Iterator></div>
|
||
<div class="line"><a name="l14739"></a><span class="lineno">14739</span>  <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1detail_1_1iteration__proxy.html">iteration_proxy</a> = <a class="code" href="classnlohmann_1_1detail_1_1iteration__proxy.html">::nlohmann::detail::iteration_proxy<Iterator></a>;</div>
|
||
<div class="line"><a name="l14740"></a><span class="lineno">14740</span>  <span class="keyword">template</span><<span class="keyword">typename</span> Base> <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html">json_reverse_iterator</a> = <a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html">::nlohmann::detail::json_reverse_iterator<Base></a>;</div>
|
||
<div class="line"><a name="l14741"></a><span class="lineno">14741</span>  </div>
|
||
<div class="line"><a name="l14742"></a><span class="lineno">14742</span>  <span class="keyword">template</span><<span class="keyword">typename</span> CharType></div>
|
||
<div class="line"><a name="l14743"></a><span class="lineno">14743</span>  <span class="keyword">using</span> output_adapter_t = <a class="code" href="namespacenlohmann_1_1detail.html#a9b680ddfb58f27eb53a67229447fc556">::nlohmann::detail::output_adapter_t<CharType></a>;</div>
|
||
<div class="line"><a name="l14744"></a><span class="lineno">14744</span>  </div>
|
||
<div class="line"><a name="l14745"></a><span class="lineno">14745</span>  <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1detail_1_1binary__reader.html">binary_reader</a> = <a class="code" href="classnlohmann_1_1detail_1_1binary__reader.html">::nlohmann::detail::binary_reader<basic_json></a>;</div>
|
||
<div class="line"><a name="l14746"></a><span class="lineno">14746</span>  <span class="keyword">template</span><<span class="keyword">typename</span> CharType> <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html">binary_writer</a> = <a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html">::nlohmann::detail::binary_writer<basic_json, CharType></a>;</div>
|
||
<div class="line"><a name="l14747"></a><span class="lineno">14747</span>  </div>
|
||
<div class="line"><a name="l14748"></a><span class="lineno">14748</span>  <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1detail_1_1serializer.html">serializer</a> = <a class="code" href="classnlohmann_1_1detail_1_1serializer.html">::nlohmann::detail::serializer<basic_json></a>;</div>
|
||
<div class="line"><a name="l14749"></a><span class="lineno">14749</span>  </div>
|
||
<div class="line"><a name="l14750"></a><span class="lineno">14750</span>  <span class="keyword">public</span>:</div>
|
||
<div class="line"><a name="l14751"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#ae8cbef097f7da18a781fc86587de6b90">14751</a></span>  <span class="keyword">using</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985">value_t</a> = <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985">detail::value_t</a>;</div>
|
||
<div class="line"><a name="l14753"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a6886a5001f5b449ad316101a311ce536">14753</a></span>  <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1json__pointer.html">json_pointer</a> = <a class="code" href="classnlohmann_1_1json__pointer.html">::nlohmann::json_pointer<basic_json></a>;</div>
|
||
<div class="line"><a name="l14754"></a><span class="lineno">14754</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T, <span class="keyword">typename</span> SFINAE></div>
|
||
<div class="line"><a name="l14755"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a7768841baaaa7a21098a401c932efaff">14755</a></span>  <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1basic__json.html#a7768841baaaa7a21098a401c932efaff">json_serializer</a> = JSONSerializer<T, SFINAE>;</div>
|
||
<div class="line"><a name="l14757"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#ae56b6bfbb1f6d2f43611f2ada4f9e5f2">14757</a></span>  <span class="keyword">using</span> <a class="code" href="namespacenlohmann_1_1detail.html#a5a76b60b26dc8c47256a996d18d967df">error_handler_t</a> = <a class="code" href="namespacenlohmann_1_1detail.html#a5a76b60b26dc8c47256a996d18d967df">detail::error_handler_t</a>;</div>
|
||
<div class="line"><a name="l14759"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#ad70a098fbc01c53497db29d3b5b656a9">14759</a></span>  <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1basic__json.html#ad70a098fbc01c53497db29d3b5b656a9">initializer_list_t</a> = std::initializer_list<detail::json_ref<basic_json>>;</div>
|
||
<div class="line"><a name="l14760"></a><span class="lineno">14760</span>  </div>
|
||
<div class="line"><a name="l14761"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a2ddbac818a4c84a7377b1bbd25363588">14761</a></span>  <span class="keyword">using</span> <a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40">input_format_t</a> = <a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40">detail::input_format_t</a>;</div>
|
||
<div class="line"><a name="l14763"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#aa865c3eb68b6ebdd647173774d2b5cdb">14763</a></span>  <span class="keyword">using</span> <a class="code" href="structnlohmann_1_1json__sax.html">json_sax_t</a> = <a class="code" href="structnlohmann_1_1json__sax.html">json_sax<basic_json></a>;</div>
|
||
<div class="line"><a name="l14764"></a><span class="lineno">14764</span>  </div>
|
||
<div class="line"><a name="l14766"></a><span class="lineno">14766</span>  <span class="comment">// exceptions //</span></div>
|
||
<div class="line"><a name="l14768"></a><span class="lineno">14768</span> <span class="comment"></span> </div>
|
||
<div class="line"><a name="l14772"></a><span class="lineno">14772</span>  </div>
|
||
<div class="line"><a name="l14774"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a9a0aced019cb1d65bb49703406c84970">14774</a></span>  <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1detail_1_1exception.html">exception</a> = <a class="code" href="classnlohmann_1_1detail_1_1exception.html">detail::exception</a>;</div>
|
||
<div class="line"><a name="l14776"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#af1efc2468e6022be6e35fc2944cabe4d">14776</a></span>  <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1detail_1_1parse__error.html">parse_error</a> = <a class="code" href="classnlohmann_1_1detail_1_1parse__error.html">detail::parse_error</a>;</div>
|
||
<div class="line"><a name="l14778"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#ac13d32f7cbd02d616e71d8dc30dadcbf">14778</a></span>  <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1detail_1_1invalid__iterator.html">invalid_iterator</a> = <a class="code" href="classnlohmann_1_1detail_1_1invalid__iterator.html">detail::invalid_iterator</a>;</div>
|
||
<div class="line"><a name="l14780"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a4010e8e268fefd86da773c10318f2902">14780</a></span>  <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1detail_1_1type__error.html">type_error</a> = <a class="code" href="classnlohmann_1_1detail_1_1type__error.html">detail::type_error</a>;</div>
|
||
<div class="line"><a name="l14782"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a28f7c2f087274a0012eb7a2333ee1580">14782</a></span>  <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1detail_1_1out__of__range.html">out_of_range</a> = <a class="code" href="classnlohmann_1_1detail_1_1out__of__range.html">detail::out_of_range</a>;</div>
|
||
<div class="line"><a name="l14784"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a3333a5a8714912adda33a35b369f7b3d">14784</a></span>  <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1detail_1_1other__error.html">other_error</a> = <a class="code" href="classnlohmann_1_1detail_1_1other__error.html">detail::other_error</a>;</div>
|
||
<div class="line"><a name="l14785"></a><span class="lineno">14785</span>  </div>
|
||
<div class="line"><a name="l14787"></a><span class="lineno">14787</span>  </div>
|
||
<div class="line"><a name="l14788"></a><span class="lineno">14788</span>  </div>
|
||
<div class="line"><a name="l14790"></a><span class="lineno">14790</span>  <span class="comment">// container types //</span></div>
|
||
<div class="line"><a name="l14792"></a><span class="lineno">14792</span> <span class="comment"></span> </div>
|
||
<div class="line"><a name="l14797"></a><span class="lineno">14797</span>  </div>
|
||
<div class="line"><a name="l14799"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a2b3297873b70c080837e8eedc4fec32f">14799</a></span>  <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1basic__json.html">value_type</a> = <a class="code" href="classnlohmann_1_1basic__json.html#aed115142bd0c6c66c864700e0467df55">basic_json</a>;</div>
|
||
<div class="line"><a name="l14800"></a><span class="lineno">14800</span>  </div>
|
||
<div class="line"><a name="l14802"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#ac6a5eddd156c776ac75ff54cfe54a5bc">14802</a></span>  <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>&;</div>
|
||
<div class="line"><a name="l14804"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a4057c5425f4faacfe39a8046871786ca">14804</a></span>  <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>&;</div>
|
||
<div class="line"><a name="l14805"></a><span class="lineno">14805</span>  </div>
|
||
<div class="line"><a name="l14807"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#afe7c1303357e19cea9527af4e9a31d8f">14807</a></span>  <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1basic__json.html#afe7c1303357e19cea9527af4e9a31d8f">difference_type</a> = std::ptrdiff_t;</div>
|
||
<div class="line"><a name="l14809"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a39f2cd0b58106097e0e67bf185cc519b">14809</a></span>  <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1basic__json.html#a39f2cd0b58106097e0e67bf185cc519b">size_type</a> = std::size_t;</div>
|
||
<div class="line"><a name="l14810"></a><span class="lineno">14810</span>  </div>
|
||
<div class="line"><a name="l14812"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a86ce930490cf7773b26f5ef49c04a350">14812</a></span>  <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1basic__json.html#a86ce930490cf7773b26f5ef49c04a350">allocator_type</a> = AllocatorType<basic_json>;</div>
|
||
<div class="line"><a name="l14813"></a><span class="lineno">14813</span>  </div>
|
||
<div class="line"><a name="l14815"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#aefee1f777198c68724bd127e0c8abbe4">14815</a></span>  <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1basic__json.html#aefee1f777198c68724bd127e0c8abbe4">pointer</a> = <span class="keyword">typename</span> std::allocator_traits<allocator_type>::pointer;</div>
|
||
<div class="line"><a name="l14817"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#aff3d5cd2a75612364b888d8693231b58">14817</a></span>  <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1basic__json.html#aff3d5cd2a75612364b888d8693231b58">const_pointer</a> = <span class="keyword">typename</span> std::allocator_traits<allocator_type>::const_pointer;</div>
|
||
<div class="line"><a name="l14818"></a><span class="lineno">14818</span>  </div>
|
||
<div class="line"><a name="l14820"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a099316232c76c034030a38faa6e34dca">14820</a></span>  <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">iterator</a> = <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">iter_impl<basic_json></a>;</div>
|
||
<div class="line"><a name="l14822"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a41a70cf9993951836d129bb1c2b3126a">14822</a></span>  <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">const_iterator</a> = <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">iter_impl<const basic_json></a>;</div>
|
||
<div class="line"><a name="l14824"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#ac223d5560c2b05a208c88de67376c5f2">14824</a></span>  <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html">reverse_iterator</a> = <a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html">json_reverse_iterator<typename basic_json::iterator></a>;</div>
|
||
<div class="line"><a name="l14826"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a72be3c24bfa24f0993d6c11af03e7404">14826</a></span>  <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html">const_reverse_iterator</a> = <a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html">json_reverse_iterator<typename basic_json::const_iterator></a>;</div>
|
||
<div class="line"><a name="l14827"></a><span class="lineno">14827</span>  </div>
|
||
<div class="line"><a name="l14829"></a><span class="lineno">14829</span>  </div>
|
||
<div class="line"><a name="l14830"></a><span class="lineno">14830</span>  </div>
|
||
<div class="line"><a name="l14834"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#af4ac14224fbdd29d3547fcb11bb55c8f">14834</a></span>  <span class="keyword">static</span> <a class="code" href="classnlohmann_1_1basic__json.html#a86ce930490cf7773b26f5ef49c04a350">allocator_type</a> <a class="code" href="classnlohmann_1_1basic__json.html#af4ac14224fbdd29d3547fcb11bb55c8f">get_allocator</a>()</div>
|
||
<div class="line"><a name="l14835"></a><span class="lineno">14835</span>  {</div>
|
||
<div class="line"><a name="l14836"></a><span class="lineno">14836</span>  <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json.html#a86ce930490cf7773b26f5ef49c04a350">allocator_type</a>();</div>
|
||
<div class="line"><a name="l14837"></a><span class="lineno">14837</span>  }</div>
|
||
<div class="line"><a name="l14838"></a><span class="lineno">14838</span>  </div>
|
||
<div class="line"><a name="l14865"></a><span class="lineno">14865</span>  <a class="code" href="json_8hpp.html#a28d7e3b2d26bd5b8a3806da3db7dea03">JSON_HEDLEY_WARN_UNUSED_RESULT</a></div>
|
||
<div class="line"><a name="l14866"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a677318a34ade7f8177a2784c06aa3671">14866</a></span>  <span class="keyword">static</span> <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a> <a class="code" href="classnlohmann_1_1basic__json.html#a677318a34ade7f8177a2784c06aa3671">meta</a>()</div>
|
||
<div class="line"><a name="l14867"></a><span class="lineno">14867</span>  {</div>
|
||
<div class="line"><a name="l14868"></a><span class="lineno">14868</span>  <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a> result;</div>
|
||
<div class="line"><a name="l14869"></a><span class="lineno">14869</span>  </div>
|
||
<div class="line"><a name="l14870"></a><span class="lineno">14870</span>  result[<span class="stringliteral">"copyright"</span>] = <span class="stringliteral">"(C) 2013-2017 Niels Lohmann"</span>;</div>
|
||
<div class="line"><a name="l14871"></a><span class="lineno">14871</span>  result[<span class="stringliteral">"name"</span>] = <span class="stringliteral">"JSON for Modern C++"</span>;</div>
|
||
<div class="line"><a name="l14872"></a><span class="lineno">14872</span>  result[<span class="stringliteral">"url"</span>] = <span class="stringliteral">"https://github.com/nlohmann/json"</span>;</div>
|
||
<div class="line"><a name="l14873"></a><span class="lineno">14873</span>  result[<span class="stringliteral">"version"</span>][<span class="stringliteral">"string"</span>] =</div>
|
||
<div class="line"><a name="l14874"></a><span class="lineno">14874</span>  <a class="code" href="namespacenlohmann.html#a6ce645a0b8717757e096a5b5773b7a16">std::to_string</a>(<a class="code" href="json_8hpp.html#a7c94253db90041af11dd946a49f0f8a4">NLOHMANN_JSON_VERSION_MAJOR</a>) + <span class="stringliteral">"."</span> +</div>
|
||
<div class="line"><a name="l14875"></a><span class="lineno">14875</span>  <a class="code" href="namespacenlohmann.html#a6ce645a0b8717757e096a5b5773b7a16">std::to_string</a>(<a class="code" href="json_8hpp.html#ab5ca1e164894d78d3276d2e5fe58c5e3">NLOHMANN_JSON_VERSION_MINOR</a>) + <span class="stringliteral">"."</span> +</div>
|
||
<div class="line"><a name="l14876"></a><span class="lineno">14876</span>  <a class="code" href="namespacenlohmann.html#a6ce645a0b8717757e096a5b5773b7a16">std::to_string</a>(<a class="code" href="json_8hpp.html#a307e0238ebc35e99ea45c68823eb83eb">NLOHMANN_JSON_VERSION_PATCH</a>);</div>
|
||
<div class="line"><a name="l14877"></a><span class="lineno">14877</span>  result[<span class="stringliteral">"version"</span>][<span class="stringliteral">"major"</span>] = <a class="code" href="json_8hpp.html#a7c94253db90041af11dd946a49f0f8a4">NLOHMANN_JSON_VERSION_MAJOR</a>;</div>
|
||
<div class="line"><a name="l14878"></a><span class="lineno">14878</span>  result[<span class="stringliteral">"version"</span>][<span class="stringliteral">"minor"</span>] = <a class="code" href="json_8hpp.html#ab5ca1e164894d78d3276d2e5fe58c5e3">NLOHMANN_JSON_VERSION_MINOR</a>;</div>
|
||
<div class="line"><a name="l14879"></a><span class="lineno">14879</span>  result[<span class="stringliteral">"version"</span>][<span class="stringliteral">"patch"</span>] = <a class="code" href="json_8hpp.html#a307e0238ebc35e99ea45c68823eb83eb">NLOHMANN_JSON_VERSION_PATCH</a>;</div>
|
||
<div class="line"><a name="l14880"></a><span class="lineno">14880</span>  </div>
|
||
<div class="line"><a name="l14881"></a><span class="lineno">14881</span> <span class="preprocessor">#ifdef _WIN32</span></div>
|
||
<div class="line"><a name="l14882"></a><span class="lineno">14882</span>  result[<span class="stringliteral">"platform"</span>] = <span class="stringliteral">"win32"</span>;</div>
|
||
<div class="line"><a name="l14883"></a><span class="lineno">14883</span> <span class="preprocessor">#elif defined __linux__</span></div>
|
||
<div class="line"><a name="l14884"></a><span class="lineno">14884</span>  result[<span class="stringliteral">"platform"</span>] = <span class="stringliteral">"linux"</span>;</div>
|
||
<div class="line"><a name="l14885"></a><span class="lineno">14885</span> <span class="preprocessor">#elif defined __APPLE__</span></div>
|
||
<div class="line"><a name="l14886"></a><span class="lineno">14886</span>  result[<span class="stringliteral">"platform"</span>] = <span class="stringliteral">"apple"</span>;</div>
|
||
<div class="line"><a name="l14887"></a><span class="lineno">14887</span> <span class="preprocessor">#elif defined __unix__</span></div>
|
||
<div class="line"><a name="l14888"></a><span class="lineno">14888</span>  result[<span class="stringliteral">"platform"</span>] = <span class="stringliteral">"unix"</span>;</div>
|
||
<div class="line"><a name="l14889"></a><span class="lineno">14889</span> <span class="preprocessor">#else</span></div>
|
||
<div class="line"><a name="l14890"></a><span class="lineno">14890</span>  result[<span class="stringliteral">"platform"</span>] = <span class="stringliteral">"unknown"</span>;</div>
|
||
<div class="line"><a name="l14891"></a><span class="lineno">14891</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l14892"></a><span class="lineno">14892</span>  </div>
|
||
<div class="line"><a name="l14893"></a><span class="lineno">14893</span> <span class="preprocessor">#if defined(__ICC) || defined(__INTEL_COMPILER)</span></div>
|
||
<div class="line"><a name="l14894"></a><span class="lineno">14894</span>  result[<span class="stringliteral">"compiler"</span>] = {{<span class="stringliteral">"family"</span>, <span class="stringliteral">"icc"</span>}, {<span class="stringliteral">"version"</span>, __INTEL_COMPILER}};</div>
|
||
<div class="line"><a name="l14895"></a><span class="lineno">14895</span> <span class="preprocessor">#elif defined(__clang__)</span></div>
|
||
<div class="line"><a name="l14896"></a><span class="lineno">14896</span>  result[<span class="stringliteral">"compiler"</span>] = {{<span class="stringliteral">"family"</span>, <span class="stringliteral">"clang"</span>}, {<span class="stringliteral">"version"</span>, __clang_version__}};</div>
|
||
<div class="line"><a name="l14897"></a><span class="lineno">14897</span> <span class="preprocessor">#elif defined(__GNUC__) || defined(__GNUG__)</span></div>
|
||
<div class="line"><a name="l14898"></a><span class="lineno">14898</span>  result[<span class="stringliteral">"compiler"</span>] = {{<span class="stringliteral">"family"</span>, <span class="stringliteral">"gcc"</span>}, {<span class="stringliteral">"version"</span>, <a class="code" href="namespacenlohmann.html#a6ce645a0b8717757e096a5b5773b7a16">std::to_string</a>(__GNUC__) + <span class="stringliteral">"."</span> + <a class="code" href="namespacenlohmann.html#a6ce645a0b8717757e096a5b5773b7a16">std::to_string</a>(__GNUC_MINOR__) + <span class="stringliteral">"."</span> + <a class="code" href="namespacenlohmann.html#a6ce645a0b8717757e096a5b5773b7a16">std::to_string</a>(__GNUC_PATCHLEVEL__)}};</div>
|
||
<div class="line"><a name="l14899"></a><span class="lineno">14899</span> <span class="preprocessor">#elif defined(__HP_cc) || defined(__HP_aCC)</span></div>
|
||
<div class="line"><a name="l14900"></a><span class="lineno">14900</span>  result[<span class="stringliteral">"compiler"</span>] = <span class="stringliteral">"hp"</span></div>
|
||
<div class="line"><a name="l14901"></a><span class="lineno">14901</span> <span class="preprocessor">#elif defined(__IBMCPP__)</span></div>
|
||
<div class="line"><a name="l14902"></a><span class="lineno">14902</span>  result[<span class="stringliteral">"compiler"</span>] = {{<span class="stringliteral">"family"</span>, <span class="stringliteral">"ilecpp"</span>}, {<span class="stringliteral">"version"</span>, __IBMCPP__}};</div>
|
||
<div class="line"><a name="l14903"></a><span class="lineno">14903</span> <span class="preprocessor">#elif defined(_MSC_VER)</span></div>
|
||
<div class="line"><a name="l14904"></a><span class="lineno">14904</span>  result[<span class="stringliteral">"compiler"</span>] = {{<span class="stringliteral">"family"</span>, <span class="stringliteral">"msvc"</span>}, {<span class="stringliteral">"version"</span>, _MSC_VER}};</div>
|
||
<div class="line"><a name="l14905"></a><span class="lineno">14905</span> <span class="preprocessor">#elif defined(__PGI)</span></div>
|
||
<div class="line"><a name="l14906"></a><span class="lineno">14906</span>  result[<span class="stringliteral">"compiler"</span>] = {{<span class="stringliteral">"family"</span>, <span class="stringliteral">"pgcpp"</span>}, {<span class="stringliteral">"version"</span>, __PGI}};</div>
|
||
<div class="line"><a name="l14907"></a><span class="lineno">14907</span> <span class="preprocessor">#elif defined(__SUNPRO_CC)</span></div>
|
||
<div class="line"><a name="l14908"></a><span class="lineno">14908</span>  result[<span class="stringliteral">"compiler"</span>] = {{<span class="stringliteral">"family"</span>, <span class="stringliteral">"sunpro"</span>}, {<span class="stringliteral">"version"</span>, __SUNPRO_CC}};</div>
|
||
<div class="line"><a name="l14909"></a><span class="lineno">14909</span> <span class="preprocessor">#else</span></div>
|
||
<div class="line"><a name="l14910"></a><span class="lineno">14910</span>  result[<span class="stringliteral">"compiler"</span>] = {{<span class="stringliteral">"family"</span>, <span class="stringliteral">"unknown"</span>}, {<span class="stringliteral">"version"</span>, <span class="stringliteral">"unknown"</span>}};</div>
|
||
<div class="line"><a name="l14911"></a><span class="lineno">14911</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l14912"></a><span class="lineno">14912</span>  </div>
|
||
<div class="line"><a name="l14913"></a><span class="lineno">14913</span> <span class="preprocessor">#ifdef __cplusplus</span></div>
|
||
<div class="line"><a name="l14914"></a><span class="lineno">14914</span>  result[<span class="stringliteral">"compiler"</span>][<span class="stringliteral">"c++"</span>] = <a class="code" href="namespacenlohmann.html#a6ce645a0b8717757e096a5b5773b7a16">std::to_string</a>(__cplusplus);</div>
|
||
<div class="line"><a name="l14915"></a><span class="lineno">14915</span> <span class="preprocessor">#else</span></div>
|
||
<div class="line"><a name="l14916"></a><span class="lineno">14916</span>  result[<span class="stringliteral">"compiler"</span>][<span class="stringliteral">"c++"</span>] = <span class="stringliteral">"unknown"</span>;</div>
|
||
<div class="line"><a name="l14917"></a><span class="lineno">14917</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l14918"></a><span class="lineno">14918</span>  <span class="keywordflow">return</span> result;</div>
|
||
<div class="line"><a name="l14919"></a><span class="lineno">14919</span>  }</div>
|
||
<div class="line"><a name="l14920"></a><span class="lineno">14920</span>  </div>
|
||
<div class="line"><a name="l14921"></a><span class="lineno">14921</span>  </div>
|
||
<div class="line"><a name="l14923"></a><span class="lineno">14923</span>  <span class="comment">// JSON value data types //</span></div>
|
||
<div class="line"><a name="l14925"></a><span class="lineno">14925</span> <span class="comment"></span> </div>
|
||
<div class="line"><a name="l14930"></a><span class="lineno">14930</span>  </div>
|
||
<div class="line"><a name="l14931"></a><span class="lineno">14931</span> <span class="preprocessor">#if defined(JSON_HAS_CPP_14)</span></div>
|
||
<div class="line"><a name="l14932"></a><span class="lineno">14932</span>  <span class="comment">// Use transparent comparator if possible, combined with perfect forwarding</span></div>
|
||
<div class="line"><a name="l14933"></a><span class="lineno">14933</span>  <span class="comment">// on find() and count() calls prevents unnecessary string construction.</span></div>
|
||
<div class="line"><a name="l14934"></a><span class="lineno">14934</span>  <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1basic__json.html#abed9e77c5fcfc925fcdd489911069c3b">object_comparator_t</a> = std::less<>;</div>
|
||
<div class="line"><a name="l14935"></a><span class="lineno">14935</span> <span class="preprocessor">#else</span></div>
|
||
<div class="line"><a name="l14936"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#abed9e77c5fcfc925fcdd489911069c3b">14936</a></span>  <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1basic__json.html#abed9e77c5fcfc925fcdd489911069c3b">object_comparator_t</a> = std::less<StringType>;</div>
|
||
<div class="line"><a name="l14937"></a><span class="lineno">14937</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l14938"></a><span class="lineno">14938</span>  </div>
|
||
<div class="line"><a name="l15022"></a><span class="lineno">15022</span>  <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1basic__json.html#a5e48a7893520e1314bf0c9723e26ea2a">object_t</a> = ObjectType<StringType,</div>
|
||
<div class="line"><a name="l15023"></a><span class="lineno">15023</span>  <a class="code" href="classnlohmann_1_1basic__json.html#aed115142bd0c6c66c864700e0467df55">basic_json</a>,</div>
|
||
<div class="line"><a name="l15024"></a><span class="lineno">15024</span>  <a class="code" href="classnlohmann_1_1basic__json.html#abed9e77c5fcfc925fcdd489911069c3b">object_comparator_t</a>,</div>
|
||
<div class="line"><a name="l15025"></a><span class="lineno">15025</span>  AllocatorType<std::pair<<span class="keyword">const</span> StringType,</div>
|
||
<div class="line"><a name="l15026"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a5e48a7893520e1314bf0c9723e26ea2a">15026</a></span>  <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a>>>>;</div>
|
||
<div class="line"><a name="l15027"></a><span class="lineno">15027</span>  </div>
|
||
<div class="line"><a name="l15072"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#ae095578e03df97c5b3991787f1056374">15072</a></span>  <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1basic__json.html#ae095578e03df97c5b3991787f1056374">array_t</a> = ArrayType<basic_json, AllocatorType<basic_json>>;</div>
|
||
<div class="line"><a name="l15073"></a><span class="lineno">15073</span>  </div>
|
||
<div class="line"><a name="l15125"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a61f8566a1a85a424c7266fb531dca005">15125</a></span>  <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1basic__json.html#a61f8566a1a85a424c7266fb531dca005">string_t</a> = StringType;</div>
|
||
<div class="line"><a name="l15126"></a><span class="lineno">15126</span>  </div>
|
||
<div class="line"><a name="l15151"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a4c919102a9b4fe0d588af64801436082">15151</a></span>  <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1basic__json.html#a4c919102a9b4fe0d588af64801436082">boolean_t</a> = BooleanType;</div>
|
||
<div class="line"><a name="l15152"></a><span class="lineno">15152</span>  </div>
|
||
<div class="line"><a name="l15223"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a98e611d67b7bd75307de99c9358ab2dc">15223</a></span>  <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1basic__json.html#a98e611d67b7bd75307de99c9358ab2dc">number_integer_t</a> = NumberIntegerType;</div>
|
||
<div class="line"><a name="l15224"></a><span class="lineno">15224</span>  </div>
|
||
<div class="line"><a name="l15294"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#ab906e29b5d83ac162e823ada2156b989">15294</a></span>  <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1basic__json.html#ab906e29b5d83ac162e823ada2156b989">number_unsigned_t</a> = NumberUnsignedType;</div>
|
||
<div class="line"><a name="l15295"></a><span class="lineno">15295</span>  </div>
|
||
<div class="line"><a name="l15362"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a88d6103cb3620410b35200ee8e313d97">15362</a></span>  <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1basic__json.html#a88d6103cb3620410b35200ee8e313d97">number_float_t</a> = NumberFloatType;</div>
|
||
<div class="line"><a name="l15363"></a><span class="lineno">15363</span>  </div>
|
||
<div class="line"><a name="l15365"></a><span class="lineno">15365</span>  </div>
|
||
<div class="line"><a name="l15366"></a><span class="lineno">15366</span>  <span class="keyword">private</span>:</div>
|
||
<div class="line"><a name="l15367"></a><span class="lineno">15367</span>  </div>
|
||
<div class="line"><a name="l15369"></a><span class="lineno">15369</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T, <span class="keyword">typename</span>... Args></div>
|
||
<div class="line"><a name="l15370"></a><span class="lineno">15370</span>  <a class="code" href="json_8hpp.html#a5f2aaec3b681d0a72f7d6e90b70cdcd1">JSON_HEDLEY_RETURNS_NON_NULL</a></div>
|
||
<div class="line"><a name="l15371"></a><span class="lineno">15371</span>  <span class="keyword">static</span> T* create(Args&& ... args)</div>
|
||
<div class="line"><a name="l15372"></a><span class="lineno">15372</span>  {</div>
|
||
<div class="line"><a name="l15373"></a><span class="lineno">15373</span>  AllocatorType<T> alloc;</div>
|
||
<div class="line"><a name="l15374"></a><span class="lineno">15374</span>  <span class="keyword">using</span> AllocatorTraits = std::allocator_traits<AllocatorType<T>>;</div>
|
||
<div class="line"><a name="l15375"></a><span class="lineno">15375</span>  </div>
|
||
<div class="line"><a name="l15376"></a><span class="lineno">15376</span>  <span class="keyword">auto</span> deleter = [&](T * <a class="code" href="classnlohmann_1_1basic__json.html#a31f84ee15c4690ff705bed74736d04c6">object</a>)</div>
|
||
<div class="line"><a name="l15377"></a><span class="lineno">15377</span>  {</div>
|
||
<div class="line"><a name="l15378"></a><span class="lineno">15378</span>  AllocatorTraits::deallocate(alloc, <span class="keywordtype">object</span>, 1);</div>
|
||
<div class="line"><a name="l15379"></a><span class="lineno">15379</span>  };</div>
|
||
<div class="line"><a name="l15380"></a><span class="lineno">15380</span>  std::unique_ptr<T, decltype(deleter)> <a class="code" href="classnlohmann_1_1basic__json.html#a31f84ee15c4690ff705bed74736d04c6">object</a>(AllocatorTraits::allocate(alloc, 1), deleter);</div>
|
||
<div class="line"><a name="l15381"></a><span class="lineno">15381</span>  AllocatorTraits::construct(alloc, <span class="keywordtype">object</span>.<a class="code" href="classnlohmann_1_1basic__json.html#a6b187a22994c12c8cae0dd5ee99dc85e">get</a>(), std::forward<Args>(args)...);</div>
|
||
<div class="line"><a name="l15382"></a><span class="lineno">15382</span>  assert(<span class="keywordtype">object</span> != <span class="keyword">nullptr</span>);</div>
|
||
<div class="line"><a name="l15383"></a><span class="lineno">15383</span>  <span class="keywordflow">return</span> <span class="keywordtype">object</span>.release();</div>
|
||
<div class="line"><a name="l15384"></a><span class="lineno">15384</span>  }</div>
|
||
<div class="line"><a name="l15385"></a><span class="lineno">15385</span>  </div>
|
||
<div class="line"><a name="l15387"></a><span class="lineno">15387</span>  <span class="comment">// JSON value storage //</span></div>
|
||
<div class="line"><a name="l15389"></a><span class="lineno">15389</span> <span class="comment"></span> </div>
|
||
<div class="line"><a name="l15414"></a><span class="lineno">15414</span>  <span class="keyword">union </span>json_value</div>
|
||
<div class="line"><a name="l15415"></a><span class="lineno">15415</span>  {</div>
|
||
<div class="line"><a name="l15417"></a><span class="lineno">15417</span>  <a class="code" href="classnlohmann_1_1basic__json.html#a5e48a7893520e1314bf0c9723e26ea2a">object_t</a>* <a class="code" href="classnlohmann_1_1basic__json.html#a31f84ee15c4690ff705bed74736d04c6">object</a>;</div>
|
||
<div class="line"><a name="l15419"></a><span class="lineno">15419</span>  <a class="code" href="classnlohmann_1_1basic__json.html#ae095578e03df97c5b3991787f1056374">array_t</a>* <a class="code" href="classnlohmann_1_1basic__json.html#a8a7d537fc297bbc5b845f92fe0445e3b">array</a>;</div>
|
||
<div class="line"><a name="l15421"></a><span class="lineno">15421</span>  <a class="code" href="classnlohmann_1_1basic__json.html#a61f8566a1a85a424c7266fb531dca005">string_t</a>* string;</div>
|
||
<div class="line"><a name="l15423"></a><span class="lineno">15423</span>  <a class="code" href="classnlohmann_1_1basic__json.html#a4c919102a9b4fe0d588af64801436082">boolean_t</a> boolean;</div>
|
||
<div class="line"><a name="l15425"></a><span class="lineno">15425</span>  <a class="code" href="classnlohmann_1_1basic__json.html#a98e611d67b7bd75307de99c9358ab2dc">number_integer_t</a> number_integer;</div>
|
||
<div class="line"><a name="l15427"></a><span class="lineno">15427</span>  <a class="code" href="classnlohmann_1_1basic__json.html#ab906e29b5d83ac162e823ada2156b989">number_unsigned_t</a> number_unsigned;</div>
|
||
<div class="line"><a name="l15429"></a><span class="lineno">15429</span>  <a class="code" href="classnlohmann_1_1basic__json.html#a88d6103cb3620410b35200ee8e313d97">number_float_t</a> number_float;</div>
|
||
<div class="line"><a name="l15430"></a><span class="lineno">15430</span>  </div>
|
||
<div class="line"><a name="l15432"></a><span class="lineno">15432</span>  json_value() = <span class="keywordflow">default</span>;</div>
|
||
<div class="line"><a name="l15434"></a><span class="lineno">15434</span>  json_value(<a class="code" href="classnlohmann_1_1basic__json.html#a4c919102a9b4fe0d588af64801436082">boolean_t</a> v) noexcept : boolean(v) {}</div>
|
||
<div class="line"><a name="l15436"></a><span class="lineno">15436</span>  json_value(<a class="code" href="classnlohmann_1_1basic__json.html#a98e611d67b7bd75307de99c9358ab2dc">number_integer_t</a> v) noexcept : number_integer(v) {}</div>
|
||
<div class="line"><a name="l15438"></a><span class="lineno">15438</span>  json_value(<a class="code" href="classnlohmann_1_1basic__json.html#ab906e29b5d83ac162e823ada2156b989">number_unsigned_t</a> v) noexcept : <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985adce7cc8ec29055c4158828921f2f265e">number_unsigned</a>(v) {}</div>
|
||
<div class="line"><a name="l15440"></a><span class="lineno">15440</span>  json_value(<a class="code" href="classnlohmann_1_1basic__json.html#a88d6103cb3620410b35200ee8e313d97">number_float_t</a> v) noexcept : <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ad9966ecb59667235a57b4b999a649eef">number_float</a>(v) {}</div>
|
||
<div class="line"><a name="l15442"></a><span class="lineno">15442</span>  json_value(<a class="code" href="classnlohmann_1_1basic__json.html#ae8cbef097f7da18a781fc86587de6b90">value_t</a> t)</div>
|
||
<div class="line"><a name="l15443"></a><span class="lineno">15443</span>  {</div>
|
||
<div class="line"><a name="l15444"></a><span class="lineno">15444</span>  <span class="keywordflow">switch</span> (t)</div>
|
||
<div class="line"><a name="l15445"></a><span class="lineno">15445</span>  {</div>
|
||
<div class="line"><a name="l15446"></a><span class="lineno">15446</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>:</div>
|
||
<div class="line"><a name="l15447"></a><span class="lineno">15447</span>  {</div>
|
||
<div class="line"><a name="l15448"></a><span class="lineno">15448</span>  <span class="keywordtype">object</span> = create<object_t>();</div>
|
||
<div class="line"><a name="l15449"></a><span class="lineno">15449</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l15450"></a><span class="lineno">15450</span>  }</div>
|
||
<div class="line"><a name="l15451"></a><span class="lineno">15451</span>  </div>
|
||
<div class="line"><a name="l15452"></a><span class="lineno">15452</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>:</div>
|
||
<div class="line"><a name="l15453"></a><span class="lineno">15453</span>  {</div>
|
||
<div class="line"><a name="l15454"></a><span class="lineno">15454</span>  <a class="code" href="classnlohmann_1_1basic__json.html#a8a7d537fc297bbc5b845f92fe0445e3b">array</a> = create<array_t>();</div>
|
||
<div class="line"><a name="l15455"></a><span class="lineno">15455</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l15456"></a><span class="lineno">15456</span>  }</div>
|
||
<div class="line"><a name="l15457"></a><span class="lineno">15457</span>  </div>
|
||
<div class="line"><a name="l15458"></a><span class="lineno">15458</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ab45cffe084dd3d20d928bee85e7b0f21">value_t::string</a>:</div>
|
||
<div class="line"><a name="l15459"></a><span class="lineno">15459</span>  {</div>
|
||
<div class="line"><a name="l15460"></a><span class="lineno">15460</span>  <span class="keywordtype">string</span> = create<string_t>(<span class="stringliteral">""</span>);</div>
|
||
<div class="line"><a name="l15461"></a><span class="lineno">15461</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l15462"></a><span class="lineno">15462</span>  }</div>
|
||
<div class="line"><a name="l15463"></a><span class="lineno">15463</span>  </div>
|
||
<div class="line"><a name="l15464"></a><span class="lineno">15464</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a84e2c64f38f78ba3ea5c905ab5a2da27">value_t::boolean</a>:</div>
|
||
<div class="line"><a name="l15465"></a><span class="lineno">15465</span>  {</div>
|
||
<div class="line"><a name="l15466"></a><span class="lineno">15466</span>  <span class="keywordtype">boolean</span> = <a class="code" href="classnlohmann_1_1basic__json.html#a4c919102a9b4fe0d588af64801436082">boolean_t</a>(<span class="keyword">false</span>);</div>
|
||
<div class="line"><a name="l15467"></a><span class="lineno">15467</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l15468"></a><span class="lineno">15468</span>  }</div>
|
||
<div class="line"><a name="l15469"></a><span class="lineno">15469</span>  </div>
|
||
<div class="line"><a name="l15470"></a><span class="lineno">15470</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a5763da164f8659d94a56e29df64b4bcc">value_t::number_integer</a>:</div>
|
||
<div class="line"><a name="l15471"></a><span class="lineno">15471</span>  {</div>
|
||
<div class="line"><a name="l15472"></a><span class="lineno">15472</span>  <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a5763da164f8659d94a56e29df64b4bcc">number_integer</a> = <a class="code" href="classnlohmann_1_1basic__json.html#a98e611d67b7bd75307de99c9358ab2dc">number_integer_t</a>(0);</div>
|
||
<div class="line"><a name="l15473"></a><span class="lineno">15473</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l15474"></a><span class="lineno">15474</span>  }</div>
|
||
<div class="line"><a name="l15475"></a><span class="lineno">15475</span>  </div>
|
||
<div class="line"><a name="l15476"></a><span class="lineno">15476</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985adce7cc8ec29055c4158828921f2f265e">value_t::number_unsigned</a>:</div>
|
||
<div class="line"><a name="l15477"></a><span class="lineno">15477</span>  {</div>
|
||
<div class="line"><a name="l15478"></a><span class="lineno">15478</span>  <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985adce7cc8ec29055c4158828921f2f265e">number_unsigned</a> = <a class="code" href="classnlohmann_1_1basic__json.html#ab906e29b5d83ac162e823ada2156b989">number_unsigned_t</a>(0);</div>
|
||
<div class="line"><a name="l15479"></a><span class="lineno">15479</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l15480"></a><span class="lineno">15480</span>  }</div>
|
||
<div class="line"><a name="l15481"></a><span class="lineno">15481</span>  </div>
|
||
<div class="line"><a name="l15482"></a><span class="lineno">15482</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ad9966ecb59667235a57b4b999a649eef">value_t::number_float</a>:</div>
|
||
<div class="line"><a name="l15483"></a><span class="lineno">15483</span>  {</div>
|
||
<div class="line"><a name="l15484"></a><span class="lineno">15484</span>  <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ad9966ecb59667235a57b4b999a649eef">number_float</a> = <a class="code" href="classnlohmann_1_1basic__json.html#a88d6103cb3620410b35200ee8e313d97">number_float_t</a>(0.0);</div>
|
||
<div class="line"><a name="l15485"></a><span class="lineno">15485</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l15486"></a><span class="lineno">15486</span>  }</div>
|
||
<div class="line"><a name="l15487"></a><span class="lineno">15487</span>  </div>
|
||
<div class="line"><a name="l15488"></a><span class="lineno">15488</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a37a6259cc0c1dae299a7866489dff0bd">value_t::null</a>:</div>
|
||
<div class="line"><a name="l15489"></a><span class="lineno">15489</span>  {</div>
|
||
<div class="line"><a name="l15490"></a><span class="lineno">15490</span>  <span class="keywordtype">object</span> = <span class="keyword">nullptr</span>; <span class="comment">// silence warning, see #821</span></div>
|
||
<div class="line"><a name="l15491"></a><span class="lineno">15491</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l15492"></a><span class="lineno">15492</span>  }</div>
|
||
<div class="line"><a name="l15493"></a><span class="lineno">15493</span>  </div>
|
||
<div class="line"><a name="l15494"></a><span class="lineno">15494</span>  <span class="keywordflow">default</span>:</div>
|
||
<div class="line"><a name="l15495"></a><span class="lineno">15495</span>  {</div>
|
||
<div class="line"><a name="l15496"></a><span class="lineno">15496</span>  <span class="keywordtype">object</span> = <span class="keyword">nullptr</span>; <span class="comment">// silence warning, see #821</span></div>
|
||
<div class="line"><a name="l15497"></a><span class="lineno">15497</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(t == <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a37a6259cc0c1dae299a7866489dff0bd">value_t::null</a>))</div>
|
||
<div class="line"><a name="l15498"></a><span class="lineno">15498</span>  {</div>
|
||
<div class="line"><a name="l15499"></a><span class="lineno">15499</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1other__error.html#a87e8ab894e8c85c0d97a0919782d3683">other_error::create</a>(500, <span class="stringliteral">"961c151d2e87f2686a955a9be24d316f1362bf21 3.7.3"</span>)); <span class="comment">// LCOV_EXCL_LINE</span></div>
|
||
<div class="line"><a name="l15500"></a><span class="lineno">15500</span>  }</div>
|
||
<div class="line"><a name="l15501"></a><span class="lineno">15501</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l15502"></a><span class="lineno">15502</span>  }</div>
|
||
<div class="line"><a name="l15503"></a><span class="lineno">15503</span>  }</div>
|
||
<div class="line"><a name="l15504"></a><span class="lineno">15504</span>  }</div>
|
||
<div class="line"><a name="l15505"></a><span class="lineno">15505</span>  </div>
|
||
<div class="line"><a name="l15507"></a><span class="lineno">15507</span>  json_value(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json.html#a61f8566a1a85a424c7266fb531dca005">string_t</a>& <a class="code" href="classnlohmann_1_1basic__json.html#adcf8ca5079f5db993820bf50036bf45d">value</a>)</div>
|
||
<div class="line"><a name="l15508"></a><span class="lineno">15508</span>  {</div>
|
||
<div class="line"><a name="l15509"></a><span class="lineno">15509</span>  <span class="keywordtype">string</span> = create<string_t>(<a class="code" href="classnlohmann_1_1basic__json.html#adcf8ca5079f5db993820bf50036bf45d">value</a>);</div>
|
||
<div class="line"><a name="l15510"></a><span class="lineno">15510</span>  }</div>
|
||
<div class="line"><a name="l15511"></a><span class="lineno">15511</span>  </div>
|
||
<div class="line"><a name="l15513"></a><span class="lineno">15513</span>  json_value(<a class="code" href="classnlohmann_1_1basic__json.html#a61f8566a1a85a424c7266fb531dca005">string_t</a>&& <a class="code" href="classnlohmann_1_1basic__json.html#adcf8ca5079f5db993820bf50036bf45d">value</a>)</div>
|
||
<div class="line"><a name="l15514"></a><span class="lineno">15514</span>  {</div>
|
||
<div class="line"><a name="l15515"></a><span class="lineno">15515</span>  <span class="keywordtype">string</span> = create<string_t>(std::move(<a class="code" href="classnlohmann_1_1basic__json.html#adcf8ca5079f5db993820bf50036bf45d">value</a>));</div>
|
||
<div class="line"><a name="l15516"></a><span class="lineno">15516</span>  }</div>
|
||
<div class="line"><a name="l15517"></a><span class="lineno">15517</span>  </div>
|
||
<div class="line"><a name="l15519"></a><span class="lineno">15519</span>  json_value(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json.html#a5e48a7893520e1314bf0c9723e26ea2a">object_t</a>& <a class="code" href="classnlohmann_1_1basic__json.html#adcf8ca5079f5db993820bf50036bf45d">value</a>)</div>
|
||
<div class="line"><a name="l15520"></a><span class="lineno">15520</span>  {</div>
|
||
<div class="line"><a name="l15521"></a><span class="lineno">15521</span>  <span class="keywordtype">object</span> = create<object_t>(<a class="code" href="classnlohmann_1_1basic__json.html#adcf8ca5079f5db993820bf50036bf45d">value</a>);</div>
|
||
<div class="line"><a name="l15522"></a><span class="lineno">15522</span>  }</div>
|
||
<div class="line"><a name="l15523"></a><span class="lineno">15523</span>  </div>
|
||
<div class="line"><a name="l15525"></a><span class="lineno">15525</span>  json_value(<a class="code" href="classnlohmann_1_1basic__json.html#a5e48a7893520e1314bf0c9723e26ea2a">object_t</a>&& <a class="code" href="classnlohmann_1_1basic__json.html#adcf8ca5079f5db993820bf50036bf45d">value</a>)</div>
|
||
<div class="line"><a name="l15526"></a><span class="lineno">15526</span>  {</div>
|
||
<div class="line"><a name="l15527"></a><span class="lineno">15527</span>  <span class="keywordtype">object</span> = create<object_t>(std::move(<a class="code" href="classnlohmann_1_1basic__json.html#adcf8ca5079f5db993820bf50036bf45d">value</a>));</div>
|
||
<div class="line"><a name="l15528"></a><span class="lineno">15528</span>  }</div>
|
||
<div class="line"><a name="l15529"></a><span class="lineno">15529</span>  </div>
|
||
<div class="line"><a name="l15531"></a><span class="lineno">15531</span>  json_value(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json.html#ae095578e03df97c5b3991787f1056374">array_t</a>& <a class="code" href="classnlohmann_1_1basic__json.html#adcf8ca5079f5db993820bf50036bf45d">value</a>)</div>
|
||
<div class="line"><a name="l15532"></a><span class="lineno">15532</span>  {</div>
|
||
<div class="line"><a name="l15533"></a><span class="lineno">15533</span>  <a class="code" href="classnlohmann_1_1basic__json.html#a8a7d537fc297bbc5b845f92fe0445e3b">array</a> = create<array_t>(<a class="code" href="classnlohmann_1_1basic__json.html#adcf8ca5079f5db993820bf50036bf45d">value</a>);</div>
|
||
<div class="line"><a name="l15534"></a><span class="lineno">15534</span>  }</div>
|
||
<div class="line"><a name="l15535"></a><span class="lineno">15535</span>  </div>
|
||
<div class="line"><a name="l15537"></a><span class="lineno">15537</span>  json_value(<a class="code" href="classnlohmann_1_1basic__json.html#ae095578e03df97c5b3991787f1056374">array_t</a>&& <a class="code" href="classnlohmann_1_1basic__json.html#adcf8ca5079f5db993820bf50036bf45d">value</a>)</div>
|
||
<div class="line"><a name="l15538"></a><span class="lineno">15538</span>  {</div>
|
||
<div class="line"><a name="l15539"></a><span class="lineno">15539</span>  <a class="code" href="classnlohmann_1_1basic__json.html#a8a7d537fc297bbc5b845f92fe0445e3b">array</a> = create<array_t>(std::move(<a class="code" href="classnlohmann_1_1basic__json.html#adcf8ca5079f5db993820bf50036bf45d">value</a>));</div>
|
||
<div class="line"><a name="l15540"></a><span class="lineno">15540</span>  }</div>
|
||
<div class="line"><a name="l15541"></a><span class="lineno">15541</span>  </div>
|
||
<div class="line"><a name="l15542"></a><span class="lineno">15542</span>  <span class="keywordtype">void</span> destroy(<a class="code" href="classnlohmann_1_1basic__json.html#ae8cbef097f7da18a781fc86587de6b90">value_t</a> t) noexcept</div>
|
||
<div class="line"><a name="l15543"></a><span class="lineno">15543</span>  {</div>
|
||
<div class="line"><a name="l15544"></a><span class="lineno">15544</span>  <span class="comment">// flatten the current json_value to a heap-allocated stack</span></div>
|
||
<div class="line"><a name="l15545"></a><span class="lineno">15545</span>  std::vector<basic_json> stack;</div>
|
||
<div class="line"><a name="l15546"></a><span class="lineno">15546</span>  </div>
|
||
<div class="line"><a name="l15547"></a><span class="lineno">15547</span>  <span class="comment">// move the top-level items to stack</span></div>
|
||
<div class="line"><a name="l15548"></a><span class="lineno">15548</span>  <span class="keywordflow">if</span> (t == <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>)</div>
|
||
<div class="line"><a name="l15549"></a><span class="lineno">15549</span>  {</div>
|
||
<div class="line"><a name="l15550"></a><span class="lineno">15550</span>  stack.reserve(<a class="code" href="classnlohmann_1_1basic__json.html#a8a7d537fc297bbc5b845f92fe0445e3b">array</a>-><a class="code" href="classnlohmann_1_1basic__json.html#a25e27ad0c6d53c01871c5485e1f75b96">size</a>());</div>
|
||
<div class="line"><a name="l15551"></a><span class="lineno">15551</span>  std::move(<a class="code" href="classnlohmann_1_1basic__json.html#a8a7d537fc297bbc5b845f92fe0445e3b">array</a>-><a class="code" href="classnlohmann_1_1basic__json.html#a0ff28dac23f2bdecee9564d07f51dcdc">begin</a>(), <a class="code" href="classnlohmann_1_1basic__json.html#a8a7d537fc297bbc5b845f92fe0445e3b">array</a>-><a class="code" href="classnlohmann_1_1basic__json.html#a13e032a02a7fd8a93fdddc2fcbc4763c">end</a>(), std::back_inserter(stack));</div>
|
||
<div class="line"><a name="l15552"></a><span class="lineno">15552</span>  }</div>
|
||
<div class="line"><a name="l15553"></a><span class="lineno">15553</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (t == <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>)</div>
|
||
<div class="line"><a name="l15554"></a><span class="lineno">15554</span>  {</div>
|
||
<div class="line"><a name="l15555"></a><span class="lineno">15555</span>  stack.reserve(<a class="code" href="classnlohmann_1_1basic__json.html#a31f84ee15c4690ff705bed74736d04c6">object</a>-><a class="code" href="classnlohmann_1_1basic__json.html#a25e27ad0c6d53c01871c5485e1f75b96">size</a>());</div>
|
||
<div class="line"><a name="l15556"></a><span class="lineno">15556</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span>&& it : *<span class="keywordtype">object</span>)</div>
|
||
<div class="line"><a name="l15557"></a><span class="lineno">15557</span>  {</div>
|
||
<div class="line"><a name="l15558"></a><span class="lineno">15558</span>  stack.push_back(std::move(it.second));</div>
|
||
<div class="line"><a name="l15559"></a><span class="lineno">15559</span>  }</div>
|
||
<div class="line"><a name="l15560"></a><span class="lineno">15560</span>  }</div>
|
||
<div class="line"><a name="l15561"></a><span class="lineno">15561</span>  </div>
|
||
<div class="line"><a name="l15562"></a><span class="lineno">15562</span>  <span class="keywordflow">while</span> (not stack.empty())</div>
|
||
<div class="line"><a name="l15563"></a><span class="lineno">15563</span>  {</div>
|
||
<div class="line"><a name="l15564"></a><span class="lineno">15564</span>  <span class="comment">// move the last item to local variable to be processed</span></div>
|
||
<div class="line"><a name="l15565"></a><span class="lineno">15565</span>  <a class="code" href="classnlohmann_1_1basic__json.html#aed115142bd0c6c66c864700e0467df55">basic_json</a> current_item(std::move(stack.back()));</div>
|
||
<div class="line"><a name="l15566"></a><span class="lineno">15566</span>  stack.pop_back();</div>
|
||
<div class="line"><a name="l15567"></a><span class="lineno">15567</span>  </div>
|
||
<div class="line"><a name="l15568"></a><span class="lineno">15568</span>  <span class="comment">// if current_item is array/object, move</span></div>
|
||
<div class="line"><a name="l15569"></a><span class="lineno">15569</span>  <span class="comment">// its children to the stack to be processed later</span></div>
|
||
<div class="line"><a name="l15570"></a><span class="lineno">15570</span>  <span class="keywordflow">if</span> (current_item.is_array())</div>
|
||
<div class="line"><a name="l15571"></a><span class="lineno">15571</span>  {</div>
|
||
<div class="line"><a name="l15572"></a><span class="lineno">15572</span>  std::move(current_item.m_value.array->begin(), current_item.m_value.array->end(),</div>
|
||
<div class="line"><a name="l15573"></a><span class="lineno">15573</span>  std::back_inserter(stack));</div>
|
||
<div class="line"><a name="l15574"></a><span class="lineno">15574</span>  </div>
|
||
<div class="line"><a name="l15575"></a><span class="lineno">15575</span>  current_item.m_value.array->clear();</div>
|
||
<div class="line"><a name="l15576"></a><span class="lineno">15576</span>  }</div>
|
||
<div class="line"><a name="l15577"></a><span class="lineno">15577</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (current_item.is_object())</div>
|
||
<div class="line"><a name="l15578"></a><span class="lineno">15578</span>  {</div>
|
||
<div class="line"><a name="l15579"></a><span class="lineno">15579</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span>&& it : *current_item.m_value.object)</div>
|
||
<div class="line"><a name="l15580"></a><span class="lineno">15580</span>  {</div>
|
||
<div class="line"><a name="l15581"></a><span class="lineno">15581</span>  stack.push_back(std::move(it.second));</div>
|
||
<div class="line"><a name="l15582"></a><span class="lineno">15582</span>  }</div>
|
||
<div class="line"><a name="l15583"></a><span class="lineno">15583</span>  </div>
|
||
<div class="line"><a name="l15584"></a><span class="lineno">15584</span>  current_item.m_value.object->clear();</div>
|
||
<div class="line"><a name="l15585"></a><span class="lineno">15585</span>  }</div>
|
||
<div class="line"><a name="l15586"></a><span class="lineno">15586</span>  </div>
|
||
<div class="line"><a name="l15587"></a><span class="lineno">15587</span>  <span class="comment">// it's now safe that current_item get destructed</span></div>
|
||
<div class="line"><a name="l15588"></a><span class="lineno">15588</span>  <span class="comment">// since it doesn't have any children</span></div>
|
||
<div class="line"><a name="l15589"></a><span class="lineno">15589</span>  }</div>
|
||
<div class="line"><a name="l15590"></a><span class="lineno">15590</span>  </div>
|
||
<div class="line"><a name="l15591"></a><span class="lineno">15591</span>  <span class="keywordflow">switch</span> (t)</div>
|
||
<div class="line"><a name="l15592"></a><span class="lineno">15592</span>  {</div>
|
||
<div class="line"><a name="l15593"></a><span class="lineno">15593</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>:</div>
|
||
<div class="line"><a name="l15594"></a><span class="lineno">15594</span>  {</div>
|
||
<div class="line"><a name="l15595"></a><span class="lineno">15595</span>  AllocatorType<object_t> alloc;</div>
|
||
<div class="line"><a name="l15596"></a><span class="lineno">15596</span>  std::allocator_traits<decltype(alloc)>::destroy(alloc, <span class="keywordtype">object</span>);</div>
|
||
<div class="line"><a name="l15597"></a><span class="lineno">15597</span>  std::allocator_traits<decltype(alloc)>::deallocate(alloc, <span class="keywordtype">object</span>, 1);</div>
|
||
<div class="line"><a name="l15598"></a><span class="lineno">15598</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l15599"></a><span class="lineno">15599</span>  }</div>
|
||
<div class="line"><a name="l15600"></a><span class="lineno">15600</span>  </div>
|
||
<div class="line"><a name="l15601"></a><span class="lineno">15601</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>:</div>
|
||
<div class="line"><a name="l15602"></a><span class="lineno">15602</span>  {</div>
|
||
<div class="line"><a name="l15603"></a><span class="lineno">15603</span>  AllocatorType<array_t> alloc;</div>
|
||
<div class="line"><a name="l15604"></a><span class="lineno">15604</span>  std::allocator_traits<decltype(alloc)>::destroy(alloc, <a class="code" href="classnlohmann_1_1basic__json.html#a8a7d537fc297bbc5b845f92fe0445e3b">array</a>);</div>
|
||
<div class="line"><a name="l15605"></a><span class="lineno">15605</span>  std::allocator_traits<decltype(alloc)>::deallocate(alloc, <a class="code" href="classnlohmann_1_1basic__json.html#a8a7d537fc297bbc5b845f92fe0445e3b">array</a>, 1);</div>
|
||
<div class="line"><a name="l15606"></a><span class="lineno">15606</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l15607"></a><span class="lineno">15607</span>  }</div>
|
||
<div class="line"><a name="l15608"></a><span class="lineno">15608</span>  </div>
|
||
<div class="line"><a name="l15609"></a><span class="lineno">15609</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ab45cffe084dd3d20d928bee85e7b0f21">value_t::string</a>:</div>
|
||
<div class="line"><a name="l15610"></a><span class="lineno">15610</span>  {</div>
|
||
<div class="line"><a name="l15611"></a><span class="lineno">15611</span>  AllocatorType<string_t> alloc;</div>
|
||
<div class="line"><a name="l15612"></a><span class="lineno">15612</span>  std::allocator_traits<decltype(alloc)>::destroy(alloc, <span class="keywordtype">string</span>);</div>
|
||
<div class="line"><a name="l15613"></a><span class="lineno">15613</span>  std::allocator_traits<decltype(alloc)>::deallocate(alloc, <span class="keywordtype">string</span>, 1);</div>
|
||
<div class="line"><a name="l15614"></a><span class="lineno">15614</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l15615"></a><span class="lineno">15615</span>  }</div>
|
||
<div class="line"><a name="l15616"></a><span class="lineno">15616</span>  </div>
|
||
<div class="line"><a name="l15617"></a><span class="lineno">15617</span>  <span class="keywordflow">default</span>:</div>
|
||
<div class="line"><a name="l15618"></a><span class="lineno">15618</span>  {</div>
|
||
<div class="line"><a name="l15619"></a><span class="lineno">15619</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l15620"></a><span class="lineno">15620</span>  }</div>
|
||
<div class="line"><a name="l15621"></a><span class="lineno">15621</span>  }</div>
|
||
<div class="line"><a name="l15622"></a><span class="lineno">15622</span>  }</div>
|
||
<div class="line"><a name="l15623"></a><span class="lineno">15623</span>  };</div>
|
||
<div class="line"><a name="l15624"></a><span class="lineno">15624</span>  </div>
|
||
<div class="line"><a name="l15634"></a><span class="lineno">15634</span>  <span class="keywordtype">void</span> assert_invariant() const noexcept</div>
|
||
<div class="line"><a name="l15635"></a><span class="lineno">15635</span>  {</div>
|
||
<div class="line"><a name="l15636"></a><span class="lineno">15636</span>  assert(m_type != <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a> or m_value.object != <span class="keyword">nullptr</span>);</div>
|
||
<div class="line"><a name="l15637"></a><span class="lineno">15637</span>  assert(m_type != <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a> or m_value.array != <span class="keyword">nullptr</span>);</div>
|
||
<div class="line"><a name="l15638"></a><span class="lineno">15638</span>  assert(m_type != <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ab45cffe084dd3d20d928bee85e7b0f21">value_t::string</a> or m_value.string != <span class="keyword">nullptr</span>);</div>
|
||
<div class="line"><a name="l15639"></a><span class="lineno">15639</span>  }</div>
|
||
<div class="line"><a name="l15640"></a><span class="lineno">15640</span>  </div>
|
||
<div class="line"><a name="l15641"></a><span class="lineno">15641</span>  <span class="keyword">public</span>:</div>
|
||
<div class="line"><a name="l15643"></a><span class="lineno">15643</span>  <span class="comment">// JSON parser callback //</span></div>
|
||
<div class="line"><a name="l15645"></a><span class="lineno">15645</span> <span class="comment"></span> </div>
|
||
<div class="line"><a name="l15661"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#aaceba2e4cf75fc983bb75c78c8742e65">15661</a></span>  <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1basic__json.html#aaceba2e4cf75fc983bb75c78c8742e65">parse_event_t</a> = <span class="keyword">typename</span> <a class="code" href="classnlohmann_1_1detail_1_1parser.html#a37ac88c864dda495f72cb62776b0bebe">parser::parse_event_t</a>;</div>
|
||
<div class="line"><a name="l15662"></a><span class="lineno">15662</span>  </div>
|
||
<div class="line"><a name="l15712"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#ab4f78c5f9fd25172eeec84482e03f5b7">15712</a></span>  <span class="keyword">using</span> <a class="code" href="classnlohmann_1_1basic__json.html#ab4f78c5f9fd25172eeec84482e03f5b7">parser_callback_t</a> = <span class="keyword">typename</span> <a class="code" href="classnlohmann_1_1detail_1_1parser.html#ad250ad4f2b4af4a497e727c963162ff1">parser::parser_callback_t</a>;</div>
|
||
<div class="line"><a name="l15713"></a><span class="lineno">15713</span>  </div>
|
||
<div class="line"><a name="l15715"></a><span class="lineno">15715</span>  <span class="comment">// constructors //</span></div>
|
||
<div class="line"><a name="l15717"></a><span class="lineno">15717</span> <span class="comment"></span> </div>
|
||
<div class="line"><a name="l15722"></a><span class="lineno">15722</span>  </div>
|
||
<div class="line"><a name="l15752"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#aed115142bd0c6c66c864700e0467df55">15752</a></span>  <a class="code" href="classnlohmann_1_1basic__json.html#aed115142bd0c6c66c864700e0467df55">basic_json</a>(<span class="keyword">const</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985">value_t</a> v)</div>
|
||
<div class="line"><a name="l15753"></a><span class="lineno">15753</span>  : m_type(v), m_value(v)</div>
|
||
<div class="line"><a name="l15754"></a><span class="lineno">15754</span>  {</div>
|
||
<div class="line"><a name="l15755"></a><span class="lineno">15755</span>  assert_invariant();</div>
|
||
<div class="line"><a name="l15756"></a><span class="lineno">15756</span>  }</div>
|
||
<div class="line"><a name="l15757"></a><span class="lineno">15757</span>  </div>
|
||
<div class="line"><a name="l15776"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#ae9be9e956bfc4658f35d17c6aa72b063">15776</a></span>  <a class="code" href="classnlohmann_1_1basic__json.html#ae9be9e956bfc4658f35d17c6aa72b063">basic_json</a>(std::nullptr_t = <span class="keyword">nullptr</span>) noexcept</div>
|
||
<div class="line"><a name="l15777"></a><span class="lineno">15777</span>  : <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a>(<a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985">value_t</a>::null)</div>
|
||
<div class="line"><a name="l15778"></a><span class="lineno">15778</span>  {</div>
|
||
<div class="line"><a name="l15779"></a><span class="lineno">15779</span>  assert_invariant();</div>
|
||
<div class="line"><a name="l15780"></a><span class="lineno">15780</span>  }</div>
|
||
<div class="line"><a name="l15781"></a><span class="lineno">15781</span>  </div>
|
||
<div class="line"><a name="l15839"></a><span class="lineno">15839</span>  <span class="keyword">template</span> <<span class="keyword">typename</span> CompatibleType,</div>
|
||
<div class="line"><a name="l15840"></a><span class="lineno">15840</span>  <span class="keyword">typename</span> U = <a class="code" href="namespacenlohmann_1_1detail.html#a53a082eedad9f4729fcd8fed552a21f7">detail::uncvref_t<CompatibleType></a>,</div>
|
||
<div class="line"><a name="l15841"></a><span class="lineno">15841</span>  <a class="code" href="namespacenlohmann_1_1detail.html#a02bcbc878bee413f25b985ada771aa9c">detail::enable_if_t</a><</div>
|
||
<div class="line"><a name="l15842"></a><span class="lineno">15842</span>  not <a class="code" href="structnlohmann_1_1detail_1_1is__basic__json.html">detail::is_basic_json<U>::value</a> and <a class="code" href="structnlohmann_1_1detail_1_1is__compatible__type.html">detail::is_compatible_type<basic_json_t, U>::value</a>, <span class="keywordtype">int</span>> = 0></div>
|
||
<div class="line"><a name="l15843"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a7639e0834df2bc719a04ffea89b31abc">15843</a></span>  <a class="code" href="classnlohmann_1_1basic__json.html#a7639e0834df2bc719a04ffea89b31abc">basic_json</a>(CompatibleType && val) noexcept(noexcept(</div>
|
||
<div class="line"><a name="l15844"></a><span class="lineno">15844</span>  <a class="code" href="namespacenlohmann_1_1detail.html#aaa77b0c9745130b77733a92a1a2e82ec">JSONSerializer<U>::to_json</a>(std::declval<basic_json_t&>(),</div>
|
||
<div class="line"><a name="l15845"></a><span class="lineno">15845</span>  std::forward<CompatibleType>(val))))</div>
|
||
<div class="line"><a name="l15846"></a><span class="lineno">15846</span>  {</div>
|
||
<div class="line"><a name="l15847"></a><span class="lineno">15847</span>  <a class="code" href="namespacenlohmann_1_1detail.html#aaa77b0c9745130b77733a92a1a2e82ec">JSONSerializer<U>::to_json</a>(*<span class="keyword">this</span>, std::forward<CompatibleType>(val));</div>
|
||
<div class="line"><a name="l15848"></a><span class="lineno">15848</span>  assert_invariant();</div>
|
||
<div class="line"><a name="l15849"></a><span class="lineno">15849</span>  }</div>
|
||
<div class="line"><a name="l15850"></a><span class="lineno">15850</span>  </div>
|
||
<div class="line"><a name="l15877"></a><span class="lineno">15877</span>  <span class="keyword">template</span> <<span class="keyword">typename</span> BasicJsonType,</div>
|
||
<div class="line"><a name="l15878"></a><span class="lineno">15878</span>  <a class="code" href="namespacenlohmann_1_1detail.html#a02bcbc878bee413f25b985ada771aa9c">detail::enable_if_t</a><</div>
|
||
<div class="line"><a name="l15879"></a><span class="lineno">15879</span>  <a class="code" href="structnlohmann_1_1detail_1_1is__basic__json.html">detail::is_basic_json<BasicJsonType>::value</a> and not std::is_same<basic_json, BasicJsonType>::value, <span class="keywordtype">int</span>> = 0></div>
|
||
<div class="line"><a name="l15880"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#aa16dc469c842fa8a0aaf6f5a95c46bb3">15880</a></span>  <a class="code" href="classnlohmann_1_1basic__json.html#aa16dc469c842fa8a0aaf6f5a95c46bb3">basic_json</a>(<span class="keyword">const</span> BasicJsonType& val)</div>
|
||
<div class="line"><a name="l15881"></a><span class="lineno">15881</span>  {</div>
|
||
<div class="line"><a name="l15882"></a><span class="lineno">15882</span>  <span class="keyword">using</span> other_boolean_t = <span class="keyword">typename</span> BasicJsonType::boolean_t;</div>
|
||
<div class="line"><a name="l15883"></a><span class="lineno">15883</span>  <span class="keyword">using</span> other_number_float_t = <span class="keyword">typename</span> BasicJsonType::number_float_t;</div>
|
||
<div class="line"><a name="l15884"></a><span class="lineno">15884</span>  <span class="keyword">using</span> other_number_integer_t = <span class="keyword">typename</span> BasicJsonType::number_integer_t;</div>
|
||
<div class="line"><a name="l15885"></a><span class="lineno">15885</span>  <span class="keyword">using</span> other_number_unsigned_t = <span class="keyword">typename</span> BasicJsonType::number_unsigned_t;</div>
|
||
<div class="line"><a name="l15886"></a><span class="lineno">15886</span>  <span class="keyword">using</span> other_string_t = <span class="keyword">typename</span> BasicJsonType::string_t;</div>
|
||
<div class="line"><a name="l15887"></a><span class="lineno">15887</span>  <span class="keyword">using</span> other_object_t = <span class="keyword">typename</span> BasicJsonType::object_t;</div>
|
||
<div class="line"><a name="l15888"></a><span class="lineno">15888</span>  <span class="keyword">using</span> other_array_t = <span class="keyword">typename</span> BasicJsonType::array_t;</div>
|
||
<div class="line"><a name="l15889"></a><span class="lineno">15889</span>  </div>
|
||
<div class="line"><a name="l15890"></a><span class="lineno">15890</span>  <span class="keywordflow">switch</span> (val.type())</div>
|
||
<div class="line"><a name="l15891"></a><span class="lineno">15891</span>  {</div>
|
||
<div class="line"><a name="l15892"></a><span class="lineno">15892</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a84e2c64f38f78ba3ea5c905ab5a2da27">value_t::boolean</a>:</div>
|
||
<div class="line"><a name="l15893"></a><span class="lineno">15893</span>  <a class="code" href="namespacenlohmann_1_1detail.html#aaa77b0c9745130b77733a92a1a2e82ec">JSONSerializer<other_boolean_t>::to_json</a>(*<span class="keyword">this</span>, val.template get<other_boolean_t>());</div>
|
||
<div class="line"><a name="l15894"></a><span class="lineno">15894</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l15895"></a><span class="lineno">15895</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ad9966ecb59667235a57b4b999a649eef">value_t::number_float</a>:</div>
|
||
<div class="line"><a name="l15896"></a><span class="lineno">15896</span>  <a class="code" href="namespacenlohmann_1_1detail.html#aaa77b0c9745130b77733a92a1a2e82ec">JSONSerializer<other_number_float_t>::to_json</a>(*<span class="keyword">this</span>, val.template get<other_number_float_t>());</div>
|
||
<div class="line"><a name="l15897"></a><span class="lineno">15897</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l15898"></a><span class="lineno">15898</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a5763da164f8659d94a56e29df64b4bcc">value_t::number_integer</a>:</div>
|
||
<div class="line"><a name="l15899"></a><span class="lineno">15899</span>  <a class="code" href="namespacenlohmann_1_1detail.html#aaa77b0c9745130b77733a92a1a2e82ec">JSONSerializer<other_number_integer_t>::to_json</a>(*<span class="keyword">this</span>, val.template get<other_number_integer_t>());</div>
|
||
<div class="line"><a name="l15900"></a><span class="lineno">15900</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l15901"></a><span class="lineno">15901</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985adce7cc8ec29055c4158828921f2f265e">value_t::number_unsigned</a>:</div>
|
||
<div class="line"><a name="l15902"></a><span class="lineno">15902</span>  <a class="code" href="namespacenlohmann_1_1detail.html#aaa77b0c9745130b77733a92a1a2e82ec">JSONSerializer<other_number_unsigned_t>::to_json</a>(*<span class="keyword">this</span>, val.template get<other_number_unsigned_t>());</div>
|
||
<div class="line"><a name="l15903"></a><span class="lineno">15903</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l15904"></a><span class="lineno">15904</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ab45cffe084dd3d20d928bee85e7b0f21">value_t::string</a>:</div>
|
||
<div class="line"><a name="l15905"></a><span class="lineno">15905</span>  <a class="code" href="namespacenlohmann_1_1detail.html#aaa77b0c9745130b77733a92a1a2e82ec">JSONSerializer<other_string_t>::to_json</a>(*<span class="keyword">this</span>, val.template get_ref<const other_string_t&>());</div>
|
||
<div class="line"><a name="l15906"></a><span class="lineno">15906</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l15907"></a><span class="lineno">15907</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>:</div>
|
||
<div class="line"><a name="l15908"></a><span class="lineno">15908</span>  <a class="code" href="namespacenlohmann_1_1detail.html#aaa77b0c9745130b77733a92a1a2e82ec">JSONSerializer<other_object_t>::to_json</a>(*<span class="keyword">this</span>, val.template get_ref<const other_object_t&>());</div>
|
||
<div class="line"><a name="l15909"></a><span class="lineno">15909</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l15910"></a><span class="lineno">15910</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>:</div>
|
||
<div class="line"><a name="l15911"></a><span class="lineno">15911</span>  <a class="code" href="namespacenlohmann_1_1detail.html#aaa77b0c9745130b77733a92a1a2e82ec">JSONSerializer<other_array_t>::to_json</a>(*<span class="keyword">this</span>, val.template get_ref<const other_array_t&>());</div>
|
||
<div class="line"><a name="l15912"></a><span class="lineno">15912</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l15913"></a><span class="lineno">15913</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a37a6259cc0c1dae299a7866489dff0bd">value_t::null</a>:</div>
|
||
<div class="line"><a name="l15914"></a><span class="lineno">15914</span>  *<span class="keyword">this</span> = <span class="keyword">nullptr</span>;</div>
|
||
<div class="line"><a name="l15915"></a><span class="lineno">15915</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l15916"></a><span class="lineno">15916</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a94708897ec9db8647dfe695714c98e46">value_t::discarded</a>:</div>
|
||
<div class="line"><a name="l15917"></a><span class="lineno">15917</span>  m_type = <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a94708897ec9db8647dfe695714c98e46">value_t::discarded</a>;</div>
|
||
<div class="line"><a name="l15918"></a><span class="lineno">15918</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l15919"></a><span class="lineno">15919</span>  <span class="keywordflow">default</span>: <span class="comment">// LCOV_EXCL_LINE</span></div>
|
||
<div class="line"><a name="l15920"></a><span class="lineno">15920</span>  assert(<span class="keyword">false</span>); <span class="comment">// LCOV_EXCL_LINE</span></div>
|
||
<div class="line"><a name="l15921"></a><span class="lineno">15921</span>  }</div>
|
||
<div class="line"><a name="l15922"></a><span class="lineno">15922</span>  assert_invariant();</div>
|
||
<div class="line"><a name="l15923"></a><span class="lineno">15923</span>  }</div>
|
||
<div class="line"><a name="l15924"></a><span class="lineno">15924</span>  </div>
|
||
<div class="line"><a name="l15999"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#ab5dfd9a2b2663b219641cb7fe59b6da2">15999</a></span>  <a class="code" href="classnlohmann_1_1basic__json.html#ab5dfd9a2b2663b219641cb7fe59b6da2">basic_json</a>(<a class="code" href="classnlohmann_1_1basic__json.html#ad70a098fbc01c53497db29d3b5b656a9">initializer_list_t</a> init,</div>
|
||
<div class="line"><a name="l16000"></a><span class="lineno">16000</span>  <span class="keywordtype">bool</span> type_deduction = <span class="keyword">true</span>,</div>
|
||
<div class="line"><a name="l16001"></a><span class="lineno">16001</span>  <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985">value_t</a> manual_type = <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>)</div>
|
||
<div class="line"><a name="l16002"></a><span class="lineno">16002</span>  {</div>
|
||
<div class="line"><a name="l16003"></a><span class="lineno">16003</span>  <span class="comment">// check if each element is an array with two elements whose first</span></div>
|
||
<div class="line"><a name="l16004"></a><span class="lineno">16004</span>  <span class="comment">// element is a string</span></div>
|
||
<div class="line"><a name="l16005"></a><span class="lineno">16005</span>  <span class="keywordtype">bool</span> is_an_object = std::all_of(init.begin(), init.end(),</div>
|
||
<div class="line"><a name="l16006"></a><span class="lineno">16006</span>  [](<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1json__ref.html">detail::json_ref<basic_json></a>& element_ref)</div>
|
||
<div class="line"><a name="l16007"></a><span class="lineno">16007</span>  {</div>
|
||
<div class="line"><a name="l16008"></a><span class="lineno">16008</span>  return element_ref->is_array() and element_ref->size() == 2 and (*element_ref)[0].is_string();</div>
|
||
<div class="line"><a name="l16009"></a><span class="lineno">16009</span>  });</div>
|
||
<div class="line"><a name="l16010"></a><span class="lineno">16010</span>  </div>
|
||
<div class="line"><a name="l16011"></a><span class="lineno">16011</span>  <span class="comment">// adjust type if type deduction is not wanted</span></div>
|
||
<div class="line"><a name="l16012"></a><span class="lineno">16012</span>  <span class="keywordflow">if</span> (not type_deduction)</div>
|
||
<div class="line"><a name="l16013"></a><span class="lineno">16013</span>  {</div>
|
||
<div class="line"><a name="l16014"></a><span class="lineno">16014</span>  <span class="comment">// if array is wanted, do not create an object though possible</span></div>
|
||
<div class="line"><a name="l16015"></a><span class="lineno">16015</span>  <span class="keywordflow">if</span> (manual_type == <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>)</div>
|
||
<div class="line"><a name="l16016"></a><span class="lineno">16016</span>  {</div>
|
||
<div class="line"><a name="l16017"></a><span class="lineno">16017</span>  is_an_object = <span class="keyword">false</span>;</div>
|
||
<div class="line"><a name="l16018"></a><span class="lineno">16018</span>  }</div>
|
||
<div class="line"><a name="l16019"></a><span class="lineno">16019</span>  </div>
|
||
<div class="line"><a name="l16020"></a><span class="lineno">16020</span>  <span class="comment">// if object is wanted but impossible, throw an exception</span></div>
|
||
<div class="line"><a name="l16021"></a><span class="lineno">16021</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(manual_type == <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a> and not is_an_object))</div>
|
||
<div class="line"><a name="l16022"></a><span class="lineno">16022</span>  {</div>
|
||
<div class="line"><a name="l16023"></a><span class="lineno">16023</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(301, <span class="stringliteral">"cannot create object from initializer list"</span>));</div>
|
||
<div class="line"><a name="l16024"></a><span class="lineno">16024</span>  }</div>
|
||
<div class="line"><a name="l16025"></a><span class="lineno">16025</span>  }</div>
|
||
<div class="line"><a name="l16026"></a><span class="lineno">16026</span>  </div>
|
||
<div class="line"><a name="l16027"></a><span class="lineno">16027</span>  <span class="keywordflow">if</span> (is_an_object)</div>
|
||
<div class="line"><a name="l16028"></a><span class="lineno">16028</span>  {</div>
|
||
<div class="line"><a name="l16029"></a><span class="lineno">16029</span>  <span class="comment">// the initializer list is a list of pairs -> create object</span></div>
|
||
<div class="line"><a name="l16030"></a><span class="lineno">16030</span>  m_type = <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>;</div>
|
||
<div class="line"><a name="l16031"></a><span class="lineno">16031</span>  m_value = <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>;</div>
|
||
<div class="line"><a name="l16032"></a><span class="lineno">16032</span>  </div>
|
||
<div class="line"><a name="l16033"></a><span class="lineno">16033</span>  std::for_each(init.begin(), init.end(), [<span class="keyword">this</span>](<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1json__ref.html">detail::json_ref<basic_json></a>& element_ref)</div>
|
||
<div class="line"><a name="l16034"></a><span class="lineno">16034</span>  {</div>
|
||
<div class="line"><a name="l16035"></a><span class="lineno">16035</span>  auto element = element_ref.moved_or_copied();</div>
|
||
<div class="line"><a name="l16036"></a><span class="lineno">16036</span>  m_value.object->emplace(</div>
|
||
<div class="line"><a name="l16037"></a><span class="lineno">16037</span>  std::move(*((*element.m_value.array)[0].m_value.string)),</div>
|
||
<div class="line"><a name="l16038"></a><span class="lineno">16038</span>  std::move((*element.m_value.array)[1]));</div>
|
||
<div class="line"><a name="l16039"></a><span class="lineno">16039</span>  });</div>
|
||
<div class="line"><a name="l16040"></a><span class="lineno">16040</span>  }</div>
|
||
<div class="line"><a name="l16041"></a><span class="lineno">16041</span>  <span class="keywordflow">else</span></div>
|
||
<div class="line"><a name="l16042"></a><span class="lineno">16042</span>  {</div>
|
||
<div class="line"><a name="l16043"></a><span class="lineno">16043</span>  <span class="comment">// the initializer list describes an array -> create array</span></div>
|
||
<div class="line"><a name="l16044"></a><span class="lineno">16044</span>  m_type = <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>;</div>
|
||
<div class="line"><a name="l16045"></a><span class="lineno">16045</span>  m_value.array = create<array_t>(init.begin(), init.end());</div>
|
||
<div class="line"><a name="l16046"></a><span class="lineno">16046</span>  }</div>
|
||
<div class="line"><a name="l16047"></a><span class="lineno">16047</span>  </div>
|
||
<div class="line"><a name="l16048"></a><span class="lineno">16048</span>  assert_invariant();</div>
|
||
<div class="line"><a name="l16049"></a><span class="lineno">16049</span>  }</div>
|
||
<div class="line"><a name="l16050"></a><span class="lineno">16050</span>  </div>
|
||
<div class="line"><a name="l16088"></a><span class="lineno">16088</span>  <a class="code" href="json_8hpp.html#a28d7e3b2d26bd5b8a3806da3db7dea03">JSON_HEDLEY_WARN_UNUSED_RESULT</a></div>
|
||
<div class="line"><a name="l16089"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a8a7d537fc297bbc5b845f92fe0445e3b">16089</a></span>  <span class="keyword">static</span> <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a> <a class="code" href="classnlohmann_1_1basic__json.html#a8a7d537fc297bbc5b845f92fe0445e3b">array</a>(<a class="code" href="classnlohmann_1_1basic__json.html#ad70a098fbc01c53497db29d3b5b656a9">initializer_list_t</a> init = {})</div>
|
||
<div class="line"><a name="l16090"></a><span class="lineno">16090</span>  {</div>
|
||
<div class="line"><a name="l16091"></a><span class="lineno">16091</span>  <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json.html#aed115142bd0c6c66c864700e0467df55">basic_json</a>(init, <span class="keyword">false</span>, <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>);</div>
|
||
<div class="line"><a name="l16092"></a><span class="lineno">16092</span>  }</div>
|
||
<div class="line"><a name="l16093"></a><span class="lineno">16093</span>  </div>
|
||
<div class="line"><a name="l16132"></a><span class="lineno">16132</span>  <a class="code" href="json_8hpp.html#a28d7e3b2d26bd5b8a3806da3db7dea03">JSON_HEDLEY_WARN_UNUSED_RESULT</a></div>
|
||
<div class="line"><a name="l16133"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a31f84ee15c4690ff705bed74736d04c6">16133</a></span>  <span class="keyword">static</span> <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a> <a class="code" href="classnlohmann_1_1basic__json.html#a31f84ee15c4690ff705bed74736d04c6">object</a>(<a class="code" href="classnlohmann_1_1basic__json.html#ad70a098fbc01c53497db29d3b5b656a9">initializer_list_t</a> init = {})</div>
|
||
<div class="line"><a name="l16134"></a><span class="lineno">16134</span>  {</div>
|
||
<div class="line"><a name="l16135"></a><span class="lineno">16135</span>  <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json.html#aed115142bd0c6c66c864700e0467df55">basic_json</a>(init, <span class="keyword">false</span>, <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>);</div>
|
||
<div class="line"><a name="l16136"></a><span class="lineno">16136</span>  }</div>
|
||
<div class="line"><a name="l16137"></a><span class="lineno">16137</span>  </div>
|
||
<div class="line"><a name="l16160"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#ab6816ae5100409254ed0a8bc21c387bb">16160</a></span>  <a class="code" href="classnlohmann_1_1basic__json.html#ab6816ae5100409254ed0a8bc21c387bb">basic_json</a>(<a class="code" href="classnlohmann_1_1basic__json.html#a39f2cd0b58106097e0e67bf185cc519b">size_type</a> cnt, <span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a>& val)</div>
|
||
<div class="line"><a name="l16161"></a><span class="lineno">16161</span>  : m_type(<a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985">value_t</a>::<a class="code" href="classnlohmann_1_1basic__json.html#a8a7d537fc297bbc5b845f92fe0445e3b">array</a>)</div>
|
||
<div class="line"><a name="l16162"></a><span class="lineno">16162</span>  {</div>
|
||
<div class="line"><a name="l16163"></a><span class="lineno">16163</span>  m_value.array = create<array_t>(cnt, val);</div>
|
||
<div class="line"><a name="l16164"></a><span class="lineno">16164</span>  assert_invariant();</div>
|
||
<div class="line"><a name="l16165"></a><span class="lineno">16165</span>  }</div>
|
||
<div class="line"><a name="l16166"></a><span class="lineno">16166</span>  </div>
|
||
<div class="line"><a name="l16222"></a><span class="lineno">16222</span>  <span class="keyword">template</span><<span class="keyword">class </span>InputIT, <span class="keyword">typename</span> std::enable_if<</div>
|
||
<div class="line"><a name="l16223"></a><span class="lineno">16223</span>  std::is_same<InputIT, typename basic_json_t::iterator>::value or</div>
|
||
<div class="line"><a name="l16224"></a><span class="lineno">16224</span>  std::is_same<InputIT, typename basic_json_t::const_iterator>::value, <span class="keywordtype">int</span>><a class="code" href="classnlohmann_1_1basic__json.html#a2b2d781d7f2a4ee41bc0016e931cadf7">::type</a> = 0></div>
|
||
<div class="line"><a name="l16225"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#abe197e9f3184487805cfb5bba6fd5938">16225</a></span>  <a class="code" href="classnlohmann_1_1basic__json.html#abe197e9f3184487805cfb5bba6fd5938">basic_json</a>(InputIT first, InputIT last)</div>
|
||
<div class="line"><a name="l16226"></a><span class="lineno">16226</span>  {</div>
|
||
<div class="line"><a name="l16227"></a><span class="lineno">16227</span>  assert(first.m_object != <span class="keyword">nullptr</span>);</div>
|
||
<div class="line"><a name="l16228"></a><span class="lineno">16228</span>  assert(last.m_object != <span class="keyword">nullptr</span>);</div>
|
||
<div class="line"><a name="l16229"></a><span class="lineno">16229</span>  </div>
|
||
<div class="line"><a name="l16230"></a><span class="lineno">16230</span>  <span class="comment">// make sure iterator fits the current value</span></div>
|
||
<div class="line"><a name="l16231"></a><span class="lineno">16231</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(first.m_object != last.m_object))</div>
|
||
<div class="line"><a name="l16232"></a><span class="lineno">16232</span>  {</div>
|
||
<div class="line"><a name="l16233"></a><span class="lineno">16233</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1invalid__iterator.html#a4e849260a3caa1b288c7e619130c6c09">invalid_iterator::create</a>(201, <span class="stringliteral">"iterators are not compatible"</span>));</div>
|
||
<div class="line"><a name="l16234"></a><span class="lineno">16234</span>  }</div>
|
||
<div class="line"><a name="l16235"></a><span class="lineno">16235</span>  </div>
|
||
<div class="line"><a name="l16236"></a><span class="lineno">16236</span>  <span class="comment">// copy type from first iterator</span></div>
|
||
<div class="line"><a name="l16237"></a><span class="lineno">16237</span>  m_type = first.m_object->m_type;</div>
|
||
<div class="line"><a name="l16238"></a><span class="lineno">16238</span>  </div>
|
||
<div class="line"><a name="l16239"></a><span class="lineno">16239</span>  <span class="comment">// check if iterator range is complete for primitive values</span></div>
|
||
<div class="line"><a name="l16240"></a><span class="lineno">16240</span>  <span class="keywordflow">switch</span> (m_type)</div>
|
||
<div class="line"><a name="l16241"></a><span class="lineno">16241</span>  {</div>
|
||
<div class="line"><a name="l16242"></a><span class="lineno">16242</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a84e2c64f38f78ba3ea5c905ab5a2da27">value_t::boolean</a>:</div>
|
||
<div class="line"><a name="l16243"></a><span class="lineno">16243</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ad9966ecb59667235a57b4b999a649eef">value_t::number_float</a>:</div>
|
||
<div class="line"><a name="l16244"></a><span class="lineno">16244</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a5763da164f8659d94a56e29df64b4bcc">value_t::number_integer</a>:</div>
|
||
<div class="line"><a name="l16245"></a><span class="lineno">16245</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985adce7cc8ec29055c4158828921f2f265e">value_t::number_unsigned</a>:</div>
|
||
<div class="line"><a name="l16246"></a><span class="lineno">16246</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ab45cffe084dd3d20d928bee85e7b0f21">value_t::string</a>:</div>
|
||
<div class="line"><a name="l16247"></a><span class="lineno">16247</span>  {</div>
|
||
<div class="line"><a name="l16248"></a><span class="lineno">16248</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not first.m_it.primitive_iterator.is_begin()</div>
|
||
<div class="line"><a name="l16249"></a><span class="lineno">16249</span>  or not last.m_it.primitive_iterator.is_end()))</div>
|
||
<div class="line"><a name="l16250"></a><span class="lineno">16250</span>  {</div>
|
||
<div class="line"><a name="l16251"></a><span class="lineno">16251</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1invalid__iterator.html#a4e849260a3caa1b288c7e619130c6c09">invalid_iterator::create</a>(204, <span class="stringliteral">"iterators out of range"</span>));</div>
|
||
<div class="line"><a name="l16252"></a><span class="lineno">16252</span>  }</div>
|
||
<div class="line"><a name="l16253"></a><span class="lineno">16253</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l16254"></a><span class="lineno">16254</span>  }</div>
|
||
<div class="line"><a name="l16255"></a><span class="lineno">16255</span>  </div>
|
||
<div class="line"><a name="l16256"></a><span class="lineno">16256</span>  <span class="keywordflow">default</span>:</div>
|
||
<div class="line"><a name="l16257"></a><span class="lineno">16257</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l16258"></a><span class="lineno">16258</span>  }</div>
|
||
<div class="line"><a name="l16259"></a><span class="lineno">16259</span>  </div>
|
||
<div class="line"><a name="l16260"></a><span class="lineno">16260</span>  <span class="keywordflow">switch</span> (m_type)</div>
|
||
<div class="line"><a name="l16261"></a><span class="lineno">16261</span>  {</div>
|
||
<div class="line"><a name="l16262"></a><span class="lineno">16262</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a5763da164f8659d94a56e29df64b4bcc">value_t::number_integer</a>:</div>
|
||
<div class="line"><a name="l16263"></a><span class="lineno">16263</span>  {</div>
|
||
<div class="line"><a name="l16264"></a><span class="lineno">16264</span>  m_value.number_integer = first.m_object->m_value.number_integer;</div>
|
||
<div class="line"><a name="l16265"></a><span class="lineno">16265</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l16266"></a><span class="lineno">16266</span>  }</div>
|
||
<div class="line"><a name="l16267"></a><span class="lineno">16267</span>  </div>
|
||
<div class="line"><a name="l16268"></a><span class="lineno">16268</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985adce7cc8ec29055c4158828921f2f265e">value_t::number_unsigned</a>:</div>
|
||
<div class="line"><a name="l16269"></a><span class="lineno">16269</span>  {</div>
|
||
<div class="line"><a name="l16270"></a><span class="lineno">16270</span>  m_value.number_unsigned = first.m_object->m_value.number_unsigned;</div>
|
||
<div class="line"><a name="l16271"></a><span class="lineno">16271</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l16272"></a><span class="lineno">16272</span>  }</div>
|
||
<div class="line"><a name="l16273"></a><span class="lineno">16273</span>  </div>
|
||
<div class="line"><a name="l16274"></a><span class="lineno">16274</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ad9966ecb59667235a57b4b999a649eef">value_t::number_float</a>:</div>
|
||
<div class="line"><a name="l16275"></a><span class="lineno">16275</span>  {</div>
|
||
<div class="line"><a name="l16276"></a><span class="lineno">16276</span>  m_value.number_float = first.m_object->m_value.number_float;</div>
|
||
<div class="line"><a name="l16277"></a><span class="lineno">16277</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l16278"></a><span class="lineno">16278</span>  }</div>
|
||
<div class="line"><a name="l16279"></a><span class="lineno">16279</span>  </div>
|
||
<div class="line"><a name="l16280"></a><span class="lineno">16280</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a84e2c64f38f78ba3ea5c905ab5a2da27">value_t::boolean</a>:</div>
|
||
<div class="line"><a name="l16281"></a><span class="lineno">16281</span>  {</div>
|
||
<div class="line"><a name="l16282"></a><span class="lineno">16282</span>  m_value.boolean = first.m_object->m_value.boolean;</div>
|
||
<div class="line"><a name="l16283"></a><span class="lineno">16283</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l16284"></a><span class="lineno">16284</span>  }</div>
|
||
<div class="line"><a name="l16285"></a><span class="lineno">16285</span>  </div>
|
||
<div class="line"><a name="l16286"></a><span class="lineno">16286</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ab45cffe084dd3d20d928bee85e7b0f21">value_t::string</a>:</div>
|
||
<div class="line"><a name="l16287"></a><span class="lineno">16287</span>  {</div>
|
||
<div class="line"><a name="l16288"></a><span class="lineno">16288</span>  m_value = *first.m_object->m_value.string;</div>
|
||
<div class="line"><a name="l16289"></a><span class="lineno">16289</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l16290"></a><span class="lineno">16290</span>  }</div>
|
||
<div class="line"><a name="l16291"></a><span class="lineno">16291</span>  </div>
|
||
<div class="line"><a name="l16292"></a><span class="lineno">16292</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>:</div>
|
||
<div class="line"><a name="l16293"></a><span class="lineno">16293</span>  {</div>
|
||
<div class="line"><a name="l16294"></a><span class="lineno">16294</span>  m_value.object = create<object_t>(first.m_it.object_iterator,</div>
|
||
<div class="line"><a name="l16295"></a><span class="lineno">16295</span>  last.m_it.object_iterator);</div>
|
||
<div class="line"><a name="l16296"></a><span class="lineno">16296</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l16297"></a><span class="lineno">16297</span>  }</div>
|
||
<div class="line"><a name="l16298"></a><span class="lineno">16298</span>  </div>
|
||
<div class="line"><a name="l16299"></a><span class="lineno">16299</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>:</div>
|
||
<div class="line"><a name="l16300"></a><span class="lineno">16300</span>  {</div>
|
||
<div class="line"><a name="l16301"></a><span class="lineno">16301</span>  m_value.array = create<array_t>(first.m_it.array_iterator,</div>
|
||
<div class="line"><a name="l16302"></a><span class="lineno">16302</span>  last.m_it.array_iterator);</div>
|
||
<div class="line"><a name="l16303"></a><span class="lineno">16303</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l16304"></a><span class="lineno">16304</span>  }</div>
|
||
<div class="line"><a name="l16305"></a><span class="lineno">16305</span>  </div>
|
||
<div class="line"><a name="l16306"></a><span class="lineno">16306</span>  <span class="keywordflow">default</span>:</div>
|
||
<div class="line"><a name="l16307"></a><span class="lineno">16307</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1invalid__iterator.html#a4e849260a3caa1b288c7e619130c6c09">invalid_iterator::create</a>(206, <span class="stringliteral">"cannot construct with iterators from "</span> +</div>
|
||
<div class="line"><a name="l16308"></a><span class="lineno">16308</span>  std::string(first.m_object->type_name())));</div>
|
||
<div class="line"><a name="l16309"></a><span class="lineno">16309</span>  }</div>
|
||
<div class="line"><a name="l16310"></a><span class="lineno">16310</span>  </div>
|
||
<div class="line"><a name="l16311"></a><span class="lineno">16311</span>  assert_invariant();</div>
|
||
<div class="line"><a name="l16312"></a><span class="lineno">16312</span>  }</div>
|
||
<div class="line"><a name="l16313"></a><span class="lineno">16313</span>  </div>
|
||
<div class="line"><a name="l16314"></a><span class="lineno">16314</span>  </div>
|
||
<div class="line"><a name="l16316"></a><span class="lineno">16316</span>  <span class="comment">// other constructors and destructor //</span></div>
|
||
<div class="line"><a name="l16318"></a><span class="lineno">16318</span> <span class="comment"></span> </div>
|
||
<div class="line"><a name="l16320"></a><span class="lineno">16320</span>  <a class="code" href="classnlohmann_1_1basic__json.html#aed115142bd0c6c66c864700e0467df55">basic_json</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1detail_1_1json__ref.html">detail::json_ref<basic_json></a>& ref)</div>
|
||
<div class="line"><a name="l16321"></a><span class="lineno">16321</span>  : <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a>(ref.moved_or_copied())</div>
|
||
<div class="line"><a name="l16322"></a><span class="lineno">16322</span>  {}</div>
|
||
<div class="line"><a name="l16323"></a><span class="lineno">16323</span>  </div>
|
||
<div class="line"><a name="l16349"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#af5de621bcf646c332343f9c1e011126c">16349</a></span>  <a class="code" href="classnlohmann_1_1basic__json.html#af5de621bcf646c332343f9c1e011126c">basic_json</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a>& other)</div>
|
||
<div class="line"><a name="l16350"></a><span class="lineno">16350</span>  : m_type(other.m_type)</div>
|
||
<div class="line"><a name="l16351"></a><span class="lineno">16351</span>  {</div>
|
||
<div class="line"><a name="l16352"></a><span class="lineno">16352</span>  <span class="comment">// check of passed value is valid</span></div>
|
||
<div class="line"><a name="l16353"></a><span class="lineno">16353</span>  other.assert_invariant();</div>
|
||
<div class="line"><a name="l16354"></a><span class="lineno">16354</span>  </div>
|
||
<div class="line"><a name="l16355"></a><span class="lineno">16355</span>  <span class="keywordflow">switch</span> (m_type)</div>
|
||
<div class="line"><a name="l16356"></a><span class="lineno">16356</span>  {</div>
|
||
<div class="line"><a name="l16357"></a><span class="lineno">16357</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>:</div>
|
||
<div class="line"><a name="l16358"></a><span class="lineno">16358</span>  {</div>
|
||
<div class="line"><a name="l16359"></a><span class="lineno">16359</span>  m_value = *other.m_value.object;</div>
|
||
<div class="line"><a name="l16360"></a><span class="lineno">16360</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l16361"></a><span class="lineno">16361</span>  }</div>
|
||
<div class="line"><a name="l16362"></a><span class="lineno">16362</span>  </div>
|
||
<div class="line"><a name="l16363"></a><span class="lineno">16363</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>:</div>
|
||
<div class="line"><a name="l16364"></a><span class="lineno">16364</span>  {</div>
|
||
<div class="line"><a name="l16365"></a><span class="lineno">16365</span>  m_value = *other.m_value.array;</div>
|
||
<div class="line"><a name="l16366"></a><span class="lineno">16366</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l16367"></a><span class="lineno">16367</span>  }</div>
|
||
<div class="line"><a name="l16368"></a><span class="lineno">16368</span>  </div>
|
||
<div class="line"><a name="l16369"></a><span class="lineno">16369</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ab45cffe084dd3d20d928bee85e7b0f21">value_t::string</a>:</div>
|
||
<div class="line"><a name="l16370"></a><span class="lineno">16370</span>  {</div>
|
||
<div class="line"><a name="l16371"></a><span class="lineno">16371</span>  m_value = *other.m_value.string;</div>
|
||
<div class="line"><a name="l16372"></a><span class="lineno">16372</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l16373"></a><span class="lineno">16373</span>  }</div>
|
||
<div class="line"><a name="l16374"></a><span class="lineno">16374</span>  </div>
|
||
<div class="line"><a name="l16375"></a><span class="lineno">16375</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a84e2c64f38f78ba3ea5c905ab5a2da27">value_t::boolean</a>:</div>
|
||
<div class="line"><a name="l16376"></a><span class="lineno">16376</span>  {</div>
|
||
<div class="line"><a name="l16377"></a><span class="lineno">16377</span>  m_value = other.m_value.boolean;</div>
|
||
<div class="line"><a name="l16378"></a><span class="lineno">16378</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l16379"></a><span class="lineno">16379</span>  }</div>
|
||
<div class="line"><a name="l16380"></a><span class="lineno">16380</span>  </div>
|
||
<div class="line"><a name="l16381"></a><span class="lineno">16381</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a5763da164f8659d94a56e29df64b4bcc">value_t::number_integer</a>:</div>
|
||
<div class="line"><a name="l16382"></a><span class="lineno">16382</span>  {</div>
|
||
<div class="line"><a name="l16383"></a><span class="lineno">16383</span>  m_value = other.m_value.number_integer;</div>
|
||
<div class="line"><a name="l16384"></a><span class="lineno">16384</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l16385"></a><span class="lineno">16385</span>  }</div>
|
||
<div class="line"><a name="l16386"></a><span class="lineno">16386</span>  </div>
|
||
<div class="line"><a name="l16387"></a><span class="lineno">16387</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985adce7cc8ec29055c4158828921f2f265e">value_t::number_unsigned</a>:</div>
|
||
<div class="line"><a name="l16388"></a><span class="lineno">16388</span>  {</div>
|
||
<div class="line"><a name="l16389"></a><span class="lineno">16389</span>  m_value = other.m_value.number_unsigned;</div>
|
||
<div class="line"><a name="l16390"></a><span class="lineno">16390</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l16391"></a><span class="lineno">16391</span>  }</div>
|
||
<div class="line"><a name="l16392"></a><span class="lineno">16392</span>  </div>
|
||
<div class="line"><a name="l16393"></a><span class="lineno">16393</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ad9966ecb59667235a57b4b999a649eef">value_t::number_float</a>:</div>
|
||
<div class="line"><a name="l16394"></a><span class="lineno">16394</span>  {</div>
|
||
<div class="line"><a name="l16395"></a><span class="lineno">16395</span>  m_value = other.m_value.number_float;</div>
|
||
<div class="line"><a name="l16396"></a><span class="lineno">16396</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l16397"></a><span class="lineno">16397</span>  }</div>
|
||
<div class="line"><a name="l16398"></a><span class="lineno">16398</span>  </div>
|
||
<div class="line"><a name="l16399"></a><span class="lineno">16399</span>  <span class="keywordflow">default</span>:</div>
|
||
<div class="line"><a name="l16400"></a><span class="lineno">16400</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l16401"></a><span class="lineno">16401</span>  }</div>
|
||
<div class="line"><a name="l16402"></a><span class="lineno">16402</span>  </div>
|
||
<div class="line"><a name="l16403"></a><span class="lineno">16403</span>  assert_invariant();</div>
|
||
<div class="line"><a name="l16404"></a><span class="lineno">16404</span>  }</div>
|
||
<div class="line"><a name="l16405"></a><span class="lineno">16405</span>  </div>
|
||
<div class="line"><a name="l16432"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a9a06d1efd50a00f4889f831f851ce124">16432</a></span>  <a class="code" href="classnlohmann_1_1basic__json.html#a9a06d1efd50a00f4889f831f851ce124">basic_json</a>(<a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a>&& other) noexcept</div>
|
||
<div class="line"><a name="l16433"></a><span class="lineno">16433</span>  : m_type(std::move(other.m_type)),</div>
|
||
<div class="line"><a name="l16434"></a><span class="lineno">16434</span>  m_value(std::move(other.m_value))</div>
|
||
<div class="line"><a name="l16435"></a><span class="lineno">16435</span>  {</div>
|
||
<div class="line"><a name="l16436"></a><span class="lineno">16436</span>  <span class="comment">// check that passed value is valid</span></div>
|
||
<div class="line"><a name="l16437"></a><span class="lineno">16437</span>  other.assert_invariant();</div>
|
||
<div class="line"><a name="l16438"></a><span class="lineno">16438</span>  </div>
|
||
<div class="line"><a name="l16439"></a><span class="lineno">16439</span>  <span class="comment">// invalidate payload</span></div>
|
||
<div class="line"><a name="l16440"></a><span class="lineno">16440</span>  other.m_type = <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a37a6259cc0c1dae299a7866489dff0bd">value_t::null</a>;</div>
|
||
<div class="line"><a name="l16441"></a><span class="lineno">16441</span>  other.m_value = {};</div>
|
||
<div class="line"><a name="l16442"></a><span class="lineno">16442</span>  </div>
|
||
<div class="line"><a name="l16443"></a><span class="lineno">16443</span>  assert_invariant();</div>
|
||
<div class="line"><a name="l16444"></a><span class="lineno">16444</span>  }</div>
|
||
<div class="line"><a name="l16445"></a><span class="lineno">16445</span>  </div>
|
||
<div class="line"><a name="l16469"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a849368ca71af3a93d576939d486f61c7">16469</a></span>  <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a>& <a class="code" href="classnlohmann_1_1basic__json.html#a849368ca71af3a93d576939d486f61c7">operator=</a>(<a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a> other) noexcept (</div>
|
||
<div class="line"><a name="l16470"></a><span class="lineno">16470</span>  std::is_nothrow_move_constructible<value_t>::value and</div>
|
||
<div class="line"><a name="l16471"></a><span class="lineno">16471</span>  std::is_nothrow_move_assignable<value_t>::value and</div>
|
||
<div class="line"><a name="l16472"></a><span class="lineno">16472</span>  std::is_nothrow_move_constructible<json_value>::value and</div>
|
||
<div class="line"><a name="l16473"></a><span class="lineno">16473</span>  std::is_nothrow_move_assignable<json_value>::value</div>
|
||
<div class="line"><a name="l16474"></a><span class="lineno">16474</span>  )</div>
|
||
<div class="line"><a name="l16475"></a><span class="lineno">16475</span>  {</div>
|
||
<div class="line"><a name="l16476"></a><span class="lineno">16476</span>  <span class="comment">// check that passed value is valid</span></div>
|
||
<div class="line"><a name="l16477"></a><span class="lineno">16477</span>  other.assert_invariant();</div>
|
||
<div class="line"><a name="l16478"></a><span class="lineno">16478</span>  </div>
|
||
<div class="line"><a name="l16479"></a><span class="lineno">16479</span>  <span class="keyword">using</span> std::swap;</div>
|
||
<div class="line"><a name="l16480"></a><span class="lineno">16480</span>  <a class="code" href="classnlohmann_1_1basic__json.html#a8c9d932353e1ab98a7dc2fc27e002031">swap</a>(m_type, other.m_type);</div>
|
||
<div class="line"><a name="l16481"></a><span class="lineno">16481</span>  <a class="code" href="classnlohmann_1_1basic__json.html#a8c9d932353e1ab98a7dc2fc27e002031">swap</a>(m_value, other.m_value);</div>
|
||
<div class="line"><a name="l16482"></a><span class="lineno">16482</span>  </div>
|
||
<div class="line"><a name="l16483"></a><span class="lineno">16483</span>  assert_invariant();</div>
|
||
<div class="line"><a name="l16484"></a><span class="lineno">16484</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
|
||
<div class="line"><a name="l16485"></a><span class="lineno">16485</span>  }</div>
|
||
<div class="line"><a name="l16486"></a><span class="lineno">16486</span>  </div>
|
||
<div class="line"><a name="l16502"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#aba01953d5d90e676d504863b8d9fdde5">16502</a></span>  <a class="code" href="classnlohmann_1_1basic__json.html#aba01953d5d90e676d504863b8d9fdde5">~basic_json</a>() noexcept</div>
|
||
<div class="line"><a name="l16503"></a><span class="lineno">16503</span>  {</div>
|
||
<div class="line"><a name="l16504"></a><span class="lineno">16504</span>  assert_invariant();</div>
|
||
<div class="line"><a name="l16505"></a><span class="lineno">16505</span>  m_value.destroy(m_type);</div>
|
||
<div class="line"><a name="l16506"></a><span class="lineno">16506</span>  }</div>
|
||
<div class="line"><a name="l16507"></a><span class="lineno">16507</span>  </div>
|
||
<div class="line"><a name="l16509"></a><span class="lineno">16509</span>  </div>
|
||
<div class="line"><a name="l16510"></a><span class="lineno">16510</span>  <span class="keyword">public</span>:</div>
|
||
<div class="line"><a name="l16512"></a><span class="lineno">16512</span>  <span class="comment">// object inspection //</span></div>
|
||
<div class="line"><a name="l16514"></a><span class="lineno">16514</span> <span class="comment"></span> </div>
|
||
<div class="line"><a name="l16518"></a><span class="lineno">16518</span>  </div>
|
||
<div class="line"><a name="l16560"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a50ec80b02d0f3f51130d4abb5d1cfdc5">16560</a></span>  <a class="code" href="classnlohmann_1_1basic__json.html#a61f8566a1a85a424c7266fb531dca005">string_t</a> <a class="code" href="classnlohmann_1_1basic__json.html#a50ec80b02d0f3f51130d4abb5d1cfdc5">dump</a>(<span class="keyword">const</span> <span class="keywordtype">int</span> indent = -1,</div>
|
||
<div class="line"><a name="l16561"></a><span class="lineno">16561</span>  <span class="keyword">const</span> <span class="keywordtype">char</span> indent_char = <span class="charliteral">' '</span>,</div>
|
||
<div class="line"><a name="l16562"></a><span class="lineno">16562</span>  <span class="keyword">const</span> <span class="keywordtype">bool</span> ensure_ascii = <span class="keyword">false</span>,</div>
|
||
<div class="line"><a name="l16563"></a><span class="lineno">16563</span>  <span class="keyword">const</span> <a class="code" href="namespacenlohmann_1_1detail.html#a5a76b60b26dc8c47256a996d18d967df">error_handler_t</a> error_handler = error_handler_t::strict)<span class="keyword"> const</span></div>
|
||
<div class="line"><a name="l16564"></a><span class="lineno">16564</span> <span class="keyword"> </span>{</div>
|
||
<div class="line"><a name="l16565"></a><span class="lineno">16565</span>  <a class="code" href="classnlohmann_1_1basic__json.html#a61f8566a1a85a424c7266fb531dca005">string_t</a> result;</div>
|
||
<div class="line"><a name="l16566"></a><span class="lineno">16566</span>  <a class="code" href="classnlohmann_1_1detail_1_1serializer.html">serializer</a> s(<a class="code" href="classnlohmann_1_1detail_1_1output__adapter.html">detail::output_adapter<char, string_t></a>(result), indent_char, error_handler);</div>
|
||
<div class="line"><a name="l16567"></a><span class="lineno">16567</span>  </div>
|
||
<div class="line"><a name="l16568"></a><span class="lineno">16568</span>  <span class="keywordflow">if</span> (indent >= 0)</div>
|
||
<div class="line"><a name="l16569"></a><span class="lineno">16569</span>  {</div>
|
||
<div class="line"><a name="l16570"></a><span class="lineno">16570</span>  s.<a class="code" href="classnlohmann_1_1detail_1_1serializer.html#a95460ebd1a535a543e5a0ec52e00f48b">dump</a>(*<span class="keyword">this</span>, <span class="keyword">true</span>, ensure_ascii, <span class="keyword">static_cast<</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">></span>(indent));</div>
|
||
<div class="line"><a name="l16571"></a><span class="lineno">16571</span>  }</div>
|
||
<div class="line"><a name="l16572"></a><span class="lineno">16572</span>  <span class="keywordflow">else</span></div>
|
||
<div class="line"><a name="l16573"></a><span class="lineno">16573</span>  {</div>
|
||
<div class="line"><a name="l16574"></a><span class="lineno">16574</span>  s.<a class="code" href="classnlohmann_1_1detail_1_1serializer.html#a95460ebd1a535a543e5a0ec52e00f48b">dump</a>(*<span class="keyword">this</span>, <span class="keyword">false</span>, ensure_ascii, 0);</div>
|
||
<div class="line"><a name="l16575"></a><span class="lineno">16575</span>  }</div>
|
||
<div class="line"><a name="l16576"></a><span class="lineno">16576</span>  </div>
|
||
<div class="line"><a name="l16577"></a><span class="lineno">16577</span>  <span class="keywordflow">return</span> result;</div>
|
||
<div class="line"><a name="l16578"></a><span class="lineno">16578</span>  }</div>
|
||
<div class="line"><a name="l16579"></a><span class="lineno">16579</span>  </div>
|
||
<div class="line"><a name="l16612"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a2b2d781d7f2a4ee41bc0016e931cadf7">16612</a></span>  constexpr <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985">value_t</a> <a class="code" href="classnlohmann_1_1basic__json.html#a2b2d781d7f2a4ee41bc0016e931cadf7">type</a>() const noexcept</div>
|
||
<div class="line"><a name="l16613"></a><span class="lineno">16613</span>  {</div>
|
||
<div class="line"><a name="l16614"></a><span class="lineno">16614</span>  <span class="keywordflow">return</span> m_type;</div>
|
||
<div class="line"><a name="l16615"></a><span class="lineno">16615</span>  }</div>
|
||
<div class="line"><a name="l16616"></a><span class="lineno">16616</span>  </div>
|
||
<div class="line"><a name="l16642"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a6362b88718eb5c6d4fed6a61eed44b95">16642</a></span>  constexpr <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json.html#a6362b88718eb5c6d4fed6a61eed44b95">is_primitive</a>() const noexcept</div>
|
||
<div class="line"><a name="l16643"></a><span class="lineno">16643</span>  {</div>
|
||
<div class="line"><a name="l16644"></a><span class="lineno">16644</span>  <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json.html#a8faa039ca82427ed29c486ffd00600c3">is_null</a>() or <a class="code" href="classnlohmann_1_1basic__json.html#a69b596a4a6683b362095c9a139637396">is_string</a>() or <a class="code" href="classnlohmann_1_1basic__json.html#a943e8cb182d0f2365c76d64b42eaa6fd">is_boolean</a>() or <a class="code" href="classnlohmann_1_1basic__json.html#a2b9852390abb4b1ef5fac6984e2fc0f3">is_number</a>();</div>
|
||
<div class="line"><a name="l16645"></a><span class="lineno">16645</span>  }</div>
|
||
<div class="line"><a name="l16646"></a><span class="lineno">16646</span>  </div>
|
||
<div class="line"><a name="l16669"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a9f68a0af820c3ced7f9d17851ce4c22d">16669</a></span>  constexpr <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json.html#a9f68a0af820c3ced7f9d17851ce4c22d">is_structured</a>() const noexcept</div>
|
||
<div class="line"><a name="l16670"></a><span class="lineno">16670</span>  {</div>
|
||
<div class="line"><a name="l16671"></a><span class="lineno">16671</span>  <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json.html#aef9ce5dd2381caee1f8ddcdb5bdd9c65">is_array</a>() or <a class="code" href="classnlohmann_1_1basic__json.html#af8f511af124e82e4579f444b4175787c">is_object</a>();</div>
|
||
<div class="line"><a name="l16672"></a><span class="lineno">16672</span>  }</div>
|
||
<div class="line"><a name="l16673"></a><span class="lineno">16673</span>  </div>
|
||
<div class="line"><a name="l16691"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a8faa039ca82427ed29c486ffd00600c3">16691</a></span>  constexpr <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json.html#a8faa039ca82427ed29c486ffd00600c3">is_null</a>() const noexcept</div>
|
||
<div class="line"><a name="l16692"></a><span class="lineno">16692</span>  {</div>
|
||
<div class="line"><a name="l16693"></a><span class="lineno">16693</span>  <span class="keywordflow">return</span> m_type == <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a37a6259cc0c1dae299a7866489dff0bd">value_t::null</a>;</div>
|
||
<div class="line"><a name="l16694"></a><span class="lineno">16694</span>  }</div>
|
||
<div class="line"><a name="l16695"></a><span class="lineno">16695</span>  </div>
|
||
<div class="line"><a name="l16713"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a943e8cb182d0f2365c76d64b42eaa6fd">16713</a></span>  constexpr <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json.html#a943e8cb182d0f2365c76d64b42eaa6fd">is_boolean</a>() const noexcept</div>
|
||
<div class="line"><a name="l16714"></a><span class="lineno">16714</span>  {</div>
|
||
<div class="line"><a name="l16715"></a><span class="lineno">16715</span>  <span class="keywordflow">return</span> m_type == <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a84e2c64f38f78ba3ea5c905ab5a2da27">value_t::boolean</a>;</div>
|
||
<div class="line"><a name="l16716"></a><span class="lineno">16716</span>  }</div>
|
||
<div class="line"><a name="l16717"></a><span class="lineno">16717</span>  </div>
|
||
<div class="line"><a name="l16743"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a2b9852390abb4b1ef5fac6984e2fc0f3">16743</a></span>  constexpr <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json.html#a2b9852390abb4b1ef5fac6984e2fc0f3">is_number</a>() const noexcept</div>
|
||
<div class="line"><a name="l16744"></a><span class="lineno">16744</span>  {</div>
|
||
<div class="line"><a name="l16745"></a><span class="lineno">16745</span>  <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json.html#abac8af76067f1e8fdca9052882c74428">is_number_integer</a>() or <a class="code" href="classnlohmann_1_1basic__json.html#a33b4bf898b857c962e798fc7f6e86e70">is_number_float</a>();</div>
|
||
<div class="line"><a name="l16746"></a><span class="lineno">16746</span>  }</div>
|
||
<div class="line"><a name="l16747"></a><span class="lineno">16747</span>  </div>
|
||
<div class="line"><a name="l16772"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#abac8af76067f1e8fdca9052882c74428">16772</a></span>  constexpr <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json.html#abac8af76067f1e8fdca9052882c74428">is_number_integer</a>() const noexcept</div>
|
||
<div class="line"><a name="l16773"></a><span class="lineno">16773</span>  {</div>
|
||
<div class="line"><a name="l16774"></a><span class="lineno">16774</span>  <span class="keywordflow">return</span> m_type == <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a5763da164f8659d94a56e29df64b4bcc">value_t::number_integer</a> or m_type == <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985adce7cc8ec29055c4158828921f2f265e">value_t::number_unsigned</a>;</div>
|
||
<div class="line"><a name="l16775"></a><span class="lineno">16775</span>  }</div>
|
||
<div class="line"><a name="l16776"></a><span class="lineno">16776</span>  </div>
|
||
<div class="line"><a name="l16800"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#abc7378cba0613a78b9aad1c8e7044bb0">16800</a></span>  constexpr <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json.html#abc7378cba0613a78b9aad1c8e7044bb0">is_number_unsigned</a>() const noexcept</div>
|
||
<div class="line"><a name="l16801"></a><span class="lineno">16801</span>  {</div>
|
||
<div class="line"><a name="l16802"></a><span class="lineno">16802</span>  <span class="keywordflow">return</span> m_type == <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985adce7cc8ec29055c4158828921f2f265e">value_t::number_unsigned</a>;</div>
|
||
<div class="line"><a name="l16803"></a><span class="lineno">16803</span>  }</div>
|
||
<div class="line"><a name="l16804"></a><span class="lineno">16804</span>  </div>
|
||
<div class="line"><a name="l16828"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a33b4bf898b857c962e798fc7f6e86e70">16828</a></span>  constexpr <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json.html#a33b4bf898b857c962e798fc7f6e86e70">is_number_float</a>() const noexcept</div>
|
||
<div class="line"><a name="l16829"></a><span class="lineno">16829</span>  {</div>
|
||
<div class="line"><a name="l16830"></a><span class="lineno">16830</span>  <span class="keywordflow">return</span> m_type == <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ad9966ecb59667235a57b4b999a649eef">value_t::number_float</a>;</div>
|
||
<div class="line"><a name="l16831"></a><span class="lineno">16831</span>  }</div>
|
||
<div class="line"><a name="l16832"></a><span class="lineno">16832</span>  </div>
|
||
<div class="line"><a name="l16850"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#af8f511af124e82e4579f444b4175787c">16850</a></span>  constexpr <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json.html#af8f511af124e82e4579f444b4175787c">is_object</a>() const noexcept</div>
|
||
<div class="line"><a name="l16851"></a><span class="lineno">16851</span>  {</div>
|
||
<div class="line"><a name="l16852"></a><span class="lineno">16852</span>  <span class="keywordflow">return</span> m_type == <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>;</div>
|
||
<div class="line"><a name="l16853"></a><span class="lineno">16853</span>  }</div>
|
||
<div class="line"><a name="l16854"></a><span class="lineno">16854</span>  </div>
|
||
<div class="line"><a name="l16872"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#aef9ce5dd2381caee1f8ddcdb5bdd9c65">16872</a></span>  constexpr <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json.html#aef9ce5dd2381caee1f8ddcdb5bdd9c65">is_array</a>() const noexcept</div>
|
||
<div class="line"><a name="l16873"></a><span class="lineno">16873</span>  {</div>
|
||
<div class="line"><a name="l16874"></a><span class="lineno">16874</span>  <span class="keywordflow">return</span> m_type == <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>;</div>
|
||
<div class="line"><a name="l16875"></a><span class="lineno">16875</span>  }</div>
|
||
<div class="line"><a name="l16876"></a><span class="lineno">16876</span>  </div>
|
||
<div class="line"><a name="l16894"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a69b596a4a6683b362095c9a139637396">16894</a></span>  constexpr <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json.html#a69b596a4a6683b362095c9a139637396">is_string</a>() const noexcept</div>
|
||
<div class="line"><a name="l16895"></a><span class="lineno">16895</span>  {</div>
|
||
<div class="line"><a name="l16896"></a><span class="lineno">16896</span>  <span class="keywordflow">return</span> m_type == <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ab45cffe084dd3d20d928bee85e7b0f21">value_t::string</a>;</div>
|
||
<div class="line"><a name="l16897"></a><span class="lineno">16897</span>  }</div>
|
||
<div class="line"><a name="l16898"></a><span class="lineno">16898</span>  </div>
|
||
<div class="line"><a name="l16921"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#aabe623bc8304c2ba92d96d91f390fab4">16921</a></span>  constexpr <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json.html#aabe623bc8304c2ba92d96d91f390fab4">is_discarded</a>() const noexcept</div>
|
||
<div class="line"><a name="l16922"></a><span class="lineno">16922</span>  {</div>
|
||
<div class="line"><a name="l16923"></a><span class="lineno">16923</span>  <span class="keywordflow">return</span> m_type == <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a94708897ec9db8647dfe695714c98e46">value_t::discarded</a>;</div>
|
||
<div class="line"><a name="l16924"></a><span class="lineno">16924</span>  }</div>
|
||
<div class="line"><a name="l16925"></a><span class="lineno">16925</span>  </div>
|
||
<div class="line"><a name="l16947"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a26ef3058e249f82a04f8ec18f7419027">16947</a></span>  constexpr <span class="keyword">operator</span> <a class="code" href="classnlohmann_1_1basic__json.html#ae8cbef097f7da18a781fc86587de6b90">value_t</a>() const noexcept</div>
|
||
<div class="line"><a name="l16948"></a><span class="lineno">16948</span>  {</div>
|
||
<div class="line"><a name="l16949"></a><span class="lineno">16949</span>  <span class="keywordflow">return</span> m_type;</div>
|
||
<div class="line"><a name="l16950"></a><span class="lineno">16950</span>  }</div>
|
||
<div class="line"><a name="l16951"></a><span class="lineno">16951</span>  </div>
|
||
<div class="line"><a name="l16953"></a><span class="lineno">16953</span>  </div>
|
||
<div class="line"><a name="l16954"></a><span class="lineno">16954</span>  <span class="keyword">private</span>:</div>
|
||
<div class="line"><a name="l16956"></a><span class="lineno">16956</span>  <span class="comment">// value access //</span></div>
|
||
<div class="line"><a name="l16958"></a><span class="lineno">16958</span> <span class="comment"></span> </div>
|
||
<div class="line"><a name="l16960"></a><span class="lineno">16960</span>  <a class="code" href="classnlohmann_1_1basic__json.html#a4c919102a9b4fe0d588af64801436082">boolean_t</a> get_impl(<a class="code" href="classnlohmann_1_1basic__json.html#a4c919102a9b4fe0d588af64801436082">boolean_t</a>* <span class="comment">/*unused*/</span>)<span class="keyword"> const</span></div>
|
||
<div class="line"><a name="l16961"></a><span class="lineno">16961</span> <span class="keyword"> </span>{</div>
|
||
<div class="line"><a name="l16962"></a><span class="lineno">16962</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a355f2770653ff7bdd5c74b204b5a3ad0">JSON_HEDLEY_LIKELY</a>(<a class="code" href="classnlohmann_1_1basic__json.html#a943e8cb182d0f2365c76d64b42eaa6fd">is_boolean</a>()))</div>
|
||
<div class="line"><a name="l16963"></a><span class="lineno">16963</span>  {</div>
|
||
<div class="line"><a name="l16964"></a><span class="lineno">16964</span>  <span class="keywordflow">return</span> m_value.boolean;</div>
|
||
<div class="line"><a name="l16965"></a><span class="lineno">16965</span>  }</div>
|
||
<div class="line"><a name="l16966"></a><span class="lineno">16966</span>  </div>
|
||
<div class="line"><a name="l16967"></a><span class="lineno">16967</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(302, <span class="stringliteral">"type must be boolean, but is "</span> + std::string(<a class="code" href="classnlohmann_1_1basic__json.html#ad14563c53cf7ca9189bc164082367bf3">type_name</a>())));</div>
|
||
<div class="line"><a name="l16968"></a><span class="lineno">16968</span>  }</div>
|
||
<div class="line"><a name="l16969"></a><span class="lineno">16969</span>  </div>
|
||
<div class="line"><a name="l16971"></a><span class="lineno">16971</span>  <a class="code" href="classnlohmann_1_1basic__json.html#a5e48a7893520e1314bf0c9723e26ea2a">object_t</a>* get_impl_ptr(<a class="code" href="classnlohmann_1_1basic__json.html#a5e48a7893520e1314bf0c9723e26ea2a">object_t</a>* <span class="comment">/*unused*/</span>) noexcept</div>
|
||
<div class="line"><a name="l16972"></a><span class="lineno">16972</span>  {</div>
|
||
<div class="line"><a name="l16973"></a><span class="lineno">16973</span>  <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json.html#af8f511af124e82e4579f444b4175787c">is_object</a>() ? m_value.object : <span class="keyword">nullptr</span>;</div>
|
||
<div class="line"><a name="l16974"></a><span class="lineno">16974</span>  }</div>
|
||
<div class="line"><a name="l16975"></a><span class="lineno">16975</span>  </div>
|
||
<div class="line"><a name="l16977"></a><span class="lineno">16977</span>  constexpr <span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json.html#a5e48a7893520e1314bf0c9723e26ea2a">object_t</a>* get_impl_ptr(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json.html#a5e48a7893520e1314bf0c9723e26ea2a">object_t</a>* <span class="comment">/*unused*/</span>) <span class="keyword">const</span> noexcept</div>
|
||
<div class="line"><a name="l16978"></a><span class="lineno">16978</span>  {</div>
|
||
<div class="line"><a name="l16979"></a><span class="lineno">16979</span>  <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json.html#af8f511af124e82e4579f444b4175787c">is_object</a>() ? m_value.object : <span class="keyword">nullptr</span>;</div>
|
||
<div class="line"><a name="l16980"></a><span class="lineno">16980</span>  }</div>
|
||
<div class="line"><a name="l16981"></a><span class="lineno">16981</span>  </div>
|
||
<div class="line"><a name="l16983"></a><span class="lineno">16983</span>  <a class="code" href="classnlohmann_1_1basic__json.html#ae095578e03df97c5b3991787f1056374">array_t</a>* get_impl_ptr(<a class="code" href="classnlohmann_1_1basic__json.html#ae095578e03df97c5b3991787f1056374">array_t</a>* <span class="comment">/*unused*/</span>) noexcept</div>
|
||
<div class="line"><a name="l16984"></a><span class="lineno">16984</span>  {</div>
|
||
<div class="line"><a name="l16985"></a><span class="lineno">16985</span>  <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json.html#aef9ce5dd2381caee1f8ddcdb5bdd9c65">is_array</a>() ? m_value.array : <span class="keyword">nullptr</span>;</div>
|
||
<div class="line"><a name="l16986"></a><span class="lineno">16986</span>  }</div>
|
||
<div class="line"><a name="l16987"></a><span class="lineno">16987</span>  </div>
|
||
<div class="line"><a name="l16989"></a><span class="lineno">16989</span>  constexpr <span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json.html#ae095578e03df97c5b3991787f1056374">array_t</a>* get_impl_ptr(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json.html#ae095578e03df97c5b3991787f1056374">array_t</a>* <span class="comment">/*unused*/</span>) <span class="keyword">const</span> noexcept</div>
|
||
<div class="line"><a name="l16990"></a><span class="lineno">16990</span>  {</div>
|
||
<div class="line"><a name="l16991"></a><span class="lineno">16991</span>  <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json.html#aef9ce5dd2381caee1f8ddcdb5bdd9c65">is_array</a>() ? m_value.array : <span class="keyword">nullptr</span>;</div>
|
||
<div class="line"><a name="l16992"></a><span class="lineno">16992</span>  }</div>
|
||
<div class="line"><a name="l16993"></a><span class="lineno">16993</span>  </div>
|
||
<div class="line"><a name="l16995"></a><span class="lineno">16995</span>  <a class="code" href="classnlohmann_1_1basic__json.html#a61f8566a1a85a424c7266fb531dca005">string_t</a>* get_impl_ptr(<a class="code" href="classnlohmann_1_1basic__json.html#a61f8566a1a85a424c7266fb531dca005">string_t</a>* <span class="comment">/*unused*/</span>) noexcept</div>
|
||
<div class="line"><a name="l16996"></a><span class="lineno">16996</span>  {</div>
|
||
<div class="line"><a name="l16997"></a><span class="lineno">16997</span>  <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json.html#a69b596a4a6683b362095c9a139637396">is_string</a>() ? m_value.string : <span class="keyword">nullptr</span>;</div>
|
||
<div class="line"><a name="l16998"></a><span class="lineno">16998</span>  }</div>
|
||
<div class="line"><a name="l16999"></a><span class="lineno">16999</span>  </div>
|
||
<div class="line"><a name="l17001"></a><span class="lineno">17001</span>  constexpr <span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json.html#a61f8566a1a85a424c7266fb531dca005">string_t</a>* get_impl_ptr(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json.html#a61f8566a1a85a424c7266fb531dca005">string_t</a>* <span class="comment">/*unused*/</span>) <span class="keyword">const</span> noexcept</div>
|
||
<div class="line"><a name="l17002"></a><span class="lineno">17002</span>  {</div>
|
||
<div class="line"><a name="l17003"></a><span class="lineno">17003</span>  <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json.html#a69b596a4a6683b362095c9a139637396">is_string</a>() ? m_value.string : <span class="keyword">nullptr</span>;</div>
|
||
<div class="line"><a name="l17004"></a><span class="lineno">17004</span>  }</div>
|
||
<div class="line"><a name="l17005"></a><span class="lineno">17005</span>  </div>
|
||
<div class="line"><a name="l17007"></a><span class="lineno">17007</span>  <a class="code" href="classnlohmann_1_1basic__json.html#a4c919102a9b4fe0d588af64801436082">boolean_t</a>* get_impl_ptr(<a class="code" href="classnlohmann_1_1basic__json.html#a4c919102a9b4fe0d588af64801436082">boolean_t</a>* <span class="comment">/*unused*/</span>) noexcept</div>
|
||
<div class="line"><a name="l17008"></a><span class="lineno">17008</span>  {</div>
|
||
<div class="line"><a name="l17009"></a><span class="lineno">17009</span>  <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json.html#a943e8cb182d0f2365c76d64b42eaa6fd">is_boolean</a>() ? &m_value.boolean : <span class="keyword">nullptr</span>;</div>
|
||
<div class="line"><a name="l17010"></a><span class="lineno">17010</span>  }</div>
|
||
<div class="line"><a name="l17011"></a><span class="lineno">17011</span>  </div>
|
||
<div class="line"><a name="l17013"></a><span class="lineno">17013</span>  constexpr <span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json.html#a4c919102a9b4fe0d588af64801436082">boolean_t</a>* get_impl_ptr(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json.html#a4c919102a9b4fe0d588af64801436082">boolean_t</a>* <span class="comment">/*unused*/</span>) <span class="keyword">const</span> noexcept</div>
|
||
<div class="line"><a name="l17014"></a><span class="lineno">17014</span>  {</div>
|
||
<div class="line"><a name="l17015"></a><span class="lineno">17015</span>  <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json.html#a943e8cb182d0f2365c76d64b42eaa6fd">is_boolean</a>() ? &m_value.boolean : <span class="keyword">nullptr</span>;</div>
|
||
<div class="line"><a name="l17016"></a><span class="lineno">17016</span>  }</div>
|
||
<div class="line"><a name="l17017"></a><span class="lineno">17017</span>  </div>
|
||
<div class="line"><a name="l17019"></a><span class="lineno">17019</span>  <a class="code" href="classnlohmann_1_1basic__json.html#a98e611d67b7bd75307de99c9358ab2dc">number_integer_t</a>* get_impl_ptr(<a class="code" href="classnlohmann_1_1basic__json.html#a98e611d67b7bd75307de99c9358ab2dc">number_integer_t</a>* <span class="comment">/*unused*/</span>) noexcept</div>
|
||
<div class="line"><a name="l17020"></a><span class="lineno">17020</span>  {</div>
|
||
<div class="line"><a name="l17021"></a><span class="lineno">17021</span>  <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json.html#abac8af76067f1e8fdca9052882c74428">is_number_integer</a>() ? &m_value.number_integer : <span class="keyword">nullptr</span>;</div>
|
||
<div class="line"><a name="l17022"></a><span class="lineno">17022</span>  }</div>
|
||
<div class="line"><a name="l17023"></a><span class="lineno">17023</span>  </div>
|
||
<div class="line"><a name="l17025"></a><span class="lineno">17025</span>  constexpr <span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json.html#a98e611d67b7bd75307de99c9358ab2dc">number_integer_t</a>* get_impl_ptr(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json.html#a98e611d67b7bd75307de99c9358ab2dc">number_integer_t</a>* <span class="comment">/*unused*/</span>) <span class="keyword">const</span> noexcept</div>
|
||
<div class="line"><a name="l17026"></a><span class="lineno">17026</span>  {</div>
|
||
<div class="line"><a name="l17027"></a><span class="lineno">17027</span>  <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json.html#abac8af76067f1e8fdca9052882c74428">is_number_integer</a>() ? &m_value.number_integer : <span class="keyword">nullptr</span>;</div>
|
||
<div class="line"><a name="l17028"></a><span class="lineno">17028</span>  }</div>
|
||
<div class="line"><a name="l17029"></a><span class="lineno">17029</span>  </div>
|
||
<div class="line"><a name="l17031"></a><span class="lineno">17031</span>  <a class="code" href="classnlohmann_1_1basic__json.html#ab906e29b5d83ac162e823ada2156b989">number_unsigned_t</a>* get_impl_ptr(<a class="code" href="classnlohmann_1_1basic__json.html#ab906e29b5d83ac162e823ada2156b989">number_unsigned_t</a>* <span class="comment">/*unused*/</span>) noexcept</div>
|
||
<div class="line"><a name="l17032"></a><span class="lineno">17032</span>  {</div>
|
||
<div class="line"><a name="l17033"></a><span class="lineno">17033</span>  <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json.html#abc7378cba0613a78b9aad1c8e7044bb0">is_number_unsigned</a>() ? &m_value.number_unsigned : <span class="keyword">nullptr</span>;</div>
|
||
<div class="line"><a name="l17034"></a><span class="lineno">17034</span>  }</div>
|
||
<div class="line"><a name="l17035"></a><span class="lineno">17035</span>  </div>
|
||
<div class="line"><a name="l17037"></a><span class="lineno">17037</span>  constexpr <span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json.html#ab906e29b5d83ac162e823ada2156b989">number_unsigned_t</a>* get_impl_ptr(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json.html#ab906e29b5d83ac162e823ada2156b989">number_unsigned_t</a>* <span class="comment">/*unused*/</span>) <span class="keyword">const</span> noexcept</div>
|
||
<div class="line"><a name="l17038"></a><span class="lineno">17038</span>  {</div>
|
||
<div class="line"><a name="l17039"></a><span class="lineno">17039</span>  <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json.html#abc7378cba0613a78b9aad1c8e7044bb0">is_number_unsigned</a>() ? &m_value.number_unsigned : <span class="keyword">nullptr</span>;</div>
|
||
<div class="line"><a name="l17040"></a><span class="lineno">17040</span>  }</div>
|
||
<div class="line"><a name="l17041"></a><span class="lineno">17041</span>  </div>
|
||
<div class="line"><a name="l17043"></a><span class="lineno">17043</span>  <a class="code" href="classnlohmann_1_1basic__json.html#a88d6103cb3620410b35200ee8e313d97">number_float_t</a>* get_impl_ptr(<a class="code" href="classnlohmann_1_1basic__json.html#a88d6103cb3620410b35200ee8e313d97">number_float_t</a>* <span class="comment">/*unused*/</span>) noexcept</div>
|
||
<div class="line"><a name="l17044"></a><span class="lineno">17044</span>  {</div>
|
||
<div class="line"><a name="l17045"></a><span class="lineno">17045</span>  <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json.html#a33b4bf898b857c962e798fc7f6e86e70">is_number_float</a>() ? &m_value.number_float : <span class="keyword">nullptr</span>;</div>
|
||
<div class="line"><a name="l17046"></a><span class="lineno">17046</span>  }</div>
|
||
<div class="line"><a name="l17047"></a><span class="lineno">17047</span>  </div>
|
||
<div class="line"><a name="l17049"></a><span class="lineno">17049</span>  constexpr <span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json.html#a88d6103cb3620410b35200ee8e313d97">number_float_t</a>* get_impl_ptr(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json.html#a88d6103cb3620410b35200ee8e313d97">number_float_t</a>* <span class="comment">/*unused*/</span>) <span class="keyword">const</span> noexcept</div>
|
||
<div class="line"><a name="l17050"></a><span class="lineno">17050</span>  {</div>
|
||
<div class="line"><a name="l17051"></a><span class="lineno">17051</span>  <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json.html#a33b4bf898b857c962e798fc7f6e86e70">is_number_float</a>() ? &m_value.number_float : <span class="keyword">nullptr</span>;</div>
|
||
<div class="line"><a name="l17052"></a><span class="lineno">17052</span>  }</div>
|
||
<div class="line"><a name="l17053"></a><span class="lineno">17053</span>  </div>
|
||
<div class="line"><a name="l17065"></a><span class="lineno">17065</span>  <span class="keyword">template</span><<span class="keyword">typename</span> ReferenceType, <span class="keyword">typename</span> ThisType></div>
|
||
<div class="line"><a name="l17066"></a><span class="lineno">17066</span>  <span class="keyword">static</span> ReferenceType get_ref_impl(ThisType& obj)</div>
|
||
<div class="line"><a name="l17067"></a><span class="lineno">17067</span>  {</div>
|
||
<div class="line"><a name="l17068"></a><span class="lineno">17068</span>  <span class="comment">// delegate the call to get_ptr<>()</span></div>
|
||
<div class="line"><a name="l17069"></a><span class="lineno">17069</span>  <span class="keyword">auto</span> ptr = obj.template get_ptr<typename std::add_pointer<ReferenceType>::type>();</div>
|
||
<div class="line"><a name="l17070"></a><span class="lineno">17070</span>  </div>
|
||
<div class="line"><a name="l17071"></a><span class="lineno">17071</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a355f2770653ff7bdd5c74b204b5a3ad0">JSON_HEDLEY_LIKELY</a>(ptr != <span class="keyword">nullptr</span>))</div>
|
||
<div class="line"><a name="l17072"></a><span class="lineno">17072</span>  {</div>
|
||
<div class="line"><a name="l17073"></a><span class="lineno">17073</span>  <span class="keywordflow">return</span> *ptr;</div>
|
||
<div class="line"><a name="l17074"></a><span class="lineno">17074</span>  }</div>
|
||
<div class="line"><a name="l17075"></a><span class="lineno">17075</span>  </div>
|
||
<div class="line"><a name="l17076"></a><span class="lineno">17076</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(303, <span class="stringliteral">"incompatible ReferenceType for get_ref, actual type is "</span> + std::string(obj.type_name())));</div>
|
||
<div class="line"><a name="l17077"></a><span class="lineno">17077</span>  }</div>
|
||
<div class="line"><a name="l17078"></a><span class="lineno">17078</span>  </div>
|
||
<div class="line"><a name="l17079"></a><span class="lineno">17079</span>  <span class="keyword">public</span>:</div>
|
||
<div class="line"><a name="l17083"></a><span class="lineno">17083</span>  </div>
|
||
<div class="line"><a name="l17098"></a><span class="lineno">17098</span>  <span class="keyword">template</span><<span class="keyword">typename</span> BasicJsonType, <a class="code" href="namespacenlohmann_1_1detail.html#a02bcbc878bee413f25b985ada771aa9c">detail::enable_if_t</a><</div>
|
||
<div class="line"><a name="l17099"></a><span class="lineno">17099</span>  std::is_same<typename std::remove_const<BasicJsonType>::type, basic_json_t><a class="code" href="classnlohmann_1_1basic__json.html#adcf8ca5079f5db993820bf50036bf45d">::value</a>,</div>
|
||
<div class="line"><a name="l17100"></a><span class="lineno">17100</span>  <span class="keywordtype">int</span>> = 0></div>
|
||
<div class="line"><a name="l17101"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a6b187a22994c12c8cae0dd5ee99dc85e">17101</a></span>  <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a> <a class="code" href="classnlohmann_1_1basic__json.html#a6b187a22994c12c8cae0dd5ee99dc85e">get</a>()<span class="keyword"> const</span></div>
|
||
<div class="line"><a name="l17102"></a><span class="lineno">17102</span> <span class="keyword"> </span>{</div>
|
||
<div class="line"><a name="l17103"></a><span class="lineno">17103</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
|
||
<div class="line"><a name="l17104"></a><span class="lineno">17104</span>  }</div>
|
||
<div class="line"><a name="l17105"></a><span class="lineno">17105</span>  </div>
|
||
<div class="line"><a name="l17121"></a><span class="lineno">17121</span>  <span class="keyword">template</span><<span class="keyword">typename</span> BasicJsonType, <a class="code" href="namespacenlohmann_1_1detail.html#a02bcbc878bee413f25b985ada771aa9c">detail::enable_if_t</a><</div>
|
||
<div class="line"><a name="l17122"></a><span class="lineno">17122</span>  not std::is_same<BasicJsonType, basic_json>::value and</div>
|
||
<div class="line"><a name="l17123"></a><span class="lineno">17123</span>  <a class="code" href="structnlohmann_1_1detail_1_1is__basic__json.html">detail::is_basic_json<BasicJsonType>::value</a>, <span class="keywordtype">int</span>> = 0></div>
|
||
<div class="line"><a name="l17124"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a30ff63a4d671eb14f652356cd934320c">17124</a></span>  BasicJsonType <a class="code" href="classnlohmann_1_1basic__json.html#a30ff63a4d671eb14f652356cd934320c">get</a>()<span class="keyword"> const</span></div>
|
||
<div class="line"><a name="l17125"></a><span class="lineno">17125</span> <span class="keyword"> </span>{</div>
|
||
<div class="line"><a name="l17126"></a><span class="lineno">17126</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
|
||
<div class="line"><a name="l17127"></a><span class="lineno">17127</span>  }</div>
|
||
<div class="line"><a name="l17128"></a><span class="lineno">17128</span>  </div>
|
||
<div class="line"><a name="l17168"></a><span class="lineno">17168</span>  <span class="keyword">template</span><<span class="keyword">typename</span> ValueTypeCV, <span class="keyword">typename</span> ValueType = detail::uncvref_t<ValueTypeCV>,</div>
|
||
<div class="line"><a name="l17169"></a><span class="lineno">17169</span>  detail::enable_if_t <</div>
|
||
<div class="line"><a name="l17170"></a><span class="lineno">17170</span>  not detail::is_basic_json<ValueType>::value and</div>
|
||
<div class="line"><a name="l17171"></a><span class="lineno">17171</span>  detail::has_from_json<basic_json_t, ValueType>::value and</div>
|
||
<div class="line"><a name="l17172"></a><span class="lineno">17172</span>  not detail::has_non_default_from_json<basic_json_t, ValueType>::value,</div>
|
||
<div class="line"><a name="l17173"></a><span class="lineno">17173</span>  <span class="keywordtype">int</span>> = 0></div>
|
||
<div class="line"><a name="l17174"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#aa6602bb24022183ab989439e19345d08">17174</a></span>  ValueType <a class="code" href="classnlohmann_1_1basic__json.html#aa6602bb24022183ab989439e19345d08">get</a>() const noexcept(noexcept(</div>
|
||
<div class="line"><a name="l17175"></a><span class="lineno">17175</span>  JSONSerializer<ValueType>::<a class="code" href="namespacenlohmann_1_1detail.html#aef5c8ea108f4d2b03fb4a635617510de">from_json</a>(<a class="code" href="namespacestd.html">std</a>::declval<const basic_json_t&>(), <a class="code" href="namespacestd.html">std</a>::declval<ValueType&>())))</div>
|
||
<div class="line"><a name="l17176"></a><span class="lineno">17176</span>  {</div>
|
||
<div class="line"><a name="l17177"></a><span class="lineno">17177</span>  <span class="comment">// we cannot static_assert on ValueTypeCV being non-const, because</span></div>
|
||
<div class="line"><a name="l17178"></a><span class="lineno">17178</span>  <span class="comment">// there is support for get<const basic_json_t>(), which is why we</span></div>
|
||
<div class="line"><a name="l17179"></a><span class="lineno">17179</span>  <span class="comment">// still need the uncvref</span></div>
|
||
<div class="line"><a name="l17180"></a><span class="lineno">17180</span>  static_assert(not std::is_reference<ValueTypeCV>::value,</div>
|
||
<div class="line"><a name="l17181"></a><span class="lineno">17181</span>  <span class="stringliteral">"get() cannot be used with reference types, you might want to use get_ref()"</span>);</div>
|
||
<div class="line"><a name="l17182"></a><span class="lineno">17182</span>  static_assert(std::is_default_constructible<ValueType>::value,</div>
|
||
<div class="line"><a name="l17183"></a><span class="lineno">17183</span>  <span class="stringliteral">"types must be DefaultConstructible when used with get()"</span>);</div>
|
||
<div class="line"><a name="l17184"></a><span class="lineno">17184</span>  </div>
|
||
<div class="line"><a name="l17185"></a><span class="lineno">17185</span>  ValueType ret;</div>
|
||
<div class="line"><a name="l17186"></a><span class="lineno">17186</span>  <a class="code" href="namespacenlohmann_1_1detail.html#aef5c8ea108f4d2b03fb4a635617510de">JSONSerializer<ValueType>::from_json</a>(*<span class="keyword">this</span>, ret);</div>
|
||
<div class="line"><a name="l17187"></a><span class="lineno">17187</span>  <span class="keywordflow">return</span> ret;</div>
|
||
<div class="line"><a name="l17188"></a><span class="lineno">17188</span>  }</div>
|
||
<div class="line"><a name="l17189"></a><span class="lineno">17189</span>  </div>
|
||
<div class="line"><a name="l17221"></a><span class="lineno">17221</span>  <span class="keyword">template</span><<span class="keyword">typename</span> ValueTypeCV, <span class="keyword">typename</span> ValueType = detail::uncvref_t<ValueTypeCV>,</div>
|
||
<div class="line"><a name="l17222"></a><span class="lineno">17222</span>  detail::enable_if_t<not std::is_same<basic_json_t, ValueType>::value and</div>
|
||
<div class="line"><a name="l17223"></a><span class="lineno">17223</span>  detail::has_non_default_from_json<basic_json_t, ValueType>::value,</div>
|
||
<div class="line"><a name="l17224"></a><span class="lineno">17224</span>  <span class="keywordtype">int</span>> = 0></div>
|
||
<div class="line"><a name="l17225"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a6c829df57e924f88cecb702a60af8f17">17225</a></span>  ValueType <a class="code" href="classnlohmann_1_1basic__json.html#a6c829df57e924f88cecb702a60af8f17">get</a>() const noexcept(noexcept(</div>
|
||
<div class="line"><a name="l17226"></a><span class="lineno">17226</span>  JSONSerializer<ValueType>::<a class="code" href="namespacenlohmann_1_1detail.html#aef5c8ea108f4d2b03fb4a635617510de">from_json</a>(<a class="code" href="namespacestd.html">std</a>::declval<const basic_json_t&>())))</div>
|
||
<div class="line"><a name="l17227"></a><span class="lineno">17227</span>  {</div>
|
||
<div class="line"><a name="l17228"></a><span class="lineno">17228</span>  static_assert(not std::is_reference<ValueTypeCV>::value,</div>
|
||
<div class="line"><a name="l17229"></a><span class="lineno">17229</span>  <span class="stringliteral">"get() cannot be used with reference types, you might want to use get_ref()"</span>);</div>
|
||
<div class="line"><a name="l17230"></a><span class="lineno">17230</span>  <span class="keywordflow">return</span> <a class="code" href="namespacenlohmann_1_1detail.html#aef5c8ea108f4d2b03fb4a635617510de">JSONSerializer<ValueType>::from_json</a>(*<span class="keyword">this</span>);</div>
|
||
<div class="line"><a name="l17231"></a><span class="lineno">17231</span>  }</div>
|
||
<div class="line"><a name="l17232"></a><span class="lineno">17232</span>  </div>
|
||
<div class="line"><a name="l17266"></a><span class="lineno">17266</span>  <span class="keyword">template</span><<span class="keyword">typename</span> ValueType,</div>
|
||
<div class="line"><a name="l17267"></a><span class="lineno">17267</span>  <a class="code" href="namespacenlohmann_1_1detail.html#a02bcbc878bee413f25b985ada771aa9c">detail::enable_if_t</a> <</div>
|
||
<div class="line"><a name="l17268"></a><span class="lineno">17268</span>  not <a class="code" href="structnlohmann_1_1detail_1_1is__basic__json.html">detail::is_basic_json<ValueType>::value</a> and</div>
|
||
<div class="line"><a name="l17269"></a><span class="lineno">17269</span>  <a class="code" href="structnlohmann_1_1detail_1_1has__from__json.html">detail::has_from_json<basic_json_t, ValueType>::value</a>,</div>
|
||
<div class="line"><a name="l17270"></a><span class="lineno">17270</span>  <span class="keywordtype">int</span>> = 0></div>
|
||
<div class="line"><a name="l17271"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a65753c68f06639eda0d355f919564e01">17271</a></span>  ValueType & <a class="code" href="classnlohmann_1_1basic__json.html#a65753c68f06639eda0d355f919564e01">get_to</a>(ValueType& v) <span class="keyword">const</span> noexcept(noexcept(</div>
|
||
<div class="line"><a name="l17272"></a><span class="lineno">17272</span>  <a class="code" href="namespacenlohmann_1_1detail.html#aef5c8ea108f4d2b03fb4a635617510de">JSONSerializer<ValueType>::from_json</a>(std::declval<const basic_json_t&>(), v)))</div>
|
||
<div class="line"><a name="l17273"></a><span class="lineno">17273</span>  {</div>
|
||
<div class="line"><a name="l17274"></a><span class="lineno">17274</span>  <a class="code" href="namespacenlohmann_1_1detail.html#aef5c8ea108f4d2b03fb4a635617510de">JSONSerializer<ValueType>::from_json</a>(*<span class="keyword">this</span>, v);</div>
|
||
<div class="line"><a name="l17275"></a><span class="lineno">17275</span>  <span class="keywordflow">return</span> v;</div>
|
||
<div class="line"><a name="l17276"></a><span class="lineno">17276</span>  }</div>
|
||
<div class="line"><a name="l17277"></a><span class="lineno">17277</span>  </div>
|
||
<div class="line"><a name="l17278"></a><span class="lineno">17278</span>  <span class="keyword">template</span> <</div>
|
||
<div class="line"><a name="l17279"></a><span class="lineno">17279</span>  <span class="keyword">typename</span> T, std::size_t N,</div>
|
||
<div class="line"><a name="l17280"></a><span class="lineno">17280</span>  <span class="keyword">typename</span> Array = T (&)[N],</div>
|
||
<div class="line"><a name="l17281"></a><span class="lineno">17281</span>  <a class="code" href="namespacenlohmann_1_1detail.html#a02bcbc878bee413f25b985ada771aa9c">detail::enable_if_t</a> <</div>
|
||
<div class="line"><a name="l17282"></a><span class="lineno">17282</span>  <a class="code" href="structnlohmann_1_1detail_1_1has__from__json.html">detail::has_from_json<basic_json_t, Array>::value</a>, <span class="keywordtype">int</span> > = 0 ></div>
|
||
<div class="line"><a name="l17283"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#ab9d91cc9c3b62782b38d8f2158269937">17283</a></span>  Array <a class="code" href="classnlohmann_1_1basic__json.html#ab9d91cc9c3b62782b38d8f2158269937">get_to</a>(T (&v)[N]) <span class="keyword">const</span></div>
|
||
<div class="line"><a name="l17284"></a><span class="lineno">17284</span>  noexcept(noexcept(<a class="code" href="namespacenlohmann_1_1detail.html#aef5c8ea108f4d2b03fb4a635617510de">JSONSerializer<Array>::from_json</a>(</div>
|
||
<div class="line"><a name="l17285"></a><span class="lineno">17285</span>  std::declval<const basic_json_t&>(), v)))</div>
|
||
<div class="line"><a name="l17286"></a><span class="lineno">17286</span>  {</div>
|
||
<div class="line"><a name="l17287"></a><span class="lineno">17287</span>  <a class="code" href="namespacenlohmann_1_1detail.html#aef5c8ea108f4d2b03fb4a635617510de">JSONSerializer<Array>::from_json</a>(*<span class="keyword">this</span>, v);</div>
|
||
<div class="line"><a name="l17288"></a><span class="lineno">17288</span>  <span class="keywordflow">return</span> v;</div>
|
||
<div class="line"><a name="l17289"></a><span class="lineno">17289</span>  }</div>
|
||
<div class="line"><a name="l17290"></a><span class="lineno">17290</span>  </div>
|
||
<div class="line"><a name="l17291"></a><span class="lineno">17291</span>  </div>
|
||
<div class="line"><a name="l17318"></a><span class="lineno">17318</span>  <span class="keyword">template</span><<span class="keyword">typename</span> PointerType, <span class="keyword">typename</span> std::enable_if<</div>
|
||
<div class="line"><a name="l17319"></a><span class="lineno">17319</span>  std::is_pointer<PointerType>::value, <span class="keywordtype">int</span>><a class="code" href="classnlohmann_1_1basic__json.html#a2b2d781d7f2a4ee41bc0016e931cadf7">::type</a> = 0></div>
|
||
<div class="line"><a name="l17320"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#abefbb319df8ed4f8705b4fd4e4dc731c">17320</a></span>  <span class="keyword">auto</span> <a class="code" href="classnlohmann_1_1basic__json.html#abefbb319df8ed4f8705b4fd4e4dc731c">get_ptr</a>() noexcept -> decltype(<a class="code" href="namespacestd.html">std</a>::declval<basic_json_t&>().get_impl_ptr(<a class="code" href="namespacestd.html">std</a>::declval<PointerType>()))</div>
|
||
<div class="line"><a name="l17321"></a><span class="lineno">17321</span>  {</div>
|
||
<div class="line"><a name="l17322"></a><span class="lineno">17322</span>  <span class="comment">// delegate the call to get_impl_ptr<>()</span></div>
|
||
<div class="line"><a name="l17323"></a><span class="lineno">17323</span>  <span class="keywordflow">return</span> get_impl_ptr(<span class="keyword">static_cast<</span>PointerType<span class="keyword">></span>(<span class="keyword">nullptr</span>));</div>
|
||
<div class="line"><a name="l17324"></a><span class="lineno">17324</span>  }</div>
|
||
<div class="line"><a name="l17325"></a><span class="lineno">17325</span>  </div>
|
||
<div class="line"><a name="l17330"></a><span class="lineno">17330</span>  <span class="keyword">template</span><<span class="keyword">typename</span> PointerType, <span class="keyword">typename</span> std::enable_if<</div>
|
||
<div class="line"><a name="l17331"></a><span class="lineno">17331</span>  std::is_pointer<PointerType>::value and</div>
|
||
<div class="line"><a name="l17332"></a><span class="lineno">17332</span>  std::is_const<typename std::remove_pointer<PointerType>::type><a class="code" href="classnlohmann_1_1basic__json.html#adcf8ca5079f5db993820bf50036bf45d">::value</a>, <span class="keywordtype">int</span>><a class="code" href="classnlohmann_1_1basic__json.html#a2b2d781d7f2a4ee41bc0016e931cadf7">::type</a> = 0></div>
|
||
<div class="line"><a name="l17333"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a6508b9ef55eb018231fb2198211f6d73">17333</a></span>  constexpr <span class="keyword">auto</span> <a class="code" href="classnlohmann_1_1basic__json.html#a6508b9ef55eb018231fb2198211f6d73">get_ptr</a>() const noexcept -> decltype(<a class="code" href="namespacestd.html">std</a>::declval<const basic_json_t&>().get_impl_ptr(<a class="code" href="namespacestd.html">std</a>::declval<PointerType>()))</div>
|
||
<div class="line"><a name="l17334"></a><span class="lineno">17334</span>  {</div>
|
||
<div class="line"><a name="l17335"></a><span class="lineno">17335</span>  <span class="comment">// delegate the call to get_impl_ptr<>() const</span></div>
|
||
<div class="line"><a name="l17336"></a><span class="lineno">17336</span>  <span class="keywordflow">return</span> get_impl_ptr(<span class="keyword">static_cast<</span>PointerType<span class="keyword">></span>(<span class="keyword">nullptr</span>));</div>
|
||
<div class="line"><a name="l17337"></a><span class="lineno">17337</span>  }</div>
|
||
<div class="line"><a name="l17338"></a><span class="lineno">17338</span>  </div>
|
||
<div class="line"><a name="l17366"></a><span class="lineno">17366</span>  <span class="keyword">template</span><<span class="keyword">typename</span> PointerType, <span class="keyword">typename</span> std::enable_if<</div>
|
||
<div class="line"><a name="l17367"></a><span class="lineno">17367</span>  std::is_pointer<PointerType>::value, <span class="keywordtype">int</span>><a class="code" href="classnlohmann_1_1basic__json.html#a2b2d781d7f2a4ee41bc0016e931cadf7">::type</a> = 0></div>
|
||
<div class="line"><a name="l17368"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a44516cba796e50ce5d62c9d6b7ab4c1d">17368</a></span>  <span class="keyword">auto</span> <a class="code" href="classnlohmann_1_1basic__json.html#a44516cba796e50ce5d62c9d6b7ab4c1d">get</a>() noexcept -> decltype(<a class="code" href="namespacestd.html">std</a>::declval<basic_json_t&>().template <a class="code" href="classnlohmann_1_1basic__json.html#abefbb319df8ed4f8705b4fd4e4dc731c">get_ptr</a><PointerType>())</div>
|
||
<div class="line"><a name="l17369"></a><span class="lineno">17369</span>  {</div>
|
||
<div class="line"><a name="l17370"></a><span class="lineno">17370</span>  <span class="comment">// delegate the call to get_ptr</span></div>
|
||
<div class="line"><a name="l17371"></a><span class="lineno">17371</span>  <span class="keywordflow">return</span> get_ptr<PointerType>();</div>
|
||
<div class="line"><a name="l17372"></a><span class="lineno">17372</span>  }</div>
|
||
<div class="line"><a name="l17373"></a><span class="lineno">17373</span>  </div>
|
||
<div class="line"><a name="l17378"></a><span class="lineno">17378</span>  <span class="keyword">template</span><<span class="keyword">typename</span> PointerType, <span class="keyword">typename</span> std::enable_if<</div>
|
||
<div class="line"><a name="l17379"></a><span class="lineno">17379</span>  std::is_pointer<PointerType>::value, <span class="keywordtype">int</span>><a class="code" href="classnlohmann_1_1basic__json.html#a2b2d781d7f2a4ee41bc0016e931cadf7">::type</a> = 0></div>
|
||
<div class="line"><a name="l17380"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#ad6b0b151621542e5d135812b8c163222">17380</a></span>  constexpr <span class="keyword">auto</span> <a class="code" href="classnlohmann_1_1basic__json.html#ad6b0b151621542e5d135812b8c163222">get</a>() const noexcept -> decltype(<a class="code" href="namespacestd.html">std</a>::declval<const basic_json_t&>().template <a class="code" href="classnlohmann_1_1basic__json.html#abefbb319df8ed4f8705b4fd4e4dc731c">get_ptr</a><PointerType>())</div>
|
||
<div class="line"><a name="l17381"></a><span class="lineno">17381</span>  {</div>
|
||
<div class="line"><a name="l17382"></a><span class="lineno">17382</span>  <span class="comment">// delegate the call to get_ptr</span></div>
|
||
<div class="line"><a name="l17383"></a><span class="lineno">17383</span>  <span class="keywordflow">return</span> get_ptr<PointerType>();</div>
|
||
<div class="line"><a name="l17384"></a><span class="lineno">17384</span>  }</div>
|
||
<div class="line"><a name="l17385"></a><span class="lineno">17385</span>  </div>
|
||
<div class="line"><a name="l17412"></a><span class="lineno">17412</span>  <span class="keyword">template</span><<span class="keyword">typename</span> ReferenceType, <span class="keyword">typename</span> std::enable_if<</div>
|
||
<div class="line"><a name="l17413"></a><span class="lineno">17413</span>  std::is_reference<ReferenceType>::value, <span class="keywordtype">int</span>><a class="code" href="classnlohmann_1_1basic__json.html#a2b2d781d7f2a4ee41bc0016e931cadf7">::type</a> = 0></div>
|
||
<div class="line"><a name="l17414"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#afbd800010b67619463c0fce6e74f7878">17414</a></span>  ReferenceType <a class="code" href="classnlohmann_1_1basic__json.html#afbd800010b67619463c0fce6e74f7878">get_ref</a>()</div>
|
||
<div class="line"><a name="l17415"></a><span class="lineno">17415</span>  {</div>
|
||
<div class="line"><a name="l17416"></a><span class="lineno">17416</span>  <span class="comment">// delegate call to get_ref_impl</span></div>
|
||
<div class="line"><a name="l17417"></a><span class="lineno">17417</span>  <span class="keywordflow">return</span> get_ref_impl<ReferenceType>(*<span class="keyword">this</span>);</div>
|
||
<div class="line"><a name="l17418"></a><span class="lineno">17418</span>  }</div>
|
||
<div class="line"><a name="l17419"></a><span class="lineno">17419</span>  </div>
|
||
<div class="line"><a name="l17424"></a><span class="lineno">17424</span>  <span class="keyword">template</span><<span class="keyword">typename</span> ReferenceType, <span class="keyword">typename</span> std::enable_if<</div>
|
||
<div class="line"><a name="l17425"></a><span class="lineno">17425</span>  std::is_reference<ReferenceType>::value and</div>
|
||
<div class="line"><a name="l17426"></a><span class="lineno">17426</span>  std::is_const<typename std::remove_reference<ReferenceType>::type><a class="code" href="classnlohmann_1_1basic__json.html#adcf8ca5079f5db993820bf50036bf45d">::value</a>, <span class="keywordtype">int</span>><a class="code" href="classnlohmann_1_1basic__json.html#a2b2d781d7f2a4ee41bc0016e931cadf7">::type</a> = 0></div>
|
||
<div class="line"><a name="l17427"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#ac382f3d2bc6a5d52d936e4e40593f03b">17427</a></span>  ReferenceType <a class="code" href="classnlohmann_1_1basic__json.html#ac382f3d2bc6a5d52d936e4e40593f03b">get_ref</a>()<span class="keyword"> const</span></div>
|
||
<div class="line"><a name="l17428"></a><span class="lineno">17428</span> <span class="keyword"> </span>{</div>
|
||
<div class="line"><a name="l17429"></a><span class="lineno">17429</span>  <span class="comment">// delegate call to get_ref_impl</span></div>
|
||
<div class="line"><a name="l17430"></a><span class="lineno">17430</span>  <span class="keywordflow">return</span> get_ref_impl<ReferenceType>(*<span class="keyword">this</span>);</div>
|
||
<div class="line"><a name="l17431"></a><span class="lineno">17431</span>  }</div>
|
||
<div class="line"><a name="l17432"></a><span class="lineno">17432</span>  </div>
|
||
<div class="line"><a name="l17462"></a><span class="lineno">17462</span>  <span class="keyword">template</span> < <span class="keyword">typename</span> ValueType, <span class="keyword">typename</span> std::enable_if <</div>
|
||
<div class="line"><a name="l17463"></a><span class="lineno">17463</span>  not std::is_pointer<ValueType>::value and</div>
|
||
<div class="line"><a name="l17464"></a><span class="lineno">17464</span>  not std::is_same<ValueType, detail::json_ref<basic_json>><a class="code" href="classnlohmann_1_1basic__json.html#adcf8ca5079f5db993820bf50036bf45d">::value</a> and</div>
|
||
<div class="line"><a name="l17465"></a><span class="lineno">17465</span>  not std::is_same<ValueType, typename string_t::value_type>::value and</div>
|
||
<div class="line"><a name="l17466"></a><span class="lineno">17466</span>  not <a class="code" href="structnlohmann_1_1detail_1_1is__basic__json.html">detail::is_basic_json<ValueType>::value</a></div>
|
||
<div class="line"><a name="l17467"></a><span class="lineno">17467</span>  </div>
|
||
<div class="line"><a name="l17468"></a><span class="lineno">17468</span> <span class="preprocessor">#ifndef _MSC_VER // fix for issue #167 operator<< ambiguity under VS2015</span></div>
|
||
<div class="line"><a name="l17469"></a><span class="lineno">17469</span>  and not std::is_same<ValueType, std::initializer_list<typename string_t::value_type>><a class="code" href="classnlohmann_1_1basic__json.html#adcf8ca5079f5db993820bf50036bf45d">::value</a></div>
|
||
<div class="line"><a name="l17470"></a><span class="lineno">17470</span> <span class="preprocessor">#if defined(JSON_HAS_CPP_17) && (defined(__GNUC__) || (defined(_MSC_VER) and _MSC_VER <= 1914))</span></div>
|
||
<div class="line"><a name="l17471"></a><span class="lineno">17471</span>  and not std::is_same<ValueType, typename std::string_view>::value</div>
|
||
<div class="line"><a name="l17472"></a><span class="lineno">17472</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l17473"></a><span class="lineno">17473</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l17474"></a><span class="lineno">17474</span>  and <a class="code" href="namespacenlohmann_1_1detail.html#a9135fcf616d6ac6e231a86e0a055ac44">detail::is_detected<detail::get_template_function, const basic_json_t&, ValueType>::value</a></div>
|
||
<div class="line"><a name="l17475"></a><span class="lineno">17475</span>  , <span class="keywordtype">int</span> ><a class="code" href="classnlohmann_1_1basic__json.html#a2b2d781d7f2a4ee41bc0016e931cadf7">::type</a> = 0 ></div>
|
||
<div class="line"><a name="l17476"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a1f1d4bc973c5b866db3d96e14d2c9f3f">17476</a></span>  <span class="keyword">operator</span> ValueType()<span class="keyword"> const</span></div>
|
||
<div class="line"><a name="l17477"></a><span class="lineno">17477</span> <span class="keyword"> </span>{</div>
|
||
<div class="line"><a name="l17478"></a><span class="lineno">17478</span>  <span class="comment">// delegate the call to get<>() const</span></div>
|
||
<div class="line"><a name="l17479"></a><span class="lineno">17479</span>  <span class="keywordflow">return</span> get<ValueType>();</div>
|
||
<div class="line"><a name="l17480"></a><span class="lineno">17480</span>  }</div>
|
||
<div class="line"><a name="l17481"></a><span class="lineno">17481</span>  </div>
|
||
<div class="line"><a name="l17483"></a><span class="lineno">17483</span>  </div>
|
||
<div class="line"><a name="l17484"></a><span class="lineno">17484</span>  </div>
|
||
<div class="line"><a name="l17486"></a><span class="lineno">17486</span>  <span class="comment">// element access //</span></div>
|
||
<div class="line"><a name="l17488"></a><span class="lineno">17488</span> <span class="comment"></span> </div>
|
||
<div class="line"><a name="l17492"></a><span class="lineno">17492</span>  </div>
|
||
<div class="line"><a name="l17519"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a73ae333487310e3302135189ce8ff5d8">17519</a></span>  <a class="code" href="classnlohmann_1_1basic__json.html">reference</a> <a class="code" href="classnlohmann_1_1basic__json.html#a73ae333487310e3302135189ce8ff5d8">at</a>(<a class="code" href="classnlohmann_1_1basic__json.html#a39f2cd0b58106097e0e67bf185cc519b">size_type</a> idx)</div>
|
||
<div class="line"><a name="l17520"></a><span class="lineno">17520</span>  {</div>
|
||
<div class="line"><a name="l17521"></a><span class="lineno">17521</span>  <span class="comment">// at only works for arrays</span></div>
|
||
<div class="line"><a name="l17522"></a><span class="lineno">17522</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a355f2770653ff7bdd5c74b204b5a3ad0">JSON_HEDLEY_LIKELY</a>(<a class="code" href="classnlohmann_1_1basic__json.html#aef9ce5dd2381caee1f8ddcdb5bdd9c65">is_array</a>()))</div>
|
||
<div class="line"><a name="l17523"></a><span class="lineno">17523</span>  {</div>
|
||
<div class="line"><a name="l17524"></a><span class="lineno">17524</span>  <a class="code" href="json_8hpp.html#a985d3b82445302c57257f6432f261fe9">JSON_TRY</a></div>
|
||
<div class="line"><a name="l17525"></a><span class="lineno">17525</span>  {</div>
|
||
<div class="line"><a name="l17526"></a><span class="lineno">17526</span>  <span class="keywordflow">return</span> m_value.array->at(idx);</div>
|
||
<div class="line"><a name="l17527"></a><span class="lineno">17527</span>  }</div>
|
||
<div class="line"><a name="l17528"></a><span class="lineno">17528</span>  <a class="code" href="json_8hpp.html#a6954bec49ed2a2dfb938c1131c82740a">JSON_CATCH</a> (std::out_of_range&)</div>
|
||
<div class="line"><a name="l17529"></a><span class="lineno">17529</span>  {</div>
|
||
<div class="line"><a name="l17530"></a><span class="lineno">17530</span>  <span class="comment">// create better exception explanation</span></div>
|
||
<div class="line"><a name="l17531"></a><span class="lineno">17531</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1out__of__range.html#a3f6d82a6f967c4728a1ec735a7867073">out_of_range::create</a>(401, <span class="stringliteral">"array index "</span> + <a class="code" href="namespacenlohmann.html#a6ce645a0b8717757e096a5b5773b7a16">std::to_string</a>(idx) + <span class="stringliteral">" is out of range"</span>));</div>
|
||
<div class="line"><a name="l17532"></a><span class="lineno">17532</span>  }</div>
|
||
<div class="line"><a name="l17533"></a><span class="lineno">17533</span>  }</div>
|
||
<div class="line"><a name="l17534"></a><span class="lineno">17534</span>  <span class="keywordflow">else</span></div>
|
||
<div class="line"><a name="l17535"></a><span class="lineno">17535</span>  {</div>
|
||
<div class="line"><a name="l17536"></a><span class="lineno">17536</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(304, <span class="stringliteral">"cannot use at() with "</span> + std::string(<a class="code" href="classnlohmann_1_1basic__json.html#ad14563c53cf7ca9189bc164082367bf3">type_name</a>())));</div>
|
||
<div class="line"><a name="l17537"></a><span class="lineno">17537</span>  }</div>
|
||
<div class="line"><a name="l17538"></a><span class="lineno">17538</span>  }</div>
|
||
<div class="line"><a name="l17539"></a><span class="lineno">17539</span>  </div>
|
||
<div class="line"><a name="l17566"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#ab157adb4de8475b452da9ebf04f2de15">17566</a></span>  <a class="code" href="classnlohmann_1_1basic__json.html">const_reference</a> <a class="code" href="classnlohmann_1_1basic__json.html#ab157adb4de8475b452da9ebf04f2de15">at</a>(<a class="code" href="classnlohmann_1_1basic__json.html#a39f2cd0b58106097e0e67bf185cc519b">size_type</a> idx)<span class="keyword"> const</span></div>
|
||
<div class="line"><a name="l17567"></a><span class="lineno">17567</span> <span class="keyword"> </span>{</div>
|
||
<div class="line"><a name="l17568"></a><span class="lineno">17568</span>  <span class="comment">// at only works for arrays</span></div>
|
||
<div class="line"><a name="l17569"></a><span class="lineno">17569</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a355f2770653ff7bdd5c74b204b5a3ad0">JSON_HEDLEY_LIKELY</a>(<a class="code" href="classnlohmann_1_1basic__json.html#aef9ce5dd2381caee1f8ddcdb5bdd9c65">is_array</a>()))</div>
|
||
<div class="line"><a name="l17570"></a><span class="lineno">17570</span>  {</div>
|
||
<div class="line"><a name="l17571"></a><span class="lineno">17571</span>  <a class="code" href="json_8hpp.html#a985d3b82445302c57257f6432f261fe9">JSON_TRY</a></div>
|
||
<div class="line"><a name="l17572"></a><span class="lineno">17572</span>  {</div>
|
||
<div class="line"><a name="l17573"></a><span class="lineno">17573</span>  <span class="keywordflow">return</span> m_value.array->at(idx);</div>
|
||
<div class="line"><a name="l17574"></a><span class="lineno">17574</span>  }</div>
|
||
<div class="line"><a name="l17575"></a><span class="lineno">17575</span>  <a class="code" href="json_8hpp.html#a6954bec49ed2a2dfb938c1131c82740a">JSON_CATCH</a> (std::out_of_range&)</div>
|
||
<div class="line"><a name="l17576"></a><span class="lineno">17576</span>  {</div>
|
||
<div class="line"><a name="l17577"></a><span class="lineno">17577</span>  <span class="comment">// create better exception explanation</span></div>
|
||
<div class="line"><a name="l17578"></a><span class="lineno">17578</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1out__of__range.html#a3f6d82a6f967c4728a1ec735a7867073">out_of_range::create</a>(401, <span class="stringliteral">"array index "</span> + <a class="code" href="namespacenlohmann.html#a6ce645a0b8717757e096a5b5773b7a16">std::to_string</a>(idx) + <span class="stringliteral">" is out of range"</span>));</div>
|
||
<div class="line"><a name="l17579"></a><span class="lineno">17579</span>  }</div>
|
||
<div class="line"><a name="l17580"></a><span class="lineno">17580</span>  }</div>
|
||
<div class="line"><a name="l17581"></a><span class="lineno">17581</span>  <span class="keywordflow">else</span></div>
|
||
<div class="line"><a name="l17582"></a><span class="lineno">17582</span>  {</div>
|
||
<div class="line"><a name="l17583"></a><span class="lineno">17583</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(304, <span class="stringliteral">"cannot use at() with "</span> + std::string(<a class="code" href="classnlohmann_1_1basic__json.html#ad14563c53cf7ca9189bc164082367bf3">type_name</a>())));</div>
|
||
<div class="line"><a name="l17584"></a><span class="lineno">17584</span>  }</div>
|
||
<div class="line"><a name="l17585"></a><span class="lineno">17585</span>  }</div>
|
||
<div class="line"><a name="l17586"></a><span class="lineno">17586</span>  </div>
|
||
<div class="line"><a name="l17617"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a93403e803947b86f4da2d1fb3345cf2c">17617</a></span>  <a class="code" href="classnlohmann_1_1basic__json.html">reference</a> <a class="code" href="classnlohmann_1_1basic__json.html#a93403e803947b86f4da2d1fb3345cf2c">at</a>(<span class="keyword">const</span> <span class="keyword">typename</span> object_t::key_type& key)</div>
|
||
<div class="line"><a name="l17618"></a><span class="lineno">17618</span>  {</div>
|
||
<div class="line"><a name="l17619"></a><span class="lineno">17619</span>  <span class="comment">// at only works for objects</span></div>
|
||
<div class="line"><a name="l17620"></a><span class="lineno">17620</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a355f2770653ff7bdd5c74b204b5a3ad0">JSON_HEDLEY_LIKELY</a>(<a class="code" href="classnlohmann_1_1basic__json.html#af8f511af124e82e4579f444b4175787c">is_object</a>()))</div>
|
||
<div class="line"><a name="l17621"></a><span class="lineno">17621</span>  {</div>
|
||
<div class="line"><a name="l17622"></a><span class="lineno">17622</span>  <a class="code" href="json_8hpp.html#a985d3b82445302c57257f6432f261fe9">JSON_TRY</a></div>
|
||
<div class="line"><a name="l17623"></a><span class="lineno">17623</span>  {</div>
|
||
<div class="line"><a name="l17624"></a><span class="lineno">17624</span>  <span class="keywordflow">return</span> m_value.object->at(key);</div>
|
||
<div class="line"><a name="l17625"></a><span class="lineno">17625</span>  }</div>
|
||
<div class="line"><a name="l17626"></a><span class="lineno">17626</span>  <a class="code" href="json_8hpp.html#a6954bec49ed2a2dfb938c1131c82740a">JSON_CATCH</a> (std::out_of_range&)</div>
|
||
<div class="line"><a name="l17627"></a><span class="lineno">17627</span>  {</div>
|
||
<div class="line"><a name="l17628"></a><span class="lineno">17628</span>  <span class="comment">// create better exception explanation</span></div>
|
||
<div class="line"><a name="l17629"></a><span class="lineno">17629</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1out__of__range.html#a3f6d82a6f967c4728a1ec735a7867073">out_of_range::create</a>(403, <span class="stringliteral">"key '"</span> + key + <span class="stringliteral">"' not found"</span>));</div>
|
||
<div class="line"><a name="l17630"></a><span class="lineno">17630</span>  }</div>
|
||
<div class="line"><a name="l17631"></a><span class="lineno">17631</span>  }</div>
|
||
<div class="line"><a name="l17632"></a><span class="lineno">17632</span>  <span class="keywordflow">else</span></div>
|
||
<div class="line"><a name="l17633"></a><span class="lineno">17633</span>  {</div>
|
||
<div class="line"><a name="l17634"></a><span class="lineno">17634</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(304, <span class="stringliteral">"cannot use at() with "</span> + std::string(<a class="code" href="classnlohmann_1_1basic__json.html#ad14563c53cf7ca9189bc164082367bf3">type_name</a>())));</div>
|
||
<div class="line"><a name="l17635"></a><span class="lineno">17635</span>  }</div>
|
||
<div class="line"><a name="l17636"></a><span class="lineno">17636</span>  }</div>
|
||
<div class="line"><a name="l17637"></a><span class="lineno">17637</span>  </div>
|
||
<div class="line"><a name="l17668"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#acac9d438c9bb12740dcdb01069293a34">17668</a></span>  <a class="code" href="classnlohmann_1_1basic__json.html">const_reference</a> <a class="code" href="classnlohmann_1_1basic__json.html#acac9d438c9bb12740dcdb01069293a34">at</a>(<span class="keyword">const</span> <span class="keyword">typename</span> object_t::key_type& key)<span class="keyword"> const</span></div>
|
||
<div class="line"><a name="l17669"></a><span class="lineno">17669</span> <span class="keyword"> </span>{</div>
|
||
<div class="line"><a name="l17670"></a><span class="lineno">17670</span>  <span class="comment">// at only works for objects</span></div>
|
||
<div class="line"><a name="l17671"></a><span class="lineno">17671</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a355f2770653ff7bdd5c74b204b5a3ad0">JSON_HEDLEY_LIKELY</a>(<a class="code" href="classnlohmann_1_1basic__json.html#af8f511af124e82e4579f444b4175787c">is_object</a>()))</div>
|
||
<div class="line"><a name="l17672"></a><span class="lineno">17672</span>  {</div>
|
||
<div class="line"><a name="l17673"></a><span class="lineno">17673</span>  <a class="code" href="json_8hpp.html#a985d3b82445302c57257f6432f261fe9">JSON_TRY</a></div>
|
||
<div class="line"><a name="l17674"></a><span class="lineno">17674</span>  {</div>
|
||
<div class="line"><a name="l17675"></a><span class="lineno">17675</span>  <span class="keywordflow">return</span> m_value.object->at(key);</div>
|
||
<div class="line"><a name="l17676"></a><span class="lineno">17676</span>  }</div>
|
||
<div class="line"><a name="l17677"></a><span class="lineno">17677</span>  <a class="code" href="json_8hpp.html#a6954bec49ed2a2dfb938c1131c82740a">JSON_CATCH</a> (std::out_of_range&)</div>
|
||
<div class="line"><a name="l17678"></a><span class="lineno">17678</span>  {</div>
|
||
<div class="line"><a name="l17679"></a><span class="lineno">17679</span>  <span class="comment">// create better exception explanation</span></div>
|
||
<div class="line"><a name="l17680"></a><span class="lineno">17680</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1out__of__range.html#a3f6d82a6f967c4728a1ec735a7867073">out_of_range::create</a>(403, <span class="stringliteral">"key '"</span> + key + <span class="stringliteral">"' not found"</span>));</div>
|
||
<div class="line"><a name="l17681"></a><span class="lineno">17681</span>  }</div>
|
||
<div class="line"><a name="l17682"></a><span class="lineno">17682</span>  }</div>
|
||
<div class="line"><a name="l17683"></a><span class="lineno">17683</span>  <span class="keywordflow">else</span></div>
|
||
<div class="line"><a name="l17684"></a><span class="lineno">17684</span>  {</div>
|
||
<div class="line"><a name="l17685"></a><span class="lineno">17685</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(304, <span class="stringliteral">"cannot use at() with "</span> + std::string(<a class="code" href="classnlohmann_1_1basic__json.html#ad14563c53cf7ca9189bc164082367bf3">type_name</a>())));</div>
|
||
<div class="line"><a name="l17686"></a><span class="lineno">17686</span>  }</div>
|
||
<div class="line"><a name="l17687"></a><span class="lineno">17687</span>  }</div>
|
||
<div class="line"><a name="l17688"></a><span class="lineno">17688</span>  </div>
|
||
<div class="line"><a name="l17714"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#ac871e3b03fb2eeca9a8de4db2bea760f">17714</a></span>  <a class="code" href="classnlohmann_1_1basic__json.html">reference</a> <a class="code" href="classnlohmann_1_1basic__json.html#ac871e3b03fb2eeca9a8de4db2bea760f">operator[]</a>(<a class="code" href="classnlohmann_1_1basic__json.html#a39f2cd0b58106097e0e67bf185cc519b">size_type</a> idx)</div>
|
||
<div class="line"><a name="l17715"></a><span class="lineno">17715</span>  {</div>
|
||
<div class="line"><a name="l17716"></a><span class="lineno">17716</span>  <span class="comment">// implicitly convert null value to an empty array</span></div>
|
||
<div class="line"><a name="l17717"></a><span class="lineno">17717</span>  <span class="keywordflow">if</span> (<a class="code" href="classnlohmann_1_1basic__json.html#a8faa039ca82427ed29c486ffd00600c3">is_null</a>())</div>
|
||
<div class="line"><a name="l17718"></a><span class="lineno">17718</span>  {</div>
|
||
<div class="line"><a name="l17719"></a><span class="lineno">17719</span>  m_type = <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>;</div>
|
||
<div class="line"><a name="l17720"></a><span class="lineno">17720</span>  m_value.array = create<array_t>();</div>
|
||
<div class="line"><a name="l17721"></a><span class="lineno">17721</span>  assert_invariant();</div>
|
||
<div class="line"><a name="l17722"></a><span class="lineno">17722</span>  }</div>
|
||
<div class="line"><a name="l17723"></a><span class="lineno">17723</span>  </div>
|
||
<div class="line"><a name="l17724"></a><span class="lineno">17724</span>  <span class="comment">// operator[] only works for arrays</span></div>
|
||
<div class="line"><a name="l17725"></a><span class="lineno">17725</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a355f2770653ff7bdd5c74b204b5a3ad0">JSON_HEDLEY_LIKELY</a>(<a class="code" href="classnlohmann_1_1basic__json.html#aef9ce5dd2381caee1f8ddcdb5bdd9c65">is_array</a>()))</div>
|
||
<div class="line"><a name="l17726"></a><span class="lineno">17726</span>  {</div>
|
||
<div class="line"><a name="l17727"></a><span class="lineno">17727</span>  <span class="comment">// fill up array with null values if given idx is outside range</span></div>
|
||
<div class="line"><a name="l17728"></a><span class="lineno">17728</span>  <span class="keywordflow">if</span> (idx >= m_value.array->size())</div>
|
||
<div class="line"><a name="l17729"></a><span class="lineno">17729</span>  {</div>
|
||
<div class="line"><a name="l17730"></a><span class="lineno">17730</span>  m_value.array->insert(m_value.array->end(),</div>
|
||
<div class="line"><a name="l17731"></a><span class="lineno">17731</span>  idx - m_value.array->size() + 1,</div>
|
||
<div class="line"><a name="l17732"></a><span class="lineno">17732</span>  <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a>());</div>
|
||
<div class="line"><a name="l17733"></a><span class="lineno">17733</span>  }</div>
|
||
<div class="line"><a name="l17734"></a><span class="lineno">17734</span>  </div>
|
||
<div class="line"><a name="l17735"></a><span class="lineno">17735</span>  <span class="keywordflow">return</span> m_value.array->operator[](idx);</div>
|
||
<div class="line"><a name="l17736"></a><span class="lineno">17736</span>  }</div>
|
||
<div class="line"><a name="l17737"></a><span class="lineno">17737</span>  </div>
|
||
<div class="line"><a name="l17738"></a><span class="lineno">17738</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(305, <span class="stringliteral">"cannot use operator[] with a numeric argument with "</span> + std::string(<a class="code" href="classnlohmann_1_1basic__json.html#ad14563c53cf7ca9189bc164082367bf3">type_name</a>())));</div>
|
||
<div class="line"><a name="l17739"></a><span class="lineno">17739</span>  }</div>
|
||
<div class="line"><a name="l17740"></a><span class="lineno">17740</span>  </div>
|
||
<div class="line"><a name="l17760"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a9cb592cd85c14f3e845e30d51cf17efb">17760</a></span>  <a class="code" href="classnlohmann_1_1basic__json.html">const_reference</a> <a class="code" href="classnlohmann_1_1basic__json.html#a9cb592cd85c14f3e845e30d51cf17efb">operator[]</a>(<a class="code" href="classnlohmann_1_1basic__json.html#a39f2cd0b58106097e0e67bf185cc519b">size_type</a> idx)<span class="keyword"> const</span></div>
|
||
<div class="line"><a name="l17761"></a><span class="lineno">17761</span> <span class="keyword"> </span>{</div>
|
||
<div class="line"><a name="l17762"></a><span class="lineno">17762</span>  <span class="comment">// const operator[] only works for arrays</span></div>
|
||
<div class="line"><a name="l17763"></a><span class="lineno">17763</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a355f2770653ff7bdd5c74b204b5a3ad0">JSON_HEDLEY_LIKELY</a>(<a class="code" href="classnlohmann_1_1basic__json.html#aef9ce5dd2381caee1f8ddcdb5bdd9c65">is_array</a>()))</div>
|
||
<div class="line"><a name="l17764"></a><span class="lineno">17764</span>  {</div>
|
||
<div class="line"><a name="l17765"></a><span class="lineno">17765</span>  <span class="keywordflow">return</span> m_value.array->operator[](idx);</div>
|
||
<div class="line"><a name="l17766"></a><span class="lineno">17766</span>  }</div>
|
||
<div class="line"><a name="l17767"></a><span class="lineno">17767</span>  </div>
|
||
<div class="line"><a name="l17768"></a><span class="lineno">17768</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(305, <span class="stringliteral">"cannot use operator[] with a numeric argument with "</span> + std::string(<a class="code" href="classnlohmann_1_1basic__json.html#ad14563c53cf7ca9189bc164082367bf3">type_name</a>())));</div>
|
||
<div class="line"><a name="l17769"></a><span class="lineno">17769</span>  }</div>
|
||
<div class="line"><a name="l17770"></a><span class="lineno">17770</span>  </div>
|
||
<div class="line"><a name="l17798"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a233b02b0839ef798942dd46157cc0fe6">17798</a></span>  <a class="code" href="classnlohmann_1_1basic__json.html">reference</a> <a class="code" href="classnlohmann_1_1basic__json.html#a233b02b0839ef798942dd46157cc0fe6">operator[]</a>(<span class="keyword">const</span> <span class="keyword">typename</span> object_t::key_type& key)</div>
|
||
<div class="line"><a name="l17799"></a><span class="lineno">17799</span>  {</div>
|
||
<div class="line"><a name="l17800"></a><span class="lineno">17800</span>  <span class="comment">// implicitly convert null value to an empty object</span></div>
|
||
<div class="line"><a name="l17801"></a><span class="lineno">17801</span>  <span class="keywordflow">if</span> (<a class="code" href="classnlohmann_1_1basic__json.html#a8faa039ca82427ed29c486ffd00600c3">is_null</a>())</div>
|
||
<div class="line"><a name="l17802"></a><span class="lineno">17802</span>  {</div>
|
||
<div class="line"><a name="l17803"></a><span class="lineno">17803</span>  m_type = <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>;</div>
|
||
<div class="line"><a name="l17804"></a><span class="lineno">17804</span>  m_value.object = create<object_t>();</div>
|
||
<div class="line"><a name="l17805"></a><span class="lineno">17805</span>  assert_invariant();</div>
|
||
<div class="line"><a name="l17806"></a><span class="lineno">17806</span>  }</div>
|
||
<div class="line"><a name="l17807"></a><span class="lineno">17807</span>  </div>
|
||
<div class="line"><a name="l17808"></a><span class="lineno">17808</span>  <span class="comment">// operator[] only works for objects</span></div>
|
||
<div class="line"><a name="l17809"></a><span class="lineno">17809</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a355f2770653ff7bdd5c74b204b5a3ad0">JSON_HEDLEY_LIKELY</a>(<a class="code" href="classnlohmann_1_1basic__json.html#af8f511af124e82e4579f444b4175787c">is_object</a>()))</div>
|
||
<div class="line"><a name="l17810"></a><span class="lineno">17810</span>  {</div>
|
||
<div class="line"><a name="l17811"></a><span class="lineno">17811</span>  <span class="keywordflow">return</span> m_value.object->operator[](key);</div>
|
||
<div class="line"><a name="l17812"></a><span class="lineno">17812</span>  }</div>
|
||
<div class="line"><a name="l17813"></a><span class="lineno">17813</span>  </div>
|
||
<div class="line"><a name="l17814"></a><span class="lineno">17814</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(305, <span class="stringliteral">"cannot use operator[] with a string argument with "</span> + std::string(<a class="code" href="classnlohmann_1_1basic__json.html#ad14563c53cf7ca9189bc164082367bf3">type_name</a>())));</div>
|
||
<div class="line"><a name="l17815"></a><span class="lineno">17815</span>  }</div>
|
||
<div class="line"><a name="l17816"></a><span class="lineno">17816</span>  </div>
|
||
<div class="line"><a name="l17847"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#ab2318780e5ae692039e816b6ac32c91e">17847</a></span>  <a class="code" href="classnlohmann_1_1basic__json.html">const_reference</a> <a class="code" href="classnlohmann_1_1basic__json.html#ab2318780e5ae692039e816b6ac32c91e">operator[]</a>(<span class="keyword">const</span> <span class="keyword">typename</span> object_t::key_type& key)<span class="keyword"> const</span></div>
|
||
<div class="line"><a name="l17848"></a><span class="lineno">17848</span> <span class="keyword"> </span>{</div>
|
||
<div class="line"><a name="l17849"></a><span class="lineno">17849</span>  <span class="comment">// const operator[] only works for objects</span></div>
|
||
<div class="line"><a name="l17850"></a><span class="lineno">17850</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a355f2770653ff7bdd5c74b204b5a3ad0">JSON_HEDLEY_LIKELY</a>(<a class="code" href="classnlohmann_1_1basic__json.html#af8f511af124e82e4579f444b4175787c">is_object</a>()))</div>
|
||
<div class="line"><a name="l17851"></a><span class="lineno">17851</span>  {</div>
|
||
<div class="line"><a name="l17852"></a><span class="lineno">17852</span>  assert(m_value.object->find(key) != m_value.object->end());</div>
|
||
<div class="line"><a name="l17853"></a><span class="lineno">17853</span>  <span class="keywordflow">return</span> m_value.object->find(key)->second;</div>
|
||
<div class="line"><a name="l17854"></a><span class="lineno">17854</span>  }</div>
|
||
<div class="line"><a name="l17855"></a><span class="lineno">17855</span>  </div>
|
||
<div class="line"><a name="l17856"></a><span class="lineno">17856</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(305, <span class="stringliteral">"cannot use operator[] with a string argument with "</span> + std::string(<a class="code" href="classnlohmann_1_1basic__json.html#ad14563c53cf7ca9189bc164082367bf3">type_name</a>())));</div>
|
||
<div class="line"><a name="l17857"></a><span class="lineno">17857</span>  }</div>
|
||
<div class="line"><a name="l17858"></a><span class="lineno">17858</span>  </div>
|
||
<div class="line"><a name="l17886"></a><span class="lineno">17886</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T></div>
|
||
<div class="line"><a name="l17887"></a><span class="lineno">17887</span>  <a class="code" href="json_8hpp.html#a5338981b5ad9027c9e54b1c5597f4344">JSON_HEDLEY_NON_NULL</a>(2)</div>
|
||
<div class="line"><a name="l17888"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#abb8eaa633584b5aff9c8fcd242f25ca8">17888</a></span>  <a class="code" href="classnlohmann_1_1basic__json.html">reference</a> operator[](T* key)</div>
|
||
<div class="line"><a name="l17889"></a><span class="lineno">17889</span>  {</div>
|
||
<div class="line"><a name="l17890"></a><span class="lineno">17890</span>  <span class="comment">// implicitly convert null to object</span></div>
|
||
<div class="line"><a name="l17891"></a><span class="lineno">17891</span>  <span class="keywordflow">if</span> (<a class="code" href="classnlohmann_1_1basic__json.html#a8faa039ca82427ed29c486ffd00600c3">is_null</a>())</div>
|
||
<div class="line"><a name="l17892"></a><span class="lineno">17892</span>  {</div>
|
||
<div class="line"><a name="l17893"></a><span class="lineno">17893</span>  m_type = <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>;</div>
|
||
<div class="line"><a name="l17894"></a><span class="lineno">17894</span>  m_value = <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>;</div>
|
||
<div class="line"><a name="l17895"></a><span class="lineno">17895</span>  assert_invariant();</div>
|
||
<div class="line"><a name="l17896"></a><span class="lineno">17896</span>  }</div>
|
||
<div class="line"><a name="l17897"></a><span class="lineno">17897</span>  </div>
|
||
<div class="line"><a name="l17898"></a><span class="lineno">17898</span>  <span class="comment">// at only works for objects</span></div>
|
||
<div class="line"><a name="l17899"></a><span class="lineno">17899</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a355f2770653ff7bdd5c74b204b5a3ad0">JSON_HEDLEY_LIKELY</a>(<a class="code" href="classnlohmann_1_1basic__json.html#af8f511af124e82e4579f444b4175787c">is_object</a>()))</div>
|
||
<div class="line"><a name="l17900"></a><span class="lineno">17900</span>  {</div>
|
||
<div class="line"><a name="l17901"></a><span class="lineno">17901</span>  <span class="keywordflow">return</span> m_value.object->operator[](key);</div>
|
||
<div class="line"><a name="l17902"></a><span class="lineno">17902</span>  }</div>
|
||
<div class="line"><a name="l17903"></a><span class="lineno">17903</span>  </div>
|
||
<div class="line"><a name="l17904"></a><span class="lineno">17904</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(305, <span class="stringliteral">"cannot use operator[] with a string argument with "</span> + std::string(<a class="code" href="classnlohmann_1_1basic__json.html#ad14563c53cf7ca9189bc164082367bf3">type_name</a>())));</div>
|
||
<div class="line"><a name="l17905"></a><span class="lineno">17905</span>  }</div>
|
||
<div class="line"><a name="l17906"></a><span class="lineno">17906</span>  </div>
|
||
<div class="line"><a name="l17937"></a><span class="lineno">17937</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T></div>
|
||
<div class="line"><a name="l17938"></a><span class="lineno">17938</span>  <a class="code" href="json_8hpp.html#a5338981b5ad9027c9e54b1c5597f4344">JSON_HEDLEY_NON_NULL</a>(2)</div>
|
||
<div class="line"><a name="l17939"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a26554213cbb1722accc460ce348c860a">17939</a></span>  <a class="code" href="classnlohmann_1_1basic__json.html">const_reference</a> operator[](T* key)<span class="keyword"> const</span></div>
|
||
<div class="line"><a name="l17940"></a><span class="lineno">17940</span> <span class="keyword"> </span>{</div>
|
||
<div class="line"><a name="l17941"></a><span class="lineno">17941</span>  <span class="comment">// at only works for objects</span></div>
|
||
<div class="line"><a name="l17942"></a><span class="lineno">17942</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a355f2770653ff7bdd5c74b204b5a3ad0">JSON_HEDLEY_LIKELY</a>(<a class="code" href="classnlohmann_1_1basic__json.html#af8f511af124e82e4579f444b4175787c">is_object</a>()))</div>
|
||
<div class="line"><a name="l17943"></a><span class="lineno">17943</span>  {</div>
|
||
<div class="line"><a name="l17944"></a><span class="lineno">17944</span>  assert(m_value.object->find(key) != m_value.object->end());</div>
|
||
<div class="line"><a name="l17945"></a><span class="lineno">17945</span>  <span class="keywordflow">return</span> m_value.object->find(key)->second;</div>
|
||
<div class="line"><a name="l17946"></a><span class="lineno">17946</span>  }</div>
|
||
<div class="line"><a name="l17947"></a><span class="lineno">17947</span>  </div>
|
||
<div class="line"><a name="l17948"></a><span class="lineno">17948</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(305, <span class="stringliteral">"cannot use operator[] with a string argument with "</span> + std::string(<a class="code" href="classnlohmann_1_1basic__json.html#ad14563c53cf7ca9189bc164082367bf3">type_name</a>())));</div>
|
||
<div class="line"><a name="l17949"></a><span class="lineno">17949</span>  }</div>
|
||
<div class="line"><a name="l17950"></a><span class="lineno">17950</span>  </div>
|
||
<div class="line"><a name="l18001"></a><span class="lineno">18001</span>  <span class="keyword">template</span><<span class="keyword">class </span>ValueType, <span class="keyword">typename</span> std::enable_if<</div>
|
||
<div class="line"><a name="l18002"></a><span class="lineno">18002</span>  std::is_convertible<basic_json_t, ValueType>::value, <span class="keywordtype">int</span>><a class="code" href="classnlohmann_1_1basic__json.html#a2b2d781d7f2a4ee41bc0016e931cadf7">::type</a> = 0></div>
|
||
<div class="line"><a name="l18003"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#adcf8ca5079f5db993820bf50036bf45d">18003</a></span>  ValueType <a class="code" href="classnlohmann_1_1basic__json.html#adcf8ca5079f5db993820bf50036bf45d">value</a>(<span class="keyword">const</span> <span class="keyword">typename</span> object_t::key_type& key, <span class="keyword">const</span> ValueType& default_value)<span class="keyword"> const</span></div>
|
||
<div class="line"><a name="l18004"></a><span class="lineno">18004</span> <span class="keyword"> </span>{</div>
|
||
<div class="line"><a name="l18005"></a><span class="lineno">18005</span>  <span class="comment">// at only works for objects</span></div>
|
||
<div class="line"><a name="l18006"></a><span class="lineno">18006</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a355f2770653ff7bdd5c74b204b5a3ad0">JSON_HEDLEY_LIKELY</a>(<a class="code" href="classnlohmann_1_1basic__json.html#af8f511af124e82e4579f444b4175787c">is_object</a>()))</div>
|
||
<div class="line"><a name="l18007"></a><span class="lineno">18007</span>  {</div>
|
||
<div class="line"><a name="l18008"></a><span class="lineno">18008</span>  <span class="comment">// if key is found, return value and given default value otherwise</span></div>
|
||
<div class="line"><a name="l18009"></a><span class="lineno">18009</span>  <span class="keyword">const</span> <span class="keyword">auto</span> it = <a class="code" href="classnlohmann_1_1basic__json.html#a89eb3928f57903677051c80534be9cb1">find</a>(key);</div>
|
||
<div class="line"><a name="l18010"></a><span class="lineno">18010</span>  <span class="keywordflow">if</span> (it != <a class="code" href="classnlohmann_1_1basic__json.html#a13e032a02a7fd8a93fdddc2fcbc4763c">end</a>())</div>
|
||
<div class="line"><a name="l18011"></a><span class="lineno">18011</span>  {</div>
|
||
<div class="line"><a name="l18012"></a><span class="lineno">18012</span>  <span class="keywordflow">return</span> *it;</div>
|
||
<div class="line"><a name="l18013"></a><span class="lineno">18013</span>  }</div>
|
||
<div class="line"><a name="l18014"></a><span class="lineno">18014</span>  </div>
|
||
<div class="line"><a name="l18015"></a><span class="lineno">18015</span>  <span class="keywordflow">return</span> default_value;</div>
|
||
<div class="line"><a name="l18016"></a><span class="lineno">18016</span>  }</div>
|
||
<div class="line"><a name="l18017"></a><span class="lineno">18017</span>  </div>
|
||
<div class="line"><a name="l18018"></a><span class="lineno">18018</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(306, <span class="stringliteral">"cannot use value() with "</span> + std::string(<a class="code" href="classnlohmann_1_1basic__json.html#ad14563c53cf7ca9189bc164082367bf3">type_name</a>())));</div>
|
||
<div class="line"><a name="l18019"></a><span class="lineno">18019</span>  }</div>
|
||
<div class="line"><a name="l18020"></a><span class="lineno">18020</span>  </div>
|
||
<div class="line"><a name="l18025"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#ad6a18403e7fbac9c4efd06facc71fc88">18025</a></span>  <a class="code" href="classnlohmann_1_1basic__json.html#a61f8566a1a85a424c7266fb531dca005">string_t</a> <a class="code" href="classnlohmann_1_1basic__json.html#ad6a18403e7fbac9c4efd06facc71fc88">value</a>(<span class="keyword">const</span> <span class="keyword">typename</span> object_t::key_type& key, <span class="keyword">const</span> <span class="keywordtype">char</span>* default_value)<span class="keyword"> const</span></div>
|
||
<div class="line"><a name="l18026"></a><span class="lineno">18026</span> <span class="keyword"> </span>{</div>
|
||
<div class="line"><a name="l18027"></a><span class="lineno">18027</span>  <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json.html#adcf8ca5079f5db993820bf50036bf45d">value</a>(key, <a class="code" href="classnlohmann_1_1basic__json.html#a61f8566a1a85a424c7266fb531dca005">string_t</a>(default_value));</div>
|
||
<div class="line"><a name="l18028"></a><span class="lineno">18028</span>  }</div>
|
||
<div class="line"><a name="l18029"></a><span class="lineno">18029</span>  </div>
|
||
<div class="line"><a name="l18073"></a><span class="lineno">18073</span>  <span class="keyword">template</span><<span class="keyword">class </span>ValueType, <span class="keyword">typename</span> std::enable_if<</div>
|
||
<div class="line"><a name="l18074"></a><span class="lineno">18074</span>  std::is_convertible<basic_json_t, ValueType>::value, <span class="keywordtype">int</span>><a class="code" href="classnlohmann_1_1basic__json.html#a2b2d781d7f2a4ee41bc0016e931cadf7">::type</a> = 0></div>
|
||
<div class="line"><a name="l18075"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a671aea68432ecb28770bbc482918f023">18075</a></span>  ValueType <a class="code" href="classnlohmann_1_1basic__json.html#a671aea68432ecb28770bbc482918f023">value</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1json__pointer.html">json_pointer</a>& ptr, <span class="keyword">const</span> ValueType& default_value)<span class="keyword"> const</span></div>
|
||
<div class="line"><a name="l18076"></a><span class="lineno">18076</span> <span class="keyword"> </span>{</div>
|
||
<div class="line"><a name="l18077"></a><span class="lineno">18077</span>  <span class="comment">// at only works for objects</span></div>
|
||
<div class="line"><a name="l18078"></a><span class="lineno">18078</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a355f2770653ff7bdd5c74b204b5a3ad0">JSON_HEDLEY_LIKELY</a>(<a class="code" href="classnlohmann_1_1basic__json.html#af8f511af124e82e4579f444b4175787c">is_object</a>()))</div>
|
||
<div class="line"><a name="l18079"></a><span class="lineno">18079</span>  {</div>
|
||
<div class="line"><a name="l18080"></a><span class="lineno">18080</span>  <span class="comment">// if pointer resolves a value, return it or use default value</span></div>
|
||
<div class="line"><a name="l18081"></a><span class="lineno">18081</span>  <a class="code" href="json_8hpp.html#a985d3b82445302c57257f6432f261fe9">JSON_TRY</a></div>
|
||
<div class="line"><a name="l18082"></a><span class="lineno">18082</span>  {</div>
|
||
<div class="line"><a name="l18083"></a><span class="lineno">18083</span>  <span class="keywordflow">return</span> ptr.get_checked(<span class="keyword">this</span>);</div>
|
||
<div class="line"><a name="l18084"></a><span class="lineno">18084</span>  }</div>
|
||
<div class="line"><a name="l18085"></a><span class="lineno">18085</span>  <a class="code" href="json_8hpp.html#a5478b7564e65634cc69432ed3cb6490e">JSON_INTERNAL_CATCH</a> (<a class="code" href="classnlohmann_1_1detail_1_1out__of__range.html">out_of_range</a>&)</div>
|
||
<div class="line"><a name="l18086"></a><span class="lineno">18086</span>  {</div>
|
||
<div class="line"><a name="l18087"></a><span class="lineno">18087</span>  <span class="keywordflow">return</span> default_value;</div>
|
||
<div class="line"><a name="l18088"></a><span class="lineno">18088</span>  }</div>
|
||
<div class="line"><a name="l18089"></a><span class="lineno">18089</span>  }</div>
|
||
<div class="line"><a name="l18090"></a><span class="lineno">18090</span>  </div>
|
||
<div class="line"><a name="l18091"></a><span class="lineno">18091</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(306, <span class="stringliteral">"cannot use value() with "</span> + std::string(<a class="code" href="classnlohmann_1_1basic__json.html#ad14563c53cf7ca9189bc164082367bf3">type_name</a>())));</div>
|
||
<div class="line"><a name="l18092"></a><span class="lineno">18092</span>  }</div>
|
||
<div class="line"><a name="l18093"></a><span class="lineno">18093</span>  </div>
|
||
<div class="line"><a name="l18098"></a><span class="lineno">18098</span>  <a class="code" href="json_8hpp.html#a5338981b5ad9027c9e54b1c5597f4344">JSON_HEDLEY_NON_NULL</a>(3)</div>
|
||
<div class="line"><a name="l18099"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a869c900ee02cf1a68988dcce3b375424">18099</a></span>  <a class="code" href="classnlohmann_1_1basic__json.html#a61f8566a1a85a424c7266fb531dca005">string_t</a> <a class="code" href="classnlohmann_1_1basic__json.html#adcf8ca5079f5db993820bf50036bf45d">value</a>(const <a class="code" href="classnlohmann_1_1json__pointer.html">json_pointer</a>& ptr, const <span class="keywordtype">char</span>* default_value)<span class="keyword"> const</span></div>
|
||
<div class="line"><a name="l18100"></a><span class="lineno">18100</span> <span class="keyword"> </span>{</div>
|
||
<div class="line"><a name="l18101"></a><span class="lineno">18101</span>  <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json.html#adcf8ca5079f5db993820bf50036bf45d">value</a>(ptr, <a class="code" href="classnlohmann_1_1basic__json.html#a61f8566a1a85a424c7266fb531dca005">string_t</a>(default_value));</div>
|
||
<div class="line"><a name="l18102"></a><span class="lineno">18102</span>  }</div>
|
||
<div class="line"><a name="l18103"></a><span class="lineno">18103</span>  </div>
|
||
<div class="line"><a name="l18129"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a3acba9c6ceb7214e565fe08c3ba5b352">18129</a></span>  <a class="code" href="classnlohmann_1_1basic__json.html">reference</a> <a class="code" href="classnlohmann_1_1basic__json.html#a3acba9c6ceb7214e565fe08c3ba5b352">front</a>()</div>
|
||
<div class="line"><a name="l18130"></a><span class="lineno">18130</span>  {</div>
|
||
<div class="line"><a name="l18131"></a><span class="lineno">18131</span>  <span class="keywordflow">return</span> *<a class="code" href="classnlohmann_1_1basic__json.html#a0ff28dac23f2bdecee9564d07f51dcdc">begin</a>();</div>
|
||
<div class="line"><a name="l18132"></a><span class="lineno">18132</span>  }</div>
|
||
<div class="line"><a name="l18133"></a><span class="lineno">18133</span>  </div>
|
||
<div class="line"><a name="l18137"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a4b1fb3671ade9afc8d33b2c9510acbfc">18137</a></span>  <a class="code" href="classnlohmann_1_1basic__json.html">const_reference</a> <a class="code" href="classnlohmann_1_1basic__json.html#a4b1fb3671ade9afc8d33b2c9510acbfc">front</a>()<span class="keyword"> const</span></div>
|
||
<div class="line"><a name="l18138"></a><span class="lineno">18138</span> <span class="keyword"> </span>{</div>
|
||
<div class="line"><a name="l18139"></a><span class="lineno">18139</span>  <span class="keywordflow">return</span> *<a class="code" href="classnlohmann_1_1basic__json.html#ad865d6c291b237ae508d5cb2146b5877">cbegin</a>();</div>
|
||
<div class="line"><a name="l18140"></a><span class="lineno">18140</span>  }</div>
|
||
<div class="line"><a name="l18141"></a><span class="lineno">18141</span>  </div>
|
||
<div class="line"><a name="l18173"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a011397134847f36db0ed7d7a93753677">18173</a></span>  <a class="code" href="classnlohmann_1_1basic__json.html">reference</a> <a class="code" href="classnlohmann_1_1basic__json.html#a011397134847f36db0ed7d7a93753677">back</a>()</div>
|
||
<div class="line"><a name="l18174"></a><span class="lineno">18174</span>  {</div>
|
||
<div class="line"><a name="l18175"></a><span class="lineno">18175</span>  <span class="keyword">auto</span> tmp = <a class="code" href="classnlohmann_1_1basic__json.html#a13e032a02a7fd8a93fdddc2fcbc4763c">end</a>();</div>
|
||
<div class="line"><a name="l18176"></a><span class="lineno">18176</span>  --tmp;</div>
|
||
<div class="line"><a name="l18177"></a><span class="lineno">18177</span>  <span class="keywordflow">return</span> *tmp;</div>
|
||
<div class="line"><a name="l18178"></a><span class="lineno">18178</span>  }</div>
|
||
<div class="line"><a name="l18179"></a><span class="lineno">18179</span>  </div>
|
||
<div class="line"><a name="l18183"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a83fe4a151b3a591f357527d5d9aa1b9f">18183</a></span>  <a class="code" href="classnlohmann_1_1basic__json.html">const_reference</a> <a class="code" href="classnlohmann_1_1basic__json.html#a83fe4a151b3a591f357527d5d9aa1b9f">back</a>()<span class="keyword"> const</span></div>
|
||
<div class="line"><a name="l18184"></a><span class="lineno">18184</span> <span class="keyword"> </span>{</div>
|
||
<div class="line"><a name="l18185"></a><span class="lineno">18185</span>  <span class="keyword">auto</span> tmp = <a class="code" href="classnlohmann_1_1basic__json.html#a8dba7b7d2f38e6b0c614030aa43983f6">cend</a>();</div>
|
||
<div class="line"><a name="l18186"></a><span class="lineno">18186</span>  --tmp;</div>
|
||
<div class="line"><a name="l18187"></a><span class="lineno">18187</span>  <span class="keywordflow">return</span> *tmp;</div>
|
||
<div class="line"><a name="l18188"></a><span class="lineno">18188</span>  }</div>
|
||
<div class="line"><a name="l18189"></a><span class="lineno">18189</span>  </div>
|
||
<div class="line"><a name="l18236"></a><span class="lineno">18236</span>  <span class="keyword">template</span><<span class="keyword">class </span>IteratorType, <span class="keyword">typename</span> std::enable_if<</div>
|
||
<div class="line"><a name="l18237"></a><span class="lineno">18237</span>  std::is_same<IteratorType, typename basic_json_t::iterator>::value or</div>
|
||
<div class="line"><a name="l18238"></a><span class="lineno">18238</span>  std::is_same<IteratorType, typename basic_json_t::const_iterator>::value, <span class="keywordtype">int</span>><a class="code" href="classnlohmann_1_1basic__json.html#a2b2d781d7f2a4ee41bc0016e931cadf7">::type</a></div>
|
||
<div class="line"><a name="l18239"></a><span class="lineno">18239</span>  = 0></div>
|
||
<div class="line"><a name="l18240"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a068a16e76be178e83da6a192916923ed">18240</a></span>  IteratorType <a class="code" href="classnlohmann_1_1basic__json.html#a068a16e76be178e83da6a192916923ed">erase</a>(IteratorType pos)</div>
|
||
<div class="line"><a name="l18241"></a><span class="lineno">18241</span>  {</div>
|
||
<div class="line"><a name="l18242"></a><span class="lineno">18242</span>  <span class="comment">// make sure iterator fits the current value</span></div>
|
||
<div class="line"><a name="l18243"></a><span class="lineno">18243</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(<span class="keyword">this</span> != pos.m_object))</div>
|
||
<div class="line"><a name="l18244"></a><span class="lineno">18244</span>  {</div>
|
||
<div class="line"><a name="l18245"></a><span class="lineno">18245</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1invalid__iterator.html#a4e849260a3caa1b288c7e619130c6c09">invalid_iterator::create</a>(202, <span class="stringliteral">"iterator does not fit current value"</span>));</div>
|
||
<div class="line"><a name="l18246"></a><span class="lineno">18246</span>  }</div>
|
||
<div class="line"><a name="l18247"></a><span class="lineno">18247</span>  </div>
|
||
<div class="line"><a name="l18248"></a><span class="lineno">18248</span>  IteratorType result = <a class="code" href="classnlohmann_1_1basic__json.html#a13e032a02a7fd8a93fdddc2fcbc4763c">end</a>();</div>
|
||
<div class="line"><a name="l18249"></a><span class="lineno">18249</span>  </div>
|
||
<div class="line"><a name="l18250"></a><span class="lineno">18250</span>  <span class="keywordflow">switch</span> (m_type)</div>
|
||
<div class="line"><a name="l18251"></a><span class="lineno">18251</span>  {</div>
|
||
<div class="line"><a name="l18252"></a><span class="lineno">18252</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a84e2c64f38f78ba3ea5c905ab5a2da27">value_t::boolean</a>:</div>
|
||
<div class="line"><a name="l18253"></a><span class="lineno">18253</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ad9966ecb59667235a57b4b999a649eef">value_t::number_float</a>:</div>
|
||
<div class="line"><a name="l18254"></a><span class="lineno">18254</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a5763da164f8659d94a56e29df64b4bcc">value_t::number_integer</a>:</div>
|
||
<div class="line"><a name="l18255"></a><span class="lineno">18255</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985adce7cc8ec29055c4158828921f2f265e">value_t::number_unsigned</a>:</div>
|
||
<div class="line"><a name="l18256"></a><span class="lineno">18256</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ab45cffe084dd3d20d928bee85e7b0f21">value_t::string</a>:</div>
|
||
<div class="line"><a name="l18257"></a><span class="lineno">18257</span>  {</div>
|
||
<div class="line"><a name="l18258"></a><span class="lineno">18258</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not pos.m_it.primitive_iterator.is_begin()))</div>
|
||
<div class="line"><a name="l18259"></a><span class="lineno">18259</span>  {</div>
|
||
<div class="line"><a name="l18260"></a><span class="lineno">18260</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1invalid__iterator.html#a4e849260a3caa1b288c7e619130c6c09">invalid_iterator::create</a>(205, <span class="stringliteral">"iterator out of range"</span>));</div>
|
||
<div class="line"><a name="l18261"></a><span class="lineno">18261</span>  }</div>
|
||
<div class="line"><a name="l18262"></a><span class="lineno">18262</span>  </div>
|
||
<div class="line"><a name="l18263"></a><span class="lineno">18263</span>  <span class="keywordflow">if</span> (<a class="code" href="classnlohmann_1_1basic__json.html#a69b596a4a6683b362095c9a139637396">is_string</a>())</div>
|
||
<div class="line"><a name="l18264"></a><span class="lineno">18264</span>  {</div>
|
||
<div class="line"><a name="l18265"></a><span class="lineno">18265</span>  AllocatorType<string_t> alloc;</div>
|
||
<div class="line"><a name="l18266"></a><span class="lineno">18266</span>  std::allocator_traits<decltype(alloc)>::destroy(alloc, m_value.string);</div>
|
||
<div class="line"><a name="l18267"></a><span class="lineno">18267</span>  std::allocator_traits<decltype(alloc)>::deallocate(alloc, m_value.string, 1);</div>
|
||
<div class="line"><a name="l18268"></a><span class="lineno">18268</span>  m_value.string = <span class="keyword">nullptr</span>;</div>
|
||
<div class="line"><a name="l18269"></a><span class="lineno">18269</span>  }</div>
|
||
<div class="line"><a name="l18270"></a><span class="lineno">18270</span>  </div>
|
||
<div class="line"><a name="l18271"></a><span class="lineno">18271</span>  m_type = <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a37a6259cc0c1dae299a7866489dff0bd">value_t::null</a>;</div>
|
||
<div class="line"><a name="l18272"></a><span class="lineno">18272</span>  assert_invariant();</div>
|
||
<div class="line"><a name="l18273"></a><span class="lineno">18273</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l18274"></a><span class="lineno">18274</span>  }</div>
|
||
<div class="line"><a name="l18275"></a><span class="lineno">18275</span>  </div>
|
||
<div class="line"><a name="l18276"></a><span class="lineno">18276</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>:</div>
|
||
<div class="line"><a name="l18277"></a><span class="lineno">18277</span>  {</div>
|
||
<div class="line"><a name="l18278"></a><span class="lineno">18278</span>  result.m_it.object_iterator = m_value.object->erase(pos.m_it.object_iterator);</div>
|
||
<div class="line"><a name="l18279"></a><span class="lineno">18279</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l18280"></a><span class="lineno">18280</span>  }</div>
|
||
<div class="line"><a name="l18281"></a><span class="lineno">18281</span>  </div>
|
||
<div class="line"><a name="l18282"></a><span class="lineno">18282</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>:</div>
|
||
<div class="line"><a name="l18283"></a><span class="lineno">18283</span>  {</div>
|
||
<div class="line"><a name="l18284"></a><span class="lineno">18284</span>  result.m_it.array_iterator = m_value.array->erase(pos.m_it.array_iterator);</div>
|
||
<div class="line"><a name="l18285"></a><span class="lineno">18285</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l18286"></a><span class="lineno">18286</span>  }</div>
|
||
<div class="line"><a name="l18287"></a><span class="lineno">18287</span>  </div>
|
||
<div class="line"><a name="l18288"></a><span class="lineno">18288</span>  <span class="keywordflow">default</span>:</div>
|
||
<div class="line"><a name="l18289"></a><span class="lineno">18289</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(307, <span class="stringliteral">"cannot use erase() with "</span> + std::string(<a class="code" href="classnlohmann_1_1basic__json.html#ad14563c53cf7ca9189bc164082367bf3">type_name</a>())));</div>
|
||
<div class="line"><a name="l18290"></a><span class="lineno">18290</span>  }</div>
|
||
<div class="line"><a name="l18291"></a><span class="lineno">18291</span>  </div>
|
||
<div class="line"><a name="l18292"></a><span class="lineno">18292</span>  <span class="keywordflow">return</span> result;</div>
|
||
<div class="line"><a name="l18293"></a><span class="lineno">18293</span>  }</div>
|
||
<div class="line"><a name="l18294"></a><span class="lineno">18294</span>  </div>
|
||
<div class="line"><a name="l18341"></a><span class="lineno">18341</span>  <span class="keyword">template</span><<span class="keyword">class </span>IteratorType, <span class="keyword">typename</span> std::enable_if<</div>
|
||
<div class="line"><a name="l18342"></a><span class="lineno">18342</span>  std::is_same<IteratorType, typename basic_json_t::iterator>::value or</div>
|
||
<div class="line"><a name="l18343"></a><span class="lineno">18343</span>  std::is_same<IteratorType, typename basic_json_t::const_iterator>::value, <span class="keywordtype">int</span>><a class="code" href="classnlohmann_1_1basic__json.html#a2b2d781d7f2a4ee41bc0016e931cadf7">::type</a></div>
|
||
<div class="line"><a name="l18344"></a><span class="lineno">18344</span>  = 0></div>
|
||
<div class="line"><a name="l18345"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a4b3f7eb2d4625d95a51fbbdceb7c5f39">18345</a></span>  IteratorType <a class="code" href="classnlohmann_1_1basic__json.html#a4b3f7eb2d4625d95a51fbbdceb7c5f39">erase</a>(IteratorType first, IteratorType last)</div>
|
||
<div class="line"><a name="l18346"></a><span class="lineno">18346</span>  {</div>
|
||
<div class="line"><a name="l18347"></a><span class="lineno">18347</span>  <span class="comment">// make sure iterator fits the current value</span></div>
|
||
<div class="line"><a name="l18348"></a><span class="lineno">18348</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(<span class="keyword">this</span> != first.m_object or <span class="keyword">this</span> != last.m_object))</div>
|
||
<div class="line"><a name="l18349"></a><span class="lineno">18349</span>  {</div>
|
||
<div class="line"><a name="l18350"></a><span class="lineno">18350</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1invalid__iterator.html#a4e849260a3caa1b288c7e619130c6c09">invalid_iterator::create</a>(203, <span class="stringliteral">"iterators do not fit current value"</span>));</div>
|
||
<div class="line"><a name="l18351"></a><span class="lineno">18351</span>  }</div>
|
||
<div class="line"><a name="l18352"></a><span class="lineno">18352</span>  </div>
|
||
<div class="line"><a name="l18353"></a><span class="lineno">18353</span>  IteratorType result = <a class="code" href="classnlohmann_1_1basic__json.html#a13e032a02a7fd8a93fdddc2fcbc4763c">end</a>();</div>
|
||
<div class="line"><a name="l18354"></a><span class="lineno">18354</span>  </div>
|
||
<div class="line"><a name="l18355"></a><span class="lineno">18355</span>  <span class="keywordflow">switch</span> (m_type)</div>
|
||
<div class="line"><a name="l18356"></a><span class="lineno">18356</span>  {</div>
|
||
<div class="line"><a name="l18357"></a><span class="lineno">18357</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a84e2c64f38f78ba3ea5c905ab5a2da27">value_t::boolean</a>:</div>
|
||
<div class="line"><a name="l18358"></a><span class="lineno">18358</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ad9966ecb59667235a57b4b999a649eef">value_t::number_float</a>:</div>
|
||
<div class="line"><a name="l18359"></a><span class="lineno">18359</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a5763da164f8659d94a56e29df64b4bcc">value_t::number_integer</a>:</div>
|
||
<div class="line"><a name="l18360"></a><span class="lineno">18360</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985adce7cc8ec29055c4158828921f2f265e">value_t::number_unsigned</a>:</div>
|
||
<div class="line"><a name="l18361"></a><span class="lineno">18361</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ab45cffe084dd3d20d928bee85e7b0f21">value_t::string</a>:</div>
|
||
<div class="line"><a name="l18362"></a><span class="lineno">18362</span>  {</div>
|
||
<div class="line"><a name="l18363"></a><span class="lineno">18363</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a355f2770653ff7bdd5c74b204b5a3ad0">JSON_HEDLEY_LIKELY</a>(not first.m_it.primitive_iterator.is_begin()</div>
|
||
<div class="line"><a name="l18364"></a><span class="lineno">18364</span>  or not last.m_it.primitive_iterator.is_end()))</div>
|
||
<div class="line"><a name="l18365"></a><span class="lineno">18365</span>  {</div>
|
||
<div class="line"><a name="l18366"></a><span class="lineno">18366</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1invalid__iterator.html#a4e849260a3caa1b288c7e619130c6c09">invalid_iterator::create</a>(204, <span class="stringliteral">"iterators out of range"</span>));</div>
|
||
<div class="line"><a name="l18367"></a><span class="lineno">18367</span>  }</div>
|
||
<div class="line"><a name="l18368"></a><span class="lineno">18368</span>  </div>
|
||
<div class="line"><a name="l18369"></a><span class="lineno">18369</span>  <span class="keywordflow">if</span> (<a class="code" href="classnlohmann_1_1basic__json.html#a69b596a4a6683b362095c9a139637396">is_string</a>())</div>
|
||
<div class="line"><a name="l18370"></a><span class="lineno">18370</span>  {</div>
|
||
<div class="line"><a name="l18371"></a><span class="lineno">18371</span>  AllocatorType<string_t> alloc;</div>
|
||
<div class="line"><a name="l18372"></a><span class="lineno">18372</span>  std::allocator_traits<decltype(alloc)>::destroy(alloc, m_value.string);</div>
|
||
<div class="line"><a name="l18373"></a><span class="lineno">18373</span>  std::allocator_traits<decltype(alloc)>::deallocate(alloc, m_value.string, 1);</div>
|
||
<div class="line"><a name="l18374"></a><span class="lineno">18374</span>  m_value.string = <span class="keyword">nullptr</span>;</div>
|
||
<div class="line"><a name="l18375"></a><span class="lineno">18375</span>  }</div>
|
||
<div class="line"><a name="l18376"></a><span class="lineno">18376</span>  </div>
|
||
<div class="line"><a name="l18377"></a><span class="lineno">18377</span>  m_type = <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a37a6259cc0c1dae299a7866489dff0bd">value_t::null</a>;</div>
|
||
<div class="line"><a name="l18378"></a><span class="lineno">18378</span>  assert_invariant();</div>
|
||
<div class="line"><a name="l18379"></a><span class="lineno">18379</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l18380"></a><span class="lineno">18380</span>  }</div>
|
||
<div class="line"><a name="l18381"></a><span class="lineno">18381</span>  </div>
|
||
<div class="line"><a name="l18382"></a><span class="lineno">18382</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>:</div>
|
||
<div class="line"><a name="l18383"></a><span class="lineno">18383</span>  {</div>
|
||
<div class="line"><a name="l18384"></a><span class="lineno">18384</span>  result.m_it.object_iterator = m_value.object->erase(first.m_it.object_iterator,</div>
|
||
<div class="line"><a name="l18385"></a><span class="lineno">18385</span>  last.m_it.object_iterator);</div>
|
||
<div class="line"><a name="l18386"></a><span class="lineno">18386</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l18387"></a><span class="lineno">18387</span>  }</div>
|
||
<div class="line"><a name="l18388"></a><span class="lineno">18388</span>  </div>
|
||
<div class="line"><a name="l18389"></a><span class="lineno">18389</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>:</div>
|
||
<div class="line"><a name="l18390"></a><span class="lineno">18390</span>  {</div>
|
||
<div class="line"><a name="l18391"></a><span class="lineno">18391</span>  result.m_it.array_iterator = m_value.array->erase(first.m_it.array_iterator,</div>
|
||
<div class="line"><a name="l18392"></a><span class="lineno">18392</span>  last.m_it.array_iterator);</div>
|
||
<div class="line"><a name="l18393"></a><span class="lineno">18393</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l18394"></a><span class="lineno">18394</span>  }</div>
|
||
<div class="line"><a name="l18395"></a><span class="lineno">18395</span>  </div>
|
||
<div class="line"><a name="l18396"></a><span class="lineno">18396</span>  <span class="keywordflow">default</span>:</div>
|
||
<div class="line"><a name="l18397"></a><span class="lineno">18397</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(307, <span class="stringliteral">"cannot use erase() with "</span> + std::string(<a class="code" href="classnlohmann_1_1basic__json.html#ad14563c53cf7ca9189bc164082367bf3">type_name</a>())));</div>
|
||
<div class="line"><a name="l18398"></a><span class="lineno">18398</span>  }</div>
|
||
<div class="line"><a name="l18399"></a><span class="lineno">18399</span>  </div>
|
||
<div class="line"><a name="l18400"></a><span class="lineno">18400</span>  <span class="keywordflow">return</span> result;</div>
|
||
<div class="line"><a name="l18401"></a><span class="lineno">18401</span>  }</div>
|
||
<div class="line"><a name="l18402"></a><span class="lineno">18402</span>  </div>
|
||
<div class="line"><a name="l18432"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a2f8484d69c55d8f2a9697a7bec29362a">18432</a></span>  <a class="code" href="classnlohmann_1_1basic__json.html#a39f2cd0b58106097e0e67bf185cc519b">size_type</a> <a class="code" href="classnlohmann_1_1basic__json.html#a2f8484d69c55d8f2a9697a7bec29362a">erase</a>(<span class="keyword">const</span> <span class="keyword">typename</span> object_t::key_type& key)</div>
|
||
<div class="line"><a name="l18433"></a><span class="lineno">18433</span>  {</div>
|
||
<div class="line"><a name="l18434"></a><span class="lineno">18434</span>  <span class="comment">// this erase only works for objects</span></div>
|
||
<div class="line"><a name="l18435"></a><span class="lineno">18435</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a355f2770653ff7bdd5c74b204b5a3ad0">JSON_HEDLEY_LIKELY</a>(<a class="code" href="classnlohmann_1_1basic__json.html#af8f511af124e82e4579f444b4175787c">is_object</a>()))</div>
|
||
<div class="line"><a name="l18436"></a><span class="lineno">18436</span>  {</div>
|
||
<div class="line"><a name="l18437"></a><span class="lineno">18437</span>  <span class="keywordflow">return</span> m_value.object->erase(key);</div>
|
||
<div class="line"><a name="l18438"></a><span class="lineno">18438</span>  }</div>
|
||
<div class="line"><a name="l18439"></a><span class="lineno">18439</span>  </div>
|
||
<div class="line"><a name="l18440"></a><span class="lineno">18440</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(307, <span class="stringliteral">"cannot use erase() with "</span> + std::string(<a class="code" href="classnlohmann_1_1basic__json.html#ad14563c53cf7ca9189bc164082367bf3">type_name</a>())));</div>
|
||
<div class="line"><a name="l18441"></a><span class="lineno">18441</span>  }</div>
|
||
<div class="line"><a name="l18442"></a><span class="lineno">18442</span>  </div>
|
||
<div class="line"><a name="l18467"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a88cbcefe9a3f4d294bed0653550a5cb9">18467</a></span>  <span class="keywordtype">void</span> <a class="code" href="classnlohmann_1_1basic__json.html#a88cbcefe9a3f4d294bed0653550a5cb9">erase</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json.html#a39f2cd0b58106097e0e67bf185cc519b">size_type</a> idx)</div>
|
||
<div class="line"><a name="l18468"></a><span class="lineno">18468</span>  {</div>
|
||
<div class="line"><a name="l18469"></a><span class="lineno">18469</span>  <span class="comment">// this erase only works for arrays</span></div>
|
||
<div class="line"><a name="l18470"></a><span class="lineno">18470</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a355f2770653ff7bdd5c74b204b5a3ad0">JSON_HEDLEY_LIKELY</a>(<a class="code" href="classnlohmann_1_1basic__json.html#aef9ce5dd2381caee1f8ddcdb5bdd9c65">is_array</a>()))</div>
|
||
<div class="line"><a name="l18471"></a><span class="lineno">18471</span>  {</div>
|
||
<div class="line"><a name="l18472"></a><span class="lineno">18472</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(idx >= <a class="code" href="classnlohmann_1_1basic__json.html#a25e27ad0c6d53c01871c5485e1f75b96">size</a>()))</div>
|
||
<div class="line"><a name="l18473"></a><span class="lineno">18473</span>  {</div>
|
||
<div class="line"><a name="l18474"></a><span class="lineno">18474</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1out__of__range.html#a3f6d82a6f967c4728a1ec735a7867073">out_of_range::create</a>(401, <span class="stringliteral">"array index "</span> + <a class="code" href="namespacenlohmann.html#a6ce645a0b8717757e096a5b5773b7a16">std::to_string</a>(idx) + <span class="stringliteral">" is out of range"</span>));</div>
|
||
<div class="line"><a name="l18475"></a><span class="lineno">18475</span>  }</div>
|
||
<div class="line"><a name="l18476"></a><span class="lineno">18476</span>  </div>
|
||
<div class="line"><a name="l18477"></a><span class="lineno">18477</span>  m_value.array->erase(m_value.array->begin() + <span class="keyword">static_cast<</span><a class="code" href="classnlohmann_1_1basic__json.html#afe7c1303357e19cea9527af4e9a31d8f">difference_type</a><span class="keyword">></span>(idx));</div>
|
||
<div class="line"><a name="l18478"></a><span class="lineno">18478</span>  }</div>
|
||
<div class="line"><a name="l18479"></a><span class="lineno">18479</span>  <span class="keywordflow">else</span></div>
|
||
<div class="line"><a name="l18480"></a><span class="lineno">18480</span>  {</div>
|
||
<div class="line"><a name="l18481"></a><span class="lineno">18481</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(307, <span class="stringliteral">"cannot use erase() with "</span> + std::string(<a class="code" href="classnlohmann_1_1basic__json.html#ad14563c53cf7ca9189bc164082367bf3">type_name</a>())));</div>
|
||
<div class="line"><a name="l18482"></a><span class="lineno">18482</span>  }</div>
|
||
<div class="line"><a name="l18483"></a><span class="lineno">18483</span>  }</div>
|
||
<div class="line"><a name="l18484"></a><span class="lineno">18484</span>  </div>
|
||
<div class="line"><a name="l18486"></a><span class="lineno">18486</span>  </div>
|
||
<div class="line"><a name="l18487"></a><span class="lineno">18487</span>  </div>
|
||
<div class="line"><a name="l18489"></a><span class="lineno">18489</span>  <span class="comment">// lookup //</span></div>
|
||
<div class="line"><a name="l18491"></a><span class="lineno">18491</span> <span class="comment"></span> </div>
|
||
<div class="line"><a name="l18494"></a><span class="lineno">18494</span>  </div>
|
||
<div class="line"><a name="l18519"></a><span class="lineno">18519</span>  <span class="keyword">template</span><<span class="keyword">typename</span> KeyT></div>
|
||
<div class="line"><a name="l18520"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a89eb3928f57903677051c80534be9cb1">18520</a></span>  <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">iterator</a> <a class="code" href="classnlohmann_1_1basic__json.html#a89eb3928f57903677051c80534be9cb1">find</a>(KeyT&& key)</div>
|
||
<div class="line"><a name="l18521"></a><span class="lineno">18521</span>  {</div>
|
||
<div class="line"><a name="l18522"></a><span class="lineno">18522</span>  <span class="keyword">auto</span> result = <a class="code" href="classnlohmann_1_1basic__json.html#a13e032a02a7fd8a93fdddc2fcbc4763c">end</a>();</div>
|
||
<div class="line"><a name="l18523"></a><span class="lineno">18523</span>  </div>
|
||
<div class="line"><a name="l18524"></a><span class="lineno">18524</span>  <span class="keywordflow">if</span> (<a class="code" href="classnlohmann_1_1basic__json.html#af8f511af124e82e4579f444b4175787c">is_object</a>())</div>
|
||
<div class="line"><a name="l18525"></a><span class="lineno">18525</span>  {</div>
|
||
<div class="line"><a name="l18526"></a><span class="lineno">18526</span>  result.m_it.object_iterator = m_value.object->find(std::forward<KeyT>(key));</div>
|
||
<div class="line"><a name="l18527"></a><span class="lineno">18527</span>  }</div>
|
||
<div class="line"><a name="l18528"></a><span class="lineno">18528</span>  </div>
|
||
<div class="line"><a name="l18529"></a><span class="lineno">18529</span>  <span class="keywordflow">return</span> result;</div>
|
||
<div class="line"><a name="l18530"></a><span class="lineno">18530</span>  }</div>
|
||
<div class="line"><a name="l18531"></a><span class="lineno">18531</span>  </div>
|
||
<div class="line"><a name="l18536"></a><span class="lineno">18536</span>  <span class="keyword">template</span><<span class="keyword">typename</span> KeyT></div>
|
||
<div class="line"><a name="l18537"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#ae625a0647486edf2bb38c849ca67f934">18537</a></span>  <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">const_iterator</a> <a class="code" href="classnlohmann_1_1basic__json.html#ae625a0647486edf2bb38c849ca67f934">find</a>(KeyT&& key)<span class="keyword"> const</span></div>
|
||
<div class="line"><a name="l18538"></a><span class="lineno">18538</span> <span class="keyword"> </span>{</div>
|
||
<div class="line"><a name="l18539"></a><span class="lineno">18539</span>  <span class="keyword">auto</span> result = <a class="code" href="classnlohmann_1_1basic__json.html#a8dba7b7d2f38e6b0c614030aa43983f6">cend</a>();</div>
|
||
<div class="line"><a name="l18540"></a><span class="lineno">18540</span>  </div>
|
||
<div class="line"><a name="l18541"></a><span class="lineno">18541</span>  <span class="keywordflow">if</span> (<a class="code" href="classnlohmann_1_1basic__json.html#af8f511af124e82e4579f444b4175787c">is_object</a>())</div>
|
||
<div class="line"><a name="l18542"></a><span class="lineno">18542</span>  {</div>
|
||
<div class="line"><a name="l18543"></a><span class="lineno">18543</span>  result.m_it.object_iterator = m_value.object->find(std::forward<KeyT>(key));</div>
|
||
<div class="line"><a name="l18544"></a><span class="lineno">18544</span>  }</div>
|
||
<div class="line"><a name="l18545"></a><span class="lineno">18545</span>  </div>
|
||
<div class="line"><a name="l18546"></a><span class="lineno">18546</span>  <span class="keywordflow">return</span> result;</div>
|
||
<div class="line"><a name="l18547"></a><span class="lineno">18547</span>  }</div>
|
||
<div class="line"><a name="l18548"></a><span class="lineno">18548</span>  </div>
|
||
<div class="line"><a name="l18570"></a><span class="lineno">18570</span>  <span class="keyword">template</span><<span class="keyword">typename</span> KeyT></div>
|
||
<div class="line"><a name="l18571"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a0d74bfcf65662f1d66d14c34b0027098">18571</a></span>  <a class="code" href="classnlohmann_1_1basic__json.html#a39f2cd0b58106097e0e67bf185cc519b">size_type</a> <a class="code" href="classnlohmann_1_1basic__json.html#a0d74bfcf65662f1d66d14c34b0027098">count</a>(KeyT&& key)<span class="keyword"> const</span></div>
|
||
<div class="line"><a name="l18572"></a><span class="lineno">18572</span> <span class="keyword"> </span>{</div>
|
||
<div class="line"><a name="l18573"></a><span class="lineno">18573</span>  <span class="comment">// return 0 for all nonobject types</span></div>
|
||
<div class="line"><a name="l18574"></a><span class="lineno">18574</span>  <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json.html#af8f511af124e82e4579f444b4175787c">is_object</a>() ? m_value.object->count(std::forward<KeyT>(key)) : 0;</div>
|
||
<div class="line"><a name="l18575"></a><span class="lineno">18575</span>  }</div>
|
||
<div class="line"><a name="l18576"></a><span class="lineno">18576</span>  </div>
|
||
<div class="line"><a name="l18602"></a><span class="lineno">18602</span>  <span class="keyword">template</span><<span class="keyword">typename</span> KeyT, <span class="keyword">typename</span> std::enable_if<</div>
|
||
<div class="line"><a name="l18603"></a><span class="lineno">18603</span>  not std::is_same<typename std::decay<KeyT>::type, <a class="code" href="classnlohmann_1_1json__pointer.html">json_pointer</a>><a class="code" href="classnlohmann_1_1basic__json.html#adcf8ca5079f5db993820bf50036bf45d">::value</a>, <span class="keywordtype">int</span>><a class="code" href="classnlohmann_1_1basic__json.html#a2b2d781d7f2a4ee41bc0016e931cadf7">::type</a> = 0></div>
|
||
<div class="line"><a name="l18604"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a9286acdc0578fc66e9346323e69fc0e3">18604</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json.html#a9286acdc0578fc66e9346323e69fc0e3">contains</a>(KeyT && key)<span class="keyword"> const</span></div>
|
||
<div class="line"><a name="l18605"></a><span class="lineno">18605</span> <span class="keyword"> </span>{</div>
|
||
<div class="line"><a name="l18606"></a><span class="lineno">18606</span>  <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json.html#af8f511af124e82e4579f444b4175787c">is_object</a>() and m_value.object->find(std::forward<KeyT>(key)) != m_value.object->end();</div>
|
||
<div class="line"><a name="l18607"></a><span class="lineno">18607</span>  }</div>
|
||
<div class="line"><a name="l18608"></a><span class="lineno">18608</span>  </div>
|
||
<div class="line"><a name="l18635"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#ab23b04802eb9da97dc3f664e54e09cb3">18635</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json.html#ab23b04802eb9da97dc3f664e54e09cb3">contains</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1json__pointer.html">json_pointer</a>& ptr)<span class="keyword"> const</span></div>
|
||
<div class="line"><a name="l18636"></a><span class="lineno">18636</span> <span class="keyword"> </span>{</div>
|
||
<div class="line"><a name="l18637"></a><span class="lineno">18637</span>  <span class="keywordflow">return</span> ptr.contains(<span class="keyword">this</span>);</div>
|
||
<div class="line"><a name="l18638"></a><span class="lineno">18638</span>  }</div>
|
||
<div class="line"><a name="l18639"></a><span class="lineno">18639</span>  </div>
|
||
<div class="line"><a name="l18641"></a><span class="lineno">18641</span>  </div>
|
||
<div class="line"><a name="l18642"></a><span class="lineno">18642</span>  </div>
|
||
<div class="line"><a name="l18644"></a><span class="lineno">18644</span>  <span class="comment">// iterators //</span></div>
|
||
<div class="line"><a name="l18646"></a><span class="lineno">18646</span> <span class="comment"></span> </div>
|
||
<div class="line"><a name="l18649"></a><span class="lineno">18649</span>  </div>
|
||
<div class="line"><a name="l18674"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a0ff28dac23f2bdecee9564d07f51dcdc">18674</a></span>  <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">iterator</a> <a class="code" href="classnlohmann_1_1basic__json.html#a0ff28dac23f2bdecee9564d07f51dcdc">begin</a>() noexcept</div>
|
||
<div class="line"><a name="l18675"></a><span class="lineno">18675</span>  {</div>
|
||
<div class="line"><a name="l18676"></a><span class="lineno">18676</span>  <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">iterator</a> result(<span class="keyword">this</span>);</div>
|
||
<div class="line"><a name="l18677"></a><span class="lineno">18677</span>  result.set_begin();</div>
|
||
<div class="line"><a name="l18678"></a><span class="lineno">18678</span>  <span class="keywordflow">return</span> result;</div>
|
||
<div class="line"><a name="l18679"></a><span class="lineno">18679</span>  }</div>
|
||
<div class="line"><a name="l18680"></a><span class="lineno">18680</span>  </div>
|
||
<div class="line"><a name="l18684"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a4f0f5dd42b2987ff20306ed78bd31d1d">18684</a></span>  <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">const_iterator</a> <a class="code" href="classnlohmann_1_1basic__json.html#a4f0f5dd42b2987ff20306ed78bd31d1d">begin</a>() const noexcept</div>
|
||
<div class="line"><a name="l18685"></a><span class="lineno">18685</span>  {</div>
|
||
<div class="line"><a name="l18686"></a><span class="lineno">18686</span>  <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json.html#ad865d6c291b237ae508d5cb2146b5877">cbegin</a>();</div>
|
||
<div class="line"><a name="l18687"></a><span class="lineno">18687</span>  }</div>
|
||
<div class="line"><a name="l18688"></a><span class="lineno">18688</span>  </div>
|
||
<div class="line"><a name="l18714"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#ad865d6c291b237ae508d5cb2146b5877">18714</a></span>  <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">const_iterator</a> <a class="code" href="classnlohmann_1_1basic__json.html#ad865d6c291b237ae508d5cb2146b5877">cbegin</a>() const noexcept</div>
|
||
<div class="line"><a name="l18715"></a><span class="lineno">18715</span>  {</div>
|
||
<div class="line"><a name="l18716"></a><span class="lineno">18716</span>  <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">const_iterator</a> result(<span class="keyword">this</span>);</div>
|
||
<div class="line"><a name="l18717"></a><span class="lineno">18717</span>  result.set_begin();</div>
|
||
<div class="line"><a name="l18718"></a><span class="lineno">18718</span>  <span class="keywordflow">return</span> result;</div>
|
||
<div class="line"><a name="l18719"></a><span class="lineno">18719</span>  }</div>
|
||
<div class="line"><a name="l18720"></a><span class="lineno">18720</span>  </div>
|
||
<div class="line"><a name="l18745"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a13e032a02a7fd8a93fdddc2fcbc4763c">18745</a></span>  <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">iterator</a> <a class="code" href="classnlohmann_1_1basic__json.html#a13e032a02a7fd8a93fdddc2fcbc4763c">end</a>() noexcept</div>
|
||
<div class="line"><a name="l18746"></a><span class="lineno">18746</span>  {</div>
|
||
<div class="line"><a name="l18747"></a><span class="lineno">18747</span>  <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">iterator</a> result(<span class="keyword">this</span>);</div>
|
||
<div class="line"><a name="l18748"></a><span class="lineno">18748</span>  result.set_end();</div>
|
||
<div class="line"><a name="l18749"></a><span class="lineno">18749</span>  <span class="keywordflow">return</span> result;</div>
|
||
<div class="line"><a name="l18750"></a><span class="lineno">18750</span>  }</div>
|
||
<div class="line"><a name="l18751"></a><span class="lineno">18751</span>  </div>
|
||
<div class="line"><a name="l18755"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a1c15707055088cd5436ae91db72cbe67">18755</a></span>  <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">const_iterator</a> <a class="code" href="classnlohmann_1_1basic__json.html#a1c15707055088cd5436ae91db72cbe67">end</a>() const noexcept</div>
|
||
<div class="line"><a name="l18756"></a><span class="lineno">18756</span>  {</div>
|
||
<div class="line"><a name="l18757"></a><span class="lineno">18757</span>  <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json.html#a8dba7b7d2f38e6b0c614030aa43983f6">cend</a>();</div>
|
||
<div class="line"><a name="l18758"></a><span class="lineno">18758</span>  }</div>
|
||
<div class="line"><a name="l18759"></a><span class="lineno">18759</span>  </div>
|
||
<div class="line"><a name="l18785"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a8dba7b7d2f38e6b0c614030aa43983f6">18785</a></span>  <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">const_iterator</a> <a class="code" href="classnlohmann_1_1basic__json.html#a8dba7b7d2f38e6b0c614030aa43983f6">cend</a>() const noexcept</div>
|
||
<div class="line"><a name="l18786"></a><span class="lineno">18786</span>  {</div>
|
||
<div class="line"><a name="l18787"></a><span class="lineno">18787</span>  <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">const_iterator</a> result(<span class="keyword">this</span>);</div>
|
||
<div class="line"><a name="l18788"></a><span class="lineno">18788</span>  result.set_end();</div>
|
||
<div class="line"><a name="l18789"></a><span class="lineno">18789</span>  <span class="keywordflow">return</span> result;</div>
|
||
<div class="line"><a name="l18790"></a><span class="lineno">18790</span>  }</div>
|
||
<div class="line"><a name="l18791"></a><span class="lineno">18791</span>  </div>
|
||
<div class="line"><a name="l18815"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a1ef93e2006dbe52667294f5ef38b0b10">18815</a></span>  <a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html">reverse_iterator</a> <a class="code" href="classnlohmann_1_1basic__json.html#a1ef93e2006dbe52667294f5ef38b0b10">rbegin</a>() noexcept</div>
|
||
<div class="line"><a name="l18816"></a><span class="lineno">18816</span>  {</div>
|
||
<div class="line"><a name="l18817"></a><span class="lineno">18817</span>  <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json.html#ac223d5560c2b05a208c88de67376c5f2">reverse_iterator</a>(<a class="code" href="classnlohmann_1_1basic__json.html#a13e032a02a7fd8a93fdddc2fcbc4763c">end</a>());</div>
|
||
<div class="line"><a name="l18818"></a><span class="lineno">18818</span>  }</div>
|
||
<div class="line"><a name="l18819"></a><span class="lineno">18819</span>  </div>
|
||
<div class="line"><a name="l18823"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a515e7618392317dbf4b72d3e18bf2ab2">18823</a></span>  <a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html">const_reverse_iterator</a> <a class="code" href="classnlohmann_1_1basic__json.html#a515e7618392317dbf4b72d3e18bf2ab2">rbegin</a>() const noexcept</div>
|
||
<div class="line"><a name="l18824"></a><span class="lineno">18824</span>  {</div>
|
||
<div class="line"><a name="l18825"></a><span class="lineno">18825</span>  <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json.html#a1e0769d22d54573f294da0e5c6abc9de">crbegin</a>();</div>
|
||
<div class="line"><a name="l18826"></a><span class="lineno">18826</span>  }</div>
|
||
<div class="line"><a name="l18827"></a><span class="lineno">18827</span>  </div>
|
||
<div class="line"><a name="l18852"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#ac77aed0925d447744676725ab0b6d535">18852</a></span>  <a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html">reverse_iterator</a> <a class="code" href="classnlohmann_1_1basic__json.html#ac77aed0925d447744676725ab0b6d535">rend</a>() noexcept</div>
|
||
<div class="line"><a name="l18853"></a><span class="lineno">18853</span>  {</div>
|
||
<div class="line"><a name="l18854"></a><span class="lineno">18854</span>  <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json.html#ac223d5560c2b05a208c88de67376c5f2">reverse_iterator</a>(<a class="code" href="classnlohmann_1_1basic__json.html#a0ff28dac23f2bdecee9564d07f51dcdc">begin</a>());</div>
|
||
<div class="line"><a name="l18855"></a><span class="lineno">18855</span>  }</div>
|
||
<div class="line"><a name="l18856"></a><span class="lineno">18856</span>  </div>
|
||
<div class="line"><a name="l18860"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a4f73d4cee67ea328d785979c22af0ae1">18860</a></span>  <a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html">const_reverse_iterator</a> <a class="code" href="classnlohmann_1_1basic__json.html#a4f73d4cee67ea328d785979c22af0ae1">rend</a>() const noexcept</div>
|
||
<div class="line"><a name="l18861"></a><span class="lineno">18861</span>  {</div>
|
||
<div class="line"><a name="l18862"></a><span class="lineno">18862</span>  <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json.html#a5795b029dbf28e0cb2c7a439ec5d0a88">crend</a>();</div>
|
||
<div class="line"><a name="l18863"></a><span class="lineno">18863</span>  }</div>
|
||
<div class="line"><a name="l18864"></a><span class="lineno">18864</span>  </div>
|
||
<div class="line"><a name="l18889"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a1e0769d22d54573f294da0e5c6abc9de">18889</a></span>  <a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html">const_reverse_iterator</a> <a class="code" href="classnlohmann_1_1basic__json.html#a1e0769d22d54573f294da0e5c6abc9de">crbegin</a>() const noexcept</div>
|
||
<div class="line"><a name="l18890"></a><span class="lineno">18890</span>  {</div>
|
||
<div class="line"><a name="l18891"></a><span class="lineno">18891</span>  <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json.html#a72be3c24bfa24f0993d6c11af03e7404">const_reverse_iterator</a>(<a class="code" href="classnlohmann_1_1basic__json.html#a8dba7b7d2f38e6b0c614030aa43983f6">cend</a>());</div>
|
||
<div class="line"><a name="l18892"></a><span class="lineno">18892</span>  }</div>
|
||
<div class="line"><a name="l18893"></a><span class="lineno">18893</span>  </div>
|
||
<div class="line"><a name="l18918"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a5795b029dbf28e0cb2c7a439ec5d0a88">18918</a></span>  <a class="code" href="classnlohmann_1_1detail_1_1json__reverse__iterator.html">const_reverse_iterator</a> <a class="code" href="classnlohmann_1_1basic__json.html#a5795b029dbf28e0cb2c7a439ec5d0a88">crend</a>() const noexcept</div>
|
||
<div class="line"><a name="l18919"></a><span class="lineno">18919</span>  {</div>
|
||
<div class="line"><a name="l18920"></a><span class="lineno">18920</span>  <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json.html#a72be3c24bfa24f0993d6c11af03e7404">const_reverse_iterator</a>(<a class="code" href="classnlohmann_1_1basic__json.html#ad865d6c291b237ae508d5cb2146b5877">cbegin</a>());</div>
|
||
<div class="line"><a name="l18921"></a><span class="lineno">18921</span>  }</div>
|
||
<div class="line"><a name="l18922"></a><span class="lineno">18922</span>  </div>
|
||
<div class="line"><a name="l18923"></a><span class="lineno">18923</span>  <span class="keyword">public</span>:</div>
|
||
<div class="line"><a name="l18981"></a><span class="lineno">18981</span>  <a class="code" href="json_8hpp.html#a0f2cbf281fa983a844b9279c697b7a0c">JSON_HEDLEY_DEPRECATED</a>(3.1.0)</div>
|
||
<div class="line"><a name="l18982"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a5e4212986136ca1220f351c60e89906b">18982</a></span>  static <a class="code" href="classnlohmann_1_1detail_1_1iteration__proxy.html">iteration_proxy</a><<a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">iterator</a>> <a class="code" href="classnlohmann_1_1basic__json.html#a5e4212986136ca1220f351c60e89906b">iterator_wrapper</a>(<a class="code" href="classnlohmann_1_1basic__json.html">reference</a> ref) noexcept</div>
|
||
<div class="line"><a name="l18983"></a><span class="lineno">18983</span>  {</div>
|
||
<div class="line"><a name="l18984"></a><span class="lineno">18984</span>  <span class="keywordflow">return</span> ref.items();</div>
|
||
<div class="line"><a name="l18985"></a><span class="lineno">18985</span>  }</div>
|
||
<div class="line"><a name="l18986"></a><span class="lineno">18986</span>  </div>
|
||
<div class="line"><a name="l18990"></a><span class="lineno">18990</span>  <a class="code" href="json_8hpp.html#a0f2cbf281fa983a844b9279c697b7a0c">JSON_HEDLEY_DEPRECATED</a>(3.1.0)</div>
|
||
<div class="line"><a name="l18991"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a4d8795ce15be7ce2a95260663bde640d">18991</a></span>  static <a class="code" href="classnlohmann_1_1detail_1_1iteration__proxy.html">iteration_proxy</a><<a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">const_iterator</a>> <a class="code" href="classnlohmann_1_1basic__json.html#a5e4212986136ca1220f351c60e89906b">iterator_wrapper</a>(<a class="code" href="classnlohmann_1_1basic__json.html">const_reference</a> ref) noexcept</div>
|
||
<div class="line"><a name="l18992"></a><span class="lineno">18992</span>  {</div>
|
||
<div class="line"><a name="l18993"></a><span class="lineno">18993</span>  <span class="keywordflow">return</span> ref.items();</div>
|
||
<div class="line"><a name="l18994"></a><span class="lineno">18994</span>  }</div>
|
||
<div class="line"><a name="l18995"></a><span class="lineno">18995</span>  </div>
|
||
<div class="line"><a name="l19059"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#afe3e137ace692efa08590d8df40f58dd">19059</a></span>  <a class="code" href="classnlohmann_1_1detail_1_1iteration__proxy.html">iteration_proxy<iterator></a> <a class="code" href="classnlohmann_1_1basic__json.html#afe3e137ace692efa08590d8df40f58dd">items</a>() noexcept</div>
|
||
<div class="line"><a name="l19060"></a><span class="lineno">19060</span>  {</div>
|
||
<div class="line"><a name="l19061"></a><span class="lineno">19061</span>  <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1detail_1_1iteration__proxy.html">iteration_proxy<iterator></a>(*<span class="keyword">this</span>);</div>
|
||
<div class="line"><a name="l19062"></a><span class="lineno">19062</span>  }</div>
|
||
<div class="line"><a name="l19063"></a><span class="lineno">19063</span>  </div>
|
||
<div class="line"><a name="l19067"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a71dd7adfca43660c10e6624f4b5c290c">19067</a></span>  <a class="code" href="classnlohmann_1_1detail_1_1iteration__proxy.html">iteration_proxy<const_iterator></a> <a class="code" href="classnlohmann_1_1basic__json.html#a71dd7adfca43660c10e6624f4b5c290c">items</a>() const noexcept</div>
|
||
<div class="line"><a name="l19068"></a><span class="lineno">19068</span>  {</div>
|
||
<div class="line"><a name="l19069"></a><span class="lineno">19069</span>  <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1detail_1_1iteration__proxy.html">iteration_proxy<const_iterator></a>(*<span class="keyword">this</span>);</div>
|
||
<div class="line"><a name="l19070"></a><span class="lineno">19070</span>  }</div>
|
||
<div class="line"><a name="l19071"></a><span class="lineno">19071</span>  </div>
|
||
<div class="line"><a name="l19073"></a><span class="lineno">19073</span>  </div>
|
||
<div class="line"><a name="l19074"></a><span class="lineno">19074</span>  </div>
|
||
<div class="line"><a name="l19076"></a><span class="lineno">19076</span>  <span class="comment">// capacity //</span></div>
|
||
<div class="line"><a name="l19078"></a><span class="lineno">19078</span> <span class="comment"></span> </div>
|
||
<div class="line"><a name="l19081"></a><span class="lineno">19081</span>  </div>
|
||
<div class="line"><a name="l19123"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a1a86d444bfeaa9518d2421aedd74444a">19123</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json.html#a1a86d444bfeaa9518d2421aedd74444a">empty</a>() const noexcept</div>
|
||
<div class="line"><a name="l19124"></a><span class="lineno">19124</span>  {</div>
|
||
<div class="line"><a name="l19125"></a><span class="lineno">19125</span>  <span class="keywordflow">switch</span> (m_type)</div>
|
||
<div class="line"><a name="l19126"></a><span class="lineno">19126</span>  {</div>
|
||
<div class="line"><a name="l19127"></a><span class="lineno">19127</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a37a6259cc0c1dae299a7866489dff0bd">value_t::null</a>:</div>
|
||
<div class="line"><a name="l19128"></a><span class="lineno">19128</span>  {</div>
|
||
<div class="line"><a name="l19129"></a><span class="lineno">19129</span>  <span class="comment">// null values are empty</span></div>
|
||
<div class="line"><a name="l19130"></a><span class="lineno">19130</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
||
<div class="line"><a name="l19131"></a><span class="lineno">19131</span>  }</div>
|
||
<div class="line"><a name="l19132"></a><span class="lineno">19132</span>  </div>
|
||
<div class="line"><a name="l19133"></a><span class="lineno">19133</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>:</div>
|
||
<div class="line"><a name="l19134"></a><span class="lineno">19134</span>  {</div>
|
||
<div class="line"><a name="l19135"></a><span class="lineno">19135</span>  <span class="comment">// delegate call to array_t::empty()</span></div>
|
||
<div class="line"><a name="l19136"></a><span class="lineno">19136</span>  <span class="keywordflow">return</span> m_value.array->empty();</div>
|
||
<div class="line"><a name="l19137"></a><span class="lineno">19137</span>  }</div>
|
||
<div class="line"><a name="l19138"></a><span class="lineno">19138</span>  </div>
|
||
<div class="line"><a name="l19139"></a><span class="lineno">19139</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>:</div>
|
||
<div class="line"><a name="l19140"></a><span class="lineno">19140</span>  {</div>
|
||
<div class="line"><a name="l19141"></a><span class="lineno">19141</span>  <span class="comment">// delegate call to object_t::empty()</span></div>
|
||
<div class="line"><a name="l19142"></a><span class="lineno">19142</span>  <span class="keywordflow">return</span> m_value.object->empty();</div>
|
||
<div class="line"><a name="l19143"></a><span class="lineno">19143</span>  }</div>
|
||
<div class="line"><a name="l19144"></a><span class="lineno">19144</span>  </div>
|
||
<div class="line"><a name="l19145"></a><span class="lineno">19145</span>  <span class="keywordflow">default</span>:</div>
|
||
<div class="line"><a name="l19146"></a><span class="lineno">19146</span>  {</div>
|
||
<div class="line"><a name="l19147"></a><span class="lineno">19147</span>  <span class="comment">// all other types are nonempty</span></div>
|
||
<div class="line"><a name="l19148"></a><span class="lineno">19148</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||
<div class="line"><a name="l19149"></a><span class="lineno">19149</span>  }</div>
|
||
<div class="line"><a name="l19150"></a><span class="lineno">19150</span>  }</div>
|
||
<div class="line"><a name="l19151"></a><span class="lineno">19151</span>  }</div>
|
||
<div class="line"><a name="l19152"></a><span class="lineno">19152</span>  </div>
|
||
<div class="line"><a name="l19195"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a25e27ad0c6d53c01871c5485e1f75b96">19195</a></span>  <a class="code" href="classnlohmann_1_1basic__json.html#a39f2cd0b58106097e0e67bf185cc519b">size_type</a> <a class="code" href="classnlohmann_1_1basic__json.html#a25e27ad0c6d53c01871c5485e1f75b96">size</a>() const noexcept</div>
|
||
<div class="line"><a name="l19196"></a><span class="lineno">19196</span>  {</div>
|
||
<div class="line"><a name="l19197"></a><span class="lineno">19197</span>  <span class="keywordflow">switch</span> (m_type)</div>
|
||
<div class="line"><a name="l19198"></a><span class="lineno">19198</span>  {</div>
|
||
<div class="line"><a name="l19199"></a><span class="lineno">19199</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a37a6259cc0c1dae299a7866489dff0bd">value_t::null</a>:</div>
|
||
<div class="line"><a name="l19200"></a><span class="lineno">19200</span>  {</div>
|
||
<div class="line"><a name="l19201"></a><span class="lineno">19201</span>  <span class="comment">// null values are empty</span></div>
|
||
<div class="line"><a name="l19202"></a><span class="lineno">19202</span>  <span class="keywordflow">return</span> 0;</div>
|
||
<div class="line"><a name="l19203"></a><span class="lineno">19203</span>  }</div>
|
||
<div class="line"><a name="l19204"></a><span class="lineno">19204</span>  </div>
|
||
<div class="line"><a name="l19205"></a><span class="lineno">19205</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>:</div>
|
||
<div class="line"><a name="l19206"></a><span class="lineno">19206</span>  {</div>
|
||
<div class="line"><a name="l19207"></a><span class="lineno">19207</span>  <span class="comment">// delegate call to array_t::size()</span></div>
|
||
<div class="line"><a name="l19208"></a><span class="lineno">19208</span>  <span class="keywordflow">return</span> m_value.array->size();</div>
|
||
<div class="line"><a name="l19209"></a><span class="lineno">19209</span>  }</div>
|
||
<div class="line"><a name="l19210"></a><span class="lineno">19210</span>  </div>
|
||
<div class="line"><a name="l19211"></a><span class="lineno">19211</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>:</div>
|
||
<div class="line"><a name="l19212"></a><span class="lineno">19212</span>  {</div>
|
||
<div class="line"><a name="l19213"></a><span class="lineno">19213</span>  <span class="comment">// delegate call to object_t::size()</span></div>
|
||
<div class="line"><a name="l19214"></a><span class="lineno">19214</span>  <span class="keywordflow">return</span> m_value.object->size();</div>
|
||
<div class="line"><a name="l19215"></a><span class="lineno">19215</span>  }</div>
|
||
<div class="line"><a name="l19216"></a><span class="lineno">19216</span>  </div>
|
||
<div class="line"><a name="l19217"></a><span class="lineno">19217</span>  <span class="keywordflow">default</span>:</div>
|
||
<div class="line"><a name="l19218"></a><span class="lineno">19218</span>  {</div>
|
||
<div class="line"><a name="l19219"></a><span class="lineno">19219</span>  <span class="comment">// all other types have size 1</span></div>
|
||
<div class="line"><a name="l19220"></a><span class="lineno">19220</span>  <span class="keywordflow">return</span> 1;</div>
|
||
<div class="line"><a name="l19221"></a><span class="lineno">19221</span>  }</div>
|
||
<div class="line"><a name="l19222"></a><span class="lineno">19222</span>  }</div>
|
||
<div class="line"><a name="l19223"></a><span class="lineno">19223</span>  }</div>
|
||
<div class="line"><a name="l19224"></a><span class="lineno">19224</span>  </div>
|
||
<div class="line"><a name="l19265"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a2f47d3c6a441c57dd2be00449fbb88e1">19265</a></span>  <a class="code" href="classnlohmann_1_1basic__json.html#a39f2cd0b58106097e0e67bf185cc519b">size_type</a> <a class="code" href="classnlohmann_1_1basic__json.html#a2f47d3c6a441c57dd2be00449fbb88e1">max_size</a>() const noexcept</div>
|
||
<div class="line"><a name="l19266"></a><span class="lineno">19266</span>  {</div>
|
||
<div class="line"><a name="l19267"></a><span class="lineno">19267</span>  <span class="keywordflow">switch</span> (m_type)</div>
|
||
<div class="line"><a name="l19268"></a><span class="lineno">19268</span>  {</div>
|
||
<div class="line"><a name="l19269"></a><span class="lineno">19269</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>:</div>
|
||
<div class="line"><a name="l19270"></a><span class="lineno">19270</span>  {</div>
|
||
<div class="line"><a name="l19271"></a><span class="lineno">19271</span>  <span class="comment">// delegate call to array_t::max_size()</span></div>
|
||
<div class="line"><a name="l19272"></a><span class="lineno">19272</span>  <span class="keywordflow">return</span> m_value.array->max_size();</div>
|
||
<div class="line"><a name="l19273"></a><span class="lineno">19273</span>  }</div>
|
||
<div class="line"><a name="l19274"></a><span class="lineno">19274</span>  </div>
|
||
<div class="line"><a name="l19275"></a><span class="lineno">19275</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>:</div>
|
||
<div class="line"><a name="l19276"></a><span class="lineno">19276</span>  {</div>
|
||
<div class="line"><a name="l19277"></a><span class="lineno">19277</span>  <span class="comment">// delegate call to object_t::max_size()</span></div>
|
||
<div class="line"><a name="l19278"></a><span class="lineno">19278</span>  <span class="keywordflow">return</span> m_value.object->max_size();</div>
|
||
<div class="line"><a name="l19279"></a><span class="lineno">19279</span>  }</div>
|
||
<div class="line"><a name="l19280"></a><span class="lineno">19280</span>  </div>
|
||
<div class="line"><a name="l19281"></a><span class="lineno">19281</span>  <span class="keywordflow">default</span>:</div>
|
||
<div class="line"><a name="l19282"></a><span class="lineno">19282</span>  {</div>
|
||
<div class="line"><a name="l19283"></a><span class="lineno">19283</span>  <span class="comment">// all other types have max_size() == size()</span></div>
|
||
<div class="line"><a name="l19284"></a><span class="lineno">19284</span>  <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json.html#a25e27ad0c6d53c01871c5485e1f75b96">size</a>();</div>
|
||
<div class="line"><a name="l19285"></a><span class="lineno">19285</span>  }</div>
|
||
<div class="line"><a name="l19286"></a><span class="lineno">19286</span>  }</div>
|
||
<div class="line"><a name="l19287"></a><span class="lineno">19287</span>  }</div>
|
||
<div class="line"><a name="l19288"></a><span class="lineno">19288</span>  </div>
|
||
<div class="line"><a name="l19290"></a><span class="lineno">19290</span>  </div>
|
||
<div class="line"><a name="l19291"></a><span class="lineno">19291</span>  </div>
|
||
<div class="line"><a name="l19293"></a><span class="lineno">19293</span>  <span class="comment">// modifiers //</span></div>
|
||
<div class="line"><a name="l19295"></a><span class="lineno">19295</span> <span class="comment"></span> </div>
|
||
<div class="line"><a name="l19298"></a><span class="lineno">19298</span>  </div>
|
||
<div class="line"><a name="l19335"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#abfeba47810ca72f2176419942c4e1952">19335</a></span>  <span class="keywordtype">void</span> <a class="code" href="classnlohmann_1_1basic__json.html#abfeba47810ca72f2176419942c4e1952">clear</a>() noexcept</div>
|
||
<div class="line"><a name="l19336"></a><span class="lineno">19336</span>  {</div>
|
||
<div class="line"><a name="l19337"></a><span class="lineno">19337</span>  <span class="keywordflow">switch</span> (m_type)</div>
|
||
<div class="line"><a name="l19338"></a><span class="lineno">19338</span>  {</div>
|
||
<div class="line"><a name="l19339"></a><span class="lineno">19339</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a5763da164f8659d94a56e29df64b4bcc">value_t::number_integer</a>:</div>
|
||
<div class="line"><a name="l19340"></a><span class="lineno">19340</span>  {</div>
|
||
<div class="line"><a name="l19341"></a><span class="lineno">19341</span>  m_value.number_integer = 0;</div>
|
||
<div class="line"><a name="l19342"></a><span class="lineno">19342</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l19343"></a><span class="lineno">19343</span>  }</div>
|
||
<div class="line"><a name="l19344"></a><span class="lineno">19344</span>  </div>
|
||
<div class="line"><a name="l19345"></a><span class="lineno">19345</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985adce7cc8ec29055c4158828921f2f265e">value_t::number_unsigned</a>:</div>
|
||
<div class="line"><a name="l19346"></a><span class="lineno">19346</span>  {</div>
|
||
<div class="line"><a name="l19347"></a><span class="lineno">19347</span>  m_value.number_unsigned = 0;</div>
|
||
<div class="line"><a name="l19348"></a><span class="lineno">19348</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l19349"></a><span class="lineno">19349</span>  }</div>
|
||
<div class="line"><a name="l19350"></a><span class="lineno">19350</span>  </div>
|
||
<div class="line"><a name="l19351"></a><span class="lineno">19351</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ad9966ecb59667235a57b4b999a649eef">value_t::number_float</a>:</div>
|
||
<div class="line"><a name="l19352"></a><span class="lineno">19352</span>  {</div>
|
||
<div class="line"><a name="l19353"></a><span class="lineno">19353</span>  m_value.number_float = 0.0;</div>
|
||
<div class="line"><a name="l19354"></a><span class="lineno">19354</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l19355"></a><span class="lineno">19355</span>  }</div>
|
||
<div class="line"><a name="l19356"></a><span class="lineno">19356</span>  </div>
|
||
<div class="line"><a name="l19357"></a><span class="lineno">19357</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a84e2c64f38f78ba3ea5c905ab5a2da27">value_t::boolean</a>:</div>
|
||
<div class="line"><a name="l19358"></a><span class="lineno">19358</span>  {</div>
|
||
<div class="line"><a name="l19359"></a><span class="lineno">19359</span>  m_value.boolean = <span class="keyword">false</span>;</div>
|
||
<div class="line"><a name="l19360"></a><span class="lineno">19360</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l19361"></a><span class="lineno">19361</span>  }</div>
|
||
<div class="line"><a name="l19362"></a><span class="lineno">19362</span>  </div>
|
||
<div class="line"><a name="l19363"></a><span class="lineno">19363</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ab45cffe084dd3d20d928bee85e7b0f21">value_t::string</a>:</div>
|
||
<div class="line"><a name="l19364"></a><span class="lineno">19364</span>  {</div>
|
||
<div class="line"><a name="l19365"></a><span class="lineno">19365</span>  m_value.string->clear();</div>
|
||
<div class="line"><a name="l19366"></a><span class="lineno">19366</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l19367"></a><span class="lineno">19367</span>  }</div>
|
||
<div class="line"><a name="l19368"></a><span class="lineno">19368</span>  </div>
|
||
<div class="line"><a name="l19369"></a><span class="lineno">19369</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>:</div>
|
||
<div class="line"><a name="l19370"></a><span class="lineno">19370</span>  {</div>
|
||
<div class="line"><a name="l19371"></a><span class="lineno">19371</span>  m_value.array->clear();</div>
|
||
<div class="line"><a name="l19372"></a><span class="lineno">19372</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l19373"></a><span class="lineno">19373</span>  }</div>
|
||
<div class="line"><a name="l19374"></a><span class="lineno">19374</span>  </div>
|
||
<div class="line"><a name="l19375"></a><span class="lineno">19375</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>:</div>
|
||
<div class="line"><a name="l19376"></a><span class="lineno">19376</span>  {</div>
|
||
<div class="line"><a name="l19377"></a><span class="lineno">19377</span>  m_value.object->clear();</div>
|
||
<div class="line"><a name="l19378"></a><span class="lineno">19378</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l19379"></a><span class="lineno">19379</span>  }</div>
|
||
<div class="line"><a name="l19380"></a><span class="lineno">19380</span>  </div>
|
||
<div class="line"><a name="l19381"></a><span class="lineno">19381</span>  <span class="keywordflow">default</span>:</div>
|
||
<div class="line"><a name="l19382"></a><span class="lineno">19382</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l19383"></a><span class="lineno">19383</span>  }</div>
|
||
<div class="line"><a name="l19384"></a><span class="lineno">19384</span>  }</div>
|
||
<div class="line"><a name="l19385"></a><span class="lineno">19385</span>  </div>
|
||
<div class="line"><a name="l19406"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#ac8e523ddc8c2dd7e5d2daf0d49a9c0d7">19406</a></span>  <span class="keywordtype">void</span> <a class="code" href="classnlohmann_1_1basic__json.html#ac8e523ddc8c2dd7e5d2daf0d49a9c0d7">push_back</a>(<a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a>&& val)</div>
|
||
<div class="line"><a name="l19407"></a><span class="lineno">19407</span>  {</div>
|
||
<div class="line"><a name="l19408"></a><span class="lineno">19408</span>  <span class="comment">// push_back only works for null objects or arrays</span></div>
|
||
<div class="line"><a name="l19409"></a><span class="lineno">19409</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not(<a class="code" href="classnlohmann_1_1basic__json.html#a8faa039ca82427ed29c486ffd00600c3">is_null</a>() or <a class="code" href="classnlohmann_1_1basic__json.html#aef9ce5dd2381caee1f8ddcdb5bdd9c65">is_array</a>())))</div>
|
||
<div class="line"><a name="l19410"></a><span class="lineno">19410</span>  {</div>
|
||
<div class="line"><a name="l19411"></a><span class="lineno">19411</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(308, <span class="stringliteral">"cannot use push_back() with "</span> + std::string(<a class="code" href="classnlohmann_1_1basic__json.html#ad14563c53cf7ca9189bc164082367bf3">type_name</a>())));</div>
|
||
<div class="line"><a name="l19412"></a><span class="lineno">19412</span>  }</div>
|
||
<div class="line"><a name="l19413"></a><span class="lineno">19413</span>  </div>
|
||
<div class="line"><a name="l19414"></a><span class="lineno">19414</span>  <span class="comment">// transform null object into an array</span></div>
|
||
<div class="line"><a name="l19415"></a><span class="lineno">19415</span>  <span class="keywordflow">if</span> (<a class="code" href="classnlohmann_1_1basic__json.html#a8faa039ca82427ed29c486ffd00600c3">is_null</a>())</div>
|
||
<div class="line"><a name="l19416"></a><span class="lineno">19416</span>  {</div>
|
||
<div class="line"><a name="l19417"></a><span class="lineno">19417</span>  m_type = <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>;</div>
|
||
<div class="line"><a name="l19418"></a><span class="lineno">19418</span>  m_value = <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>;</div>
|
||
<div class="line"><a name="l19419"></a><span class="lineno">19419</span>  assert_invariant();</div>
|
||
<div class="line"><a name="l19420"></a><span class="lineno">19420</span>  }</div>
|
||
<div class="line"><a name="l19421"></a><span class="lineno">19421</span>  </div>
|
||
<div class="line"><a name="l19422"></a><span class="lineno">19422</span>  <span class="comment">// add element to array (move semantics)</span></div>
|
||
<div class="line"><a name="l19423"></a><span class="lineno">19423</span>  m_value.array->push_back(std::move(val));</div>
|
||
<div class="line"><a name="l19424"></a><span class="lineno">19424</span>  <span class="comment">// invalidate object: mark it null so we do not call the destructor</span></div>
|
||
<div class="line"><a name="l19425"></a><span class="lineno">19425</span>  <span class="comment">// cppcheck-suppress accessMoved</span></div>
|
||
<div class="line"><a name="l19426"></a><span class="lineno">19426</span>  val.m_type = <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a37a6259cc0c1dae299a7866489dff0bd">value_t::null</a>;</div>
|
||
<div class="line"><a name="l19427"></a><span class="lineno">19427</span>  }</div>
|
||
<div class="line"><a name="l19428"></a><span class="lineno">19428</span>  </div>
|
||
<div class="line"><a name="l19433"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#aea1085f2d35cc0e1ce119cf0110119e6">19433</a></span>  <a class="code" href="classnlohmann_1_1basic__json.html">reference</a> <a class="code" href="classnlohmann_1_1basic__json.html#aea1085f2d35cc0e1ce119cf0110119e6">operator+=</a>(<a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a>&& val)</div>
|
||
<div class="line"><a name="l19434"></a><span class="lineno">19434</span>  {</div>
|
||
<div class="line"><a name="l19435"></a><span class="lineno">19435</span>  <a class="code" href="classnlohmann_1_1basic__json.html#ac8e523ddc8c2dd7e5d2daf0d49a9c0d7">push_back</a>(std::move(val));</div>
|
||
<div class="line"><a name="l19436"></a><span class="lineno">19436</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
|
||
<div class="line"><a name="l19437"></a><span class="lineno">19437</span>  }</div>
|
||
<div class="line"><a name="l19438"></a><span class="lineno">19438</span>  </div>
|
||
<div class="line"><a name="l19443"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#ab4384af330b79de0e5f279576803a2c7">19443</a></span>  <span class="keywordtype">void</span> <a class="code" href="classnlohmann_1_1basic__json.html#ab4384af330b79de0e5f279576803a2c7">push_back</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a>& val)</div>
|
||
<div class="line"><a name="l19444"></a><span class="lineno">19444</span>  {</div>
|
||
<div class="line"><a name="l19445"></a><span class="lineno">19445</span>  <span class="comment">// push_back only works for null objects or arrays</span></div>
|
||
<div class="line"><a name="l19446"></a><span class="lineno">19446</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not(<a class="code" href="classnlohmann_1_1basic__json.html#a8faa039ca82427ed29c486ffd00600c3">is_null</a>() or <a class="code" href="classnlohmann_1_1basic__json.html#aef9ce5dd2381caee1f8ddcdb5bdd9c65">is_array</a>())))</div>
|
||
<div class="line"><a name="l19447"></a><span class="lineno">19447</span>  {</div>
|
||
<div class="line"><a name="l19448"></a><span class="lineno">19448</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(308, <span class="stringliteral">"cannot use push_back() with "</span> + std::string(<a class="code" href="classnlohmann_1_1basic__json.html#ad14563c53cf7ca9189bc164082367bf3">type_name</a>())));</div>
|
||
<div class="line"><a name="l19449"></a><span class="lineno">19449</span>  }</div>
|
||
<div class="line"><a name="l19450"></a><span class="lineno">19450</span>  </div>
|
||
<div class="line"><a name="l19451"></a><span class="lineno">19451</span>  <span class="comment">// transform null object into an array</span></div>
|
||
<div class="line"><a name="l19452"></a><span class="lineno">19452</span>  <span class="keywordflow">if</span> (<a class="code" href="classnlohmann_1_1basic__json.html#a8faa039ca82427ed29c486ffd00600c3">is_null</a>())</div>
|
||
<div class="line"><a name="l19453"></a><span class="lineno">19453</span>  {</div>
|
||
<div class="line"><a name="l19454"></a><span class="lineno">19454</span>  m_type = <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>;</div>
|
||
<div class="line"><a name="l19455"></a><span class="lineno">19455</span>  m_value = <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>;</div>
|
||
<div class="line"><a name="l19456"></a><span class="lineno">19456</span>  assert_invariant();</div>
|
||
<div class="line"><a name="l19457"></a><span class="lineno">19457</span>  }</div>
|
||
<div class="line"><a name="l19458"></a><span class="lineno">19458</span>  </div>
|
||
<div class="line"><a name="l19459"></a><span class="lineno">19459</span>  <span class="comment">// add element to array</span></div>
|
||
<div class="line"><a name="l19460"></a><span class="lineno">19460</span>  m_value.array->push_back(val);</div>
|
||
<div class="line"><a name="l19461"></a><span class="lineno">19461</span>  }</div>
|
||
<div class="line"><a name="l19462"></a><span class="lineno">19462</span>  </div>
|
||
<div class="line"><a name="l19467"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#adc29dd6358ff7a9062d7e168c24e7484">19467</a></span>  <a class="code" href="classnlohmann_1_1basic__json.html">reference</a> <a class="code" href="classnlohmann_1_1basic__json.html#adc29dd6358ff7a9062d7e168c24e7484">operator+=</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a>& val)</div>
|
||
<div class="line"><a name="l19468"></a><span class="lineno">19468</span>  {</div>
|
||
<div class="line"><a name="l19469"></a><span class="lineno">19469</span>  <a class="code" href="classnlohmann_1_1basic__json.html#ac8e523ddc8c2dd7e5d2daf0d49a9c0d7">push_back</a>(val);</div>
|
||
<div class="line"><a name="l19470"></a><span class="lineno">19470</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
|
||
<div class="line"><a name="l19471"></a><span class="lineno">19471</span>  }</div>
|
||
<div class="line"><a name="l19472"></a><span class="lineno">19472</span>  </div>
|
||
<div class="line"><a name="l19493"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#ae11a3a51782c058fff2f6550cdfb9b3c">19493</a></span>  <span class="keywordtype">void</span> <a class="code" href="classnlohmann_1_1basic__json.html#ae11a3a51782c058fff2f6550cdfb9b3c">push_back</a>(<span class="keyword">const</span> <span class="keyword">typename</span> object_t::value_type& val)</div>
|
||
<div class="line"><a name="l19494"></a><span class="lineno">19494</span>  {</div>
|
||
<div class="line"><a name="l19495"></a><span class="lineno">19495</span>  <span class="comment">// push_back only works for null objects or objects</span></div>
|
||
<div class="line"><a name="l19496"></a><span class="lineno">19496</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not(<a class="code" href="classnlohmann_1_1basic__json.html#a8faa039ca82427ed29c486ffd00600c3">is_null</a>() or <a class="code" href="classnlohmann_1_1basic__json.html#af8f511af124e82e4579f444b4175787c">is_object</a>())))</div>
|
||
<div class="line"><a name="l19497"></a><span class="lineno">19497</span>  {</div>
|
||
<div class="line"><a name="l19498"></a><span class="lineno">19498</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(308, <span class="stringliteral">"cannot use push_back() with "</span> + std::string(<a class="code" href="classnlohmann_1_1basic__json.html#ad14563c53cf7ca9189bc164082367bf3">type_name</a>())));</div>
|
||
<div class="line"><a name="l19499"></a><span class="lineno">19499</span>  }</div>
|
||
<div class="line"><a name="l19500"></a><span class="lineno">19500</span>  </div>
|
||
<div class="line"><a name="l19501"></a><span class="lineno">19501</span>  <span class="comment">// transform null object into an object</span></div>
|
||
<div class="line"><a name="l19502"></a><span class="lineno">19502</span>  <span class="keywordflow">if</span> (<a class="code" href="classnlohmann_1_1basic__json.html#a8faa039ca82427ed29c486ffd00600c3">is_null</a>())</div>
|
||
<div class="line"><a name="l19503"></a><span class="lineno">19503</span>  {</div>
|
||
<div class="line"><a name="l19504"></a><span class="lineno">19504</span>  m_type = <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>;</div>
|
||
<div class="line"><a name="l19505"></a><span class="lineno">19505</span>  m_value = <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>;</div>
|
||
<div class="line"><a name="l19506"></a><span class="lineno">19506</span>  assert_invariant();</div>
|
||
<div class="line"><a name="l19507"></a><span class="lineno">19507</span>  }</div>
|
||
<div class="line"><a name="l19508"></a><span class="lineno">19508</span>  </div>
|
||
<div class="line"><a name="l19509"></a><span class="lineno">19509</span>  <span class="comment">// add element to array</span></div>
|
||
<div class="line"><a name="l19510"></a><span class="lineno">19510</span>  m_value.object->insert(val);</div>
|
||
<div class="line"><a name="l19511"></a><span class="lineno">19511</span>  }</div>
|
||
<div class="line"><a name="l19512"></a><span class="lineno">19512</span>  </div>
|
||
<div class="line"><a name="l19517"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#abf04978d85a2d5c4754f4806d42f46fd">19517</a></span>  <a class="code" href="classnlohmann_1_1basic__json.html">reference</a> <a class="code" href="classnlohmann_1_1basic__json.html#abf04978d85a2d5c4754f4806d42f46fd">operator+=</a>(<span class="keyword">const</span> <span class="keyword">typename</span> object_t::value_type& val)</div>
|
||
<div class="line"><a name="l19518"></a><span class="lineno">19518</span>  {</div>
|
||
<div class="line"><a name="l19519"></a><span class="lineno">19519</span>  <a class="code" href="classnlohmann_1_1basic__json.html#ac8e523ddc8c2dd7e5d2daf0d49a9c0d7">push_back</a>(val);</div>
|
||
<div class="line"><a name="l19520"></a><span class="lineno">19520</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
|
||
<div class="line"><a name="l19521"></a><span class="lineno">19521</span>  }</div>
|
||
<div class="line"><a name="l19522"></a><span class="lineno">19522</span>  </div>
|
||
<div class="line"><a name="l19548"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a1be31ef2d2934d37a818083a4af44f99">19548</a></span>  <span class="keywordtype">void</span> <a class="code" href="classnlohmann_1_1basic__json.html#a1be31ef2d2934d37a818083a4af44f99">push_back</a>(<a class="code" href="classnlohmann_1_1basic__json.html#ad70a098fbc01c53497db29d3b5b656a9">initializer_list_t</a> init)</div>
|
||
<div class="line"><a name="l19549"></a><span class="lineno">19549</span>  {</div>
|
||
<div class="line"><a name="l19550"></a><span class="lineno">19550</span>  <span class="keywordflow">if</span> (<a class="code" href="classnlohmann_1_1basic__json.html#af8f511af124e82e4579f444b4175787c">is_object</a>() and init.size() == 2 and (*init.begin())->is_string())</div>
|
||
<div class="line"><a name="l19551"></a><span class="lineno">19551</span>  {</div>
|
||
<div class="line"><a name="l19552"></a><span class="lineno">19552</span>  <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a>&& key = init.<a class="code" href="classnlohmann_1_1basic__json.html#a0ff28dac23f2bdecee9564d07f51dcdc">begin</a>()->moved_or_copied();</div>
|
||
<div class="line"><a name="l19553"></a><span class="lineno">19553</span>  <a class="code" href="classnlohmann_1_1basic__json.html#ac8e523ddc8c2dd7e5d2daf0d49a9c0d7">push_back</a>(<span class="keyword">typename</span> object_t::value_type(</div>
|
||
<div class="line"><a name="l19554"></a><span class="lineno">19554</span>  std::move(key.get_ref<<a class="code" href="classnlohmann_1_1basic__json.html#a61f8566a1a85a424c7266fb531dca005">string_t</a>&>()), (init.begin() + 1)->moved_or_copied()));</div>
|
||
<div class="line"><a name="l19555"></a><span class="lineno">19555</span>  }</div>
|
||
<div class="line"><a name="l19556"></a><span class="lineno">19556</span>  <span class="keywordflow">else</span></div>
|
||
<div class="line"><a name="l19557"></a><span class="lineno">19557</span>  {</div>
|
||
<div class="line"><a name="l19558"></a><span class="lineno">19558</span>  <a class="code" href="classnlohmann_1_1basic__json.html#ac8e523ddc8c2dd7e5d2daf0d49a9c0d7">push_back</a>(<a class="code" href="classnlohmann_1_1basic__json.html#aed115142bd0c6c66c864700e0467df55">basic_json</a>(init));</div>
|
||
<div class="line"><a name="l19559"></a><span class="lineno">19559</span>  }</div>
|
||
<div class="line"><a name="l19560"></a><span class="lineno">19560</span>  }</div>
|
||
<div class="line"><a name="l19561"></a><span class="lineno">19561</span>  </div>
|
||
<div class="line"><a name="l19566"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#af245c2b6714d76ed99a2d02f2596d596">19566</a></span>  <a class="code" href="classnlohmann_1_1basic__json.html">reference</a> <a class="code" href="classnlohmann_1_1basic__json.html#af245c2b6714d76ed99a2d02f2596d596">operator+=</a>(<a class="code" href="classnlohmann_1_1basic__json.html#ad70a098fbc01c53497db29d3b5b656a9">initializer_list_t</a> init)</div>
|
||
<div class="line"><a name="l19567"></a><span class="lineno">19567</span>  {</div>
|
||
<div class="line"><a name="l19568"></a><span class="lineno">19568</span>  <a class="code" href="classnlohmann_1_1basic__json.html#ac8e523ddc8c2dd7e5d2daf0d49a9c0d7">push_back</a>(init);</div>
|
||
<div class="line"><a name="l19569"></a><span class="lineno">19569</span>  <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
|
||
<div class="line"><a name="l19570"></a><span class="lineno">19570</span>  }</div>
|
||
<div class="line"><a name="l19571"></a><span class="lineno">19571</span>  </div>
|
||
<div class="line"><a name="l19595"></a><span class="lineno">19595</span>  <span class="keyword">template</span><<span class="keyword">class</span>... Args></div>
|
||
<div class="line"><a name="l19596"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#abf29131f898b05aad2c01a9c80e7a002">19596</a></span>  <a class="code" href="classnlohmann_1_1basic__json.html">reference</a> <a class="code" href="classnlohmann_1_1basic__json.html#abf29131f898b05aad2c01a9c80e7a002">emplace_back</a>(Args&& ... args)</div>
|
||
<div class="line"><a name="l19597"></a><span class="lineno">19597</span>  {</div>
|
||
<div class="line"><a name="l19598"></a><span class="lineno">19598</span>  <span class="comment">// emplace_back only works for null objects or arrays</span></div>
|
||
<div class="line"><a name="l19599"></a><span class="lineno">19599</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not(<a class="code" href="classnlohmann_1_1basic__json.html#a8faa039ca82427ed29c486ffd00600c3">is_null</a>() or <a class="code" href="classnlohmann_1_1basic__json.html#aef9ce5dd2381caee1f8ddcdb5bdd9c65">is_array</a>())))</div>
|
||
<div class="line"><a name="l19600"></a><span class="lineno">19600</span>  {</div>
|
||
<div class="line"><a name="l19601"></a><span class="lineno">19601</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(311, <span class="stringliteral">"cannot use emplace_back() with "</span> + std::string(<a class="code" href="classnlohmann_1_1basic__json.html#ad14563c53cf7ca9189bc164082367bf3">type_name</a>())));</div>
|
||
<div class="line"><a name="l19602"></a><span class="lineno">19602</span>  }</div>
|
||
<div class="line"><a name="l19603"></a><span class="lineno">19603</span>  </div>
|
||
<div class="line"><a name="l19604"></a><span class="lineno">19604</span>  <span class="comment">// transform null object into an array</span></div>
|
||
<div class="line"><a name="l19605"></a><span class="lineno">19605</span>  <span class="keywordflow">if</span> (<a class="code" href="classnlohmann_1_1basic__json.html#a8faa039ca82427ed29c486ffd00600c3">is_null</a>())</div>
|
||
<div class="line"><a name="l19606"></a><span class="lineno">19606</span>  {</div>
|
||
<div class="line"><a name="l19607"></a><span class="lineno">19607</span>  m_type = <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>;</div>
|
||
<div class="line"><a name="l19608"></a><span class="lineno">19608</span>  m_value = <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>;</div>
|
||
<div class="line"><a name="l19609"></a><span class="lineno">19609</span>  assert_invariant();</div>
|
||
<div class="line"><a name="l19610"></a><span class="lineno">19610</span>  }</div>
|
||
<div class="line"><a name="l19611"></a><span class="lineno">19611</span>  </div>
|
||
<div class="line"><a name="l19612"></a><span class="lineno">19612</span>  <span class="comment">// add element to array (perfect forwarding)</span></div>
|
||
<div class="line"><a name="l19613"></a><span class="lineno">19613</span> <span class="preprocessor">#ifdef JSON_HAS_CPP_17</span></div>
|
||
<div class="line"><a name="l19614"></a><span class="lineno">19614</span>  <span class="keywordflow">return</span> m_value.array->emplace_back(std::forward<Args>(args)...);</div>
|
||
<div class="line"><a name="l19615"></a><span class="lineno">19615</span> <span class="preprocessor">#else</span></div>
|
||
<div class="line"><a name="l19616"></a><span class="lineno">19616</span>  m_value.array->emplace_back(std::forward<Args>(args)...);</div>
|
||
<div class="line"><a name="l19617"></a><span class="lineno">19617</span>  <span class="keywordflow">return</span> m_value.array->back();</div>
|
||
<div class="line"><a name="l19618"></a><span class="lineno">19618</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l19619"></a><span class="lineno">19619</span>  }</div>
|
||
<div class="line"><a name="l19620"></a><span class="lineno">19620</span>  </div>
|
||
<div class="line"><a name="l19648"></a><span class="lineno">19648</span>  <span class="keyword">template</span><<span class="keyword">class</span>... Args></div>
|
||
<div class="line"><a name="l19649"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a5338e282d1d02bed389d852dd670d98d">19649</a></span>  std::pair<iterator, bool> <a class="code" href="classnlohmann_1_1basic__json.html#a5338e282d1d02bed389d852dd670d98d">emplace</a>(Args&& ... args)</div>
|
||
<div class="line"><a name="l19650"></a><span class="lineno">19650</span>  {</div>
|
||
<div class="line"><a name="l19651"></a><span class="lineno">19651</span>  <span class="comment">// emplace only works for null objects or arrays</span></div>
|
||
<div class="line"><a name="l19652"></a><span class="lineno">19652</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not(<a class="code" href="classnlohmann_1_1basic__json.html#a8faa039ca82427ed29c486ffd00600c3">is_null</a>() or <a class="code" href="classnlohmann_1_1basic__json.html#af8f511af124e82e4579f444b4175787c">is_object</a>())))</div>
|
||
<div class="line"><a name="l19653"></a><span class="lineno">19653</span>  {</div>
|
||
<div class="line"><a name="l19654"></a><span class="lineno">19654</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(311, <span class="stringliteral">"cannot use emplace() with "</span> + std::string(<a class="code" href="classnlohmann_1_1basic__json.html#ad14563c53cf7ca9189bc164082367bf3">type_name</a>())));</div>
|
||
<div class="line"><a name="l19655"></a><span class="lineno">19655</span>  }</div>
|
||
<div class="line"><a name="l19656"></a><span class="lineno">19656</span>  </div>
|
||
<div class="line"><a name="l19657"></a><span class="lineno">19657</span>  <span class="comment">// transform null object into an object</span></div>
|
||
<div class="line"><a name="l19658"></a><span class="lineno">19658</span>  <span class="keywordflow">if</span> (<a class="code" href="classnlohmann_1_1basic__json.html#a8faa039ca82427ed29c486ffd00600c3">is_null</a>())</div>
|
||
<div class="line"><a name="l19659"></a><span class="lineno">19659</span>  {</div>
|
||
<div class="line"><a name="l19660"></a><span class="lineno">19660</span>  m_type = <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>;</div>
|
||
<div class="line"><a name="l19661"></a><span class="lineno">19661</span>  m_value = <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>;</div>
|
||
<div class="line"><a name="l19662"></a><span class="lineno">19662</span>  assert_invariant();</div>
|
||
<div class="line"><a name="l19663"></a><span class="lineno">19663</span>  }</div>
|
||
<div class="line"><a name="l19664"></a><span class="lineno">19664</span>  </div>
|
||
<div class="line"><a name="l19665"></a><span class="lineno">19665</span>  <span class="comment">// add element to array (perfect forwarding)</span></div>
|
||
<div class="line"><a name="l19666"></a><span class="lineno">19666</span>  <span class="keyword">auto</span> res = m_value.object->emplace(std::forward<Args>(args)...);</div>
|
||
<div class="line"><a name="l19667"></a><span class="lineno">19667</span>  <span class="comment">// create result iterator and set iterator to the result of emplace</span></div>
|
||
<div class="line"><a name="l19668"></a><span class="lineno">19668</span>  <span class="keyword">auto</span> it = <a class="code" href="classnlohmann_1_1basic__json.html#a0ff28dac23f2bdecee9564d07f51dcdc">begin</a>();</div>
|
||
<div class="line"><a name="l19669"></a><span class="lineno">19669</span>  it.m_it.object_iterator = res.first;</div>
|
||
<div class="line"><a name="l19670"></a><span class="lineno">19670</span>  </div>
|
||
<div class="line"><a name="l19671"></a><span class="lineno">19671</span>  <span class="comment">// return pair of iterator and boolean</span></div>
|
||
<div class="line"><a name="l19672"></a><span class="lineno">19672</span>  <span class="keywordflow">return</span> {it, res.second};</div>
|
||
<div class="line"><a name="l19673"></a><span class="lineno">19673</span>  }</div>
|
||
<div class="line"><a name="l19674"></a><span class="lineno">19674</span>  </div>
|
||
<div class="line"><a name="l19678"></a><span class="lineno">19678</span>  <span class="keyword">template</span><<span class="keyword">typename</span>... Args></div>
|
||
<div class="line"><a name="l19679"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a316663487f1d20c0cf349b23f9494bda">19679</a></span>  <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">iterator</a> <a class="code" href="classnlohmann_1_1basic__json.html#a316663487f1d20c0cf349b23f9494bda">insert_iterator</a>(<a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">const_iterator</a> pos, Args&& ... args)</div>
|
||
<div class="line"><a name="l19680"></a><span class="lineno">19680</span>  {</div>
|
||
<div class="line"><a name="l19681"></a><span class="lineno">19681</span>  <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">iterator</a> result(<span class="keyword">this</span>);</div>
|
||
<div class="line"><a name="l19682"></a><span class="lineno">19682</span>  assert(m_value.array != <span class="keyword">nullptr</span>);</div>
|
||
<div class="line"><a name="l19683"></a><span class="lineno">19683</span>  </div>
|
||
<div class="line"><a name="l19684"></a><span class="lineno">19684</span>  <span class="keyword">auto</span> insert_pos = std::distance(m_value.array->begin(), pos.m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a8294a6e6f01b58e1cce8fbae66a50b5d">array_iterator</a>);</div>
|
||
<div class="line"><a name="l19685"></a><span class="lineno">19685</span>  m_value.array->insert(pos.m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a8294a6e6f01b58e1cce8fbae66a50b5d">array_iterator</a>, std::forward<Args>(args)...);</div>
|
||
<div class="line"><a name="l19686"></a><span class="lineno">19686</span>  result.m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a8294a6e6f01b58e1cce8fbae66a50b5d">array_iterator</a> = m_value.array->begin() + insert_pos;</div>
|
||
<div class="line"><a name="l19687"></a><span class="lineno">19687</span>  </div>
|
||
<div class="line"><a name="l19688"></a><span class="lineno">19688</span>  <span class="comment">// This could have been written as:</span></div>
|
||
<div class="line"><a name="l19689"></a><span class="lineno">19689</span>  <span class="comment">// result.m_it.array_iterator = m_value.array->insert(pos.m_it.array_iterator, cnt, val);</span></div>
|
||
<div class="line"><a name="l19690"></a><span class="lineno">19690</span>  <span class="comment">// but the return value of insert is missing in GCC 4.8, so it is written this way instead.</span></div>
|
||
<div class="line"><a name="l19691"></a><span class="lineno">19691</span>  </div>
|
||
<div class="line"><a name="l19692"></a><span class="lineno">19692</span>  <span class="keywordflow">return</span> result;</div>
|
||
<div class="line"><a name="l19693"></a><span class="lineno">19693</span>  }</div>
|
||
<div class="line"><a name="l19694"></a><span class="lineno">19694</span>  </div>
|
||
<div class="line"><a name="l19717"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a0136728f5db69d4051c77b94307abd6c">19717</a></span>  <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">iterator</a> <a class="code" href="classnlohmann_1_1basic__json.html#a0136728f5db69d4051c77b94307abd6c">insert</a>(<a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">const_iterator</a> pos, <span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a>& val)</div>
|
||
<div class="line"><a name="l19718"></a><span class="lineno">19718</span>  {</div>
|
||
<div class="line"><a name="l19719"></a><span class="lineno">19719</span>  <span class="comment">// insert only works for arrays</span></div>
|
||
<div class="line"><a name="l19720"></a><span class="lineno">19720</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a355f2770653ff7bdd5c74b204b5a3ad0">JSON_HEDLEY_LIKELY</a>(<a class="code" href="classnlohmann_1_1basic__json.html#aef9ce5dd2381caee1f8ddcdb5bdd9c65">is_array</a>()))</div>
|
||
<div class="line"><a name="l19721"></a><span class="lineno">19721</span>  {</div>
|
||
<div class="line"><a name="l19722"></a><span class="lineno">19722</span>  <span class="comment">// check if iterator pos fits to this JSON value</span></div>
|
||
<div class="line"><a name="l19723"></a><span class="lineno">19723</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(pos.m_object != <span class="keyword">this</span>))</div>
|
||
<div class="line"><a name="l19724"></a><span class="lineno">19724</span>  {</div>
|
||
<div class="line"><a name="l19725"></a><span class="lineno">19725</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1invalid__iterator.html#a4e849260a3caa1b288c7e619130c6c09">invalid_iterator::create</a>(202, <span class="stringliteral">"iterator does not fit current value"</span>));</div>
|
||
<div class="line"><a name="l19726"></a><span class="lineno">19726</span>  }</div>
|
||
<div class="line"><a name="l19727"></a><span class="lineno">19727</span>  </div>
|
||
<div class="line"><a name="l19728"></a><span class="lineno">19728</span>  <span class="comment">// insert to array and return iterator</span></div>
|
||
<div class="line"><a name="l19729"></a><span class="lineno">19729</span>  <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json.html#a316663487f1d20c0cf349b23f9494bda">insert_iterator</a>(pos, val);</div>
|
||
<div class="line"><a name="l19730"></a><span class="lineno">19730</span>  }</div>
|
||
<div class="line"><a name="l19731"></a><span class="lineno">19731</span>  </div>
|
||
<div class="line"><a name="l19732"></a><span class="lineno">19732</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(309, <span class="stringliteral">"cannot use insert() with "</span> + std::string(<a class="code" href="classnlohmann_1_1basic__json.html#ad14563c53cf7ca9189bc164082367bf3">type_name</a>())));</div>
|
||
<div class="line"><a name="l19733"></a><span class="lineno">19733</span>  }</div>
|
||
<div class="line"><a name="l19734"></a><span class="lineno">19734</span>  </div>
|
||
<div class="line"><a name="l19739"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a1ecce113ff11dd294689ee4d45cbb855">19739</a></span>  <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">iterator</a> <a class="code" href="classnlohmann_1_1basic__json.html#a1ecce113ff11dd294689ee4d45cbb855">insert</a>(<a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">const_iterator</a> pos, <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a>&& val)</div>
|
||
<div class="line"><a name="l19740"></a><span class="lineno">19740</span>  {</div>
|
||
<div class="line"><a name="l19741"></a><span class="lineno">19741</span>  <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json.html#a0136728f5db69d4051c77b94307abd6c">insert</a>(pos, val);</div>
|
||
<div class="line"><a name="l19742"></a><span class="lineno">19742</span>  }</div>
|
||
<div class="line"><a name="l19743"></a><span class="lineno">19743</span>  </div>
|
||
<div class="line"><a name="l19768"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a30a7cc24f2931c20ecae37ec4a5e901f">19768</a></span>  <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">iterator</a> <a class="code" href="classnlohmann_1_1basic__json.html#a30a7cc24f2931c20ecae37ec4a5e901f">insert</a>(<a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">const_iterator</a> pos, <a class="code" href="classnlohmann_1_1basic__json.html#a39f2cd0b58106097e0e67bf185cc519b">size_type</a> cnt, <span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a>& val)</div>
|
||
<div class="line"><a name="l19769"></a><span class="lineno">19769</span>  {</div>
|
||
<div class="line"><a name="l19770"></a><span class="lineno">19770</span>  <span class="comment">// insert only works for arrays</span></div>
|
||
<div class="line"><a name="l19771"></a><span class="lineno">19771</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a355f2770653ff7bdd5c74b204b5a3ad0">JSON_HEDLEY_LIKELY</a>(<a class="code" href="classnlohmann_1_1basic__json.html#aef9ce5dd2381caee1f8ddcdb5bdd9c65">is_array</a>()))</div>
|
||
<div class="line"><a name="l19772"></a><span class="lineno">19772</span>  {</div>
|
||
<div class="line"><a name="l19773"></a><span class="lineno">19773</span>  <span class="comment">// check if iterator pos fits to this JSON value</span></div>
|
||
<div class="line"><a name="l19774"></a><span class="lineno">19774</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(pos.m_object != <span class="keyword">this</span>))</div>
|
||
<div class="line"><a name="l19775"></a><span class="lineno">19775</span>  {</div>
|
||
<div class="line"><a name="l19776"></a><span class="lineno">19776</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1invalid__iterator.html#a4e849260a3caa1b288c7e619130c6c09">invalid_iterator::create</a>(202, <span class="stringliteral">"iterator does not fit current value"</span>));</div>
|
||
<div class="line"><a name="l19777"></a><span class="lineno">19777</span>  }</div>
|
||
<div class="line"><a name="l19778"></a><span class="lineno">19778</span>  </div>
|
||
<div class="line"><a name="l19779"></a><span class="lineno">19779</span>  <span class="comment">// insert to array and return iterator</span></div>
|
||
<div class="line"><a name="l19780"></a><span class="lineno">19780</span>  <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json.html#a316663487f1d20c0cf349b23f9494bda">insert_iterator</a>(pos, cnt, val);</div>
|
||
<div class="line"><a name="l19781"></a><span class="lineno">19781</span>  }</div>
|
||
<div class="line"><a name="l19782"></a><span class="lineno">19782</span>  </div>
|
||
<div class="line"><a name="l19783"></a><span class="lineno">19783</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(309, <span class="stringliteral">"cannot use insert() with "</span> + std::string(<a class="code" href="classnlohmann_1_1basic__json.html#ad14563c53cf7ca9189bc164082367bf3">type_name</a>())));</div>
|
||
<div class="line"><a name="l19784"></a><span class="lineno">19784</span>  }</div>
|
||
<div class="line"><a name="l19785"></a><span class="lineno">19785</span>  </div>
|
||
<div class="line"><a name="l19816"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a404cfe1bdbf1dc6b229627fcf2afb95f">19816</a></span>  <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">iterator</a> <a class="code" href="classnlohmann_1_1basic__json.html#a404cfe1bdbf1dc6b229627fcf2afb95f">insert</a>(<a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">const_iterator</a> pos, <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">const_iterator</a> first, <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">const_iterator</a> last)</div>
|
||
<div class="line"><a name="l19817"></a><span class="lineno">19817</span>  {</div>
|
||
<div class="line"><a name="l19818"></a><span class="lineno">19818</span>  <span class="comment">// insert only works for arrays</span></div>
|
||
<div class="line"><a name="l19819"></a><span class="lineno">19819</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not <a class="code" href="classnlohmann_1_1basic__json.html#aef9ce5dd2381caee1f8ddcdb5bdd9c65">is_array</a>()))</div>
|
||
<div class="line"><a name="l19820"></a><span class="lineno">19820</span>  {</div>
|
||
<div class="line"><a name="l19821"></a><span class="lineno">19821</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(309, <span class="stringliteral">"cannot use insert() with "</span> + std::string(<a class="code" href="classnlohmann_1_1basic__json.html#ad14563c53cf7ca9189bc164082367bf3">type_name</a>())));</div>
|
||
<div class="line"><a name="l19822"></a><span class="lineno">19822</span>  }</div>
|
||
<div class="line"><a name="l19823"></a><span class="lineno">19823</span>  </div>
|
||
<div class="line"><a name="l19824"></a><span class="lineno">19824</span>  <span class="comment">// check if iterator pos fits to this JSON value</span></div>
|
||
<div class="line"><a name="l19825"></a><span class="lineno">19825</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(pos.m_object != <span class="keyword">this</span>))</div>
|
||
<div class="line"><a name="l19826"></a><span class="lineno">19826</span>  {</div>
|
||
<div class="line"><a name="l19827"></a><span class="lineno">19827</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1invalid__iterator.html#a4e849260a3caa1b288c7e619130c6c09">invalid_iterator::create</a>(202, <span class="stringliteral">"iterator does not fit current value"</span>));</div>
|
||
<div class="line"><a name="l19828"></a><span class="lineno">19828</span>  }</div>
|
||
<div class="line"><a name="l19829"></a><span class="lineno">19829</span>  </div>
|
||
<div class="line"><a name="l19830"></a><span class="lineno">19830</span>  <span class="comment">// check if range iterators belong to the same JSON object</span></div>
|
||
<div class="line"><a name="l19831"></a><span class="lineno">19831</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(first.m_object != last.m_object))</div>
|
||
<div class="line"><a name="l19832"></a><span class="lineno">19832</span>  {</div>
|
||
<div class="line"><a name="l19833"></a><span class="lineno">19833</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1invalid__iterator.html#a4e849260a3caa1b288c7e619130c6c09">invalid_iterator::create</a>(210, <span class="stringliteral">"iterators do not fit"</span>));</div>
|
||
<div class="line"><a name="l19834"></a><span class="lineno">19834</span>  }</div>
|
||
<div class="line"><a name="l19835"></a><span class="lineno">19835</span>  </div>
|
||
<div class="line"><a name="l19836"></a><span class="lineno">19836</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(first.m_object == <span class="keyword">this</span>))</div>
|
||
<div class="line"><a name="l19837"></a><span class="lineno">19837</span>  {</div>
|
||
<div class="line"><a name="l19838"></a><span class="lineno">19838</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1invalid__iterator.html#a4e849260a3caa1b288c7e619130c6c09">invalid_iterator::create</a>(211, <span class="stringliteral">"passed iterators may not belong to container"</span>));</div>
|
||
<div class="line"><a name="l19839"></a><span class="lineno">19839</span>  }</div>
|
||
<div class="line"><a name="l19840"></a><span class="lineno">19840</span>  </div>
|
||
<div class="line"><a name="l19841"></a><span class="lineno">19841</span>  <span class="comment">// insert to array and return iterator</span></div>
|
||
<div class="line"><a name="l19842"></a><span class="lineno">19842</span>  <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json.html#a316663487f1d20c0cf349b23f9494bda">insert_iterator</a>(pos, first.m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a8294a6e6f01b58e1cce8fbae66a50b5d">array_iterator</a>, last.m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a8294a6e6f01b58e1cce8fbae66a50b5d">array_iterator</a>);</div>
|
||
<div class="line"><a name="l19843"></a><span class="lineno">19843</span>  }</div>
|
||
<div class="line"><a name="l19844"></a><span class="lineno">19844</span>  </div>
|
||
<div class="line"><a name="l19869"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#aa19b9b9ca6967295b102f1cc487b1ad7">19869</a></span>  <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">iterator</a> <a class="code" href="classnlohmann_1_1basic__json.html#aa19b9b9ca6967295b102f1cc487b1ad7">insert</a>(<a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">const_iterator</a> pos, <a class="code" href="classnlohmann_1_1basic__json.html#ad70a098fbc01c53497db29d3b5b656a9">initializer_list_t</a> ilist)</div>
|
||
<div class="line"><a name="l19870"></a><span class="lineno">19870</span>  {</div>
|
||
<div class="line"><a name="l19871"></a><span class="lineno">19871</span>  <span class="comment">// insert only works for arrays</span></div>
|
||
<div class="line"><a name="l19872"></a><span class="lineno">19872</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not <a class="code" href="classnlohmann_1_1basic__json.html#aef9ce5dd2381caee1f8ddcdb5bdd9c65">is_array</a>()))</div>
|
||
<div class="line"><a name="l19873"></a><span class="lineno">19873</span>  {</div>
|
||
<div class="line"><a name="l19874"></a><span class="lineno">19874</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(309, <span class="stringliteral">"cannot use insert() with "</span> + std::string(<a class="code" href="classnlohmann_1_1basic__json.html#ad14563c53cf7ca9189bc164082367bf3">type_name</a>())));</div>
|
||
<div class="line"><a name="l19875"></a><span class="lineno">19875</span>  }</div>
|
||
<div class="line"><a name="l19876"></a><span class="lineno">19876</span>  </div>
|
||
<div class="line"><a name="l19877"></a><span class="lineno">19877</span>  <span class="comment">// check if iterator pos fits to this JSON value</span></div>
|
||
<div class="line"><a name="l19878"></a><span class="lineno">19878</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(pos.m_object != <span class="keyword">this</span>))</div>
|
||
<div class="line"><a name="l19879"></a><span class="lineno">19879</span>  {</div>
|
||
<div class="line"><a name="l19880"></a><span class="lineno">19880</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1invalid__iterator.html#a4e849260a3caa1b288c7e619130c6c09">invalid_iterator::create</a>(202, <span class="stringliteral">"iterator does not fit current value"</span>));</div>
|
||
<div class="line"><a name="l19881"></a><span class="lineno">19881</span>  }</div>
|
||
<div class="line"><a name="l19882"></a><span class="lineno">19882</span>  </div>
|
||
<div class="line"><a name="l19883"></a><span class="lineno">19883</span>  <span class="comment">// insert to array and return iterator</span></div>
|
||
<div class="line"><a name="l19884"></a><span class="lineno">19884</span>  <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json.html#a316663487f1d20c0cf349b23f9494bda">insert_iterator</a>(pos, ilist.begin(), ilist.end());</div>
|
||
<div class="line"><a name="l19885"></a><span class="lineno">19885</span>  }</div>
|
||
<div class="line"><a name="l19886"></a><span class="lineno">19886</span>  </div>
|
||
<div class="line"><a name="l19910"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a1b0a4e60d56f1fe80501ed941e122892">19910</a></span>  <span class="keywordtype">void</span> <a class="code" href="classnlohmann_1_1basic__json.html#a1b0a4e60d56f1fe80501ed941e122892">insert</a>(<a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">const_iterator</a> first, <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">const_iterator</a> last)</div>
|
||
<div class="line"><a name="l19911"></a><span class="lineno">19911</span>  {</div>
|
||
<div class="line"><a name="l19912"></a><span class="lineno">19912</span>  <span class="comment">// insert only works for objects</span></div>
|
||
<div class="line"><a name="l19913"></a><span class="lineno">19913</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not <a class="code" href="classnlohmann_1_1basic__json.html#af8f511af124e82e4579f444b4175787c">is_object</a>()))</div>
|
||
<div class="line"><a name="l19914"></a><span class="lineno">19914</span>  {</div>
|
||
<div class="line"><a name="l19915"></a><span class="lineno">19915</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(309, <span class="stringliteral">"cannot use insert() with "</span> + std::string(<a class="code" href="classnlohmann_1_1basic__json.html#ad14563c53cf7ca9189bc164082367bf3">type_name</a>())));</div>
|
||
<div class="line"><a name="l19916"></a><span class="lineno">19916</span>  }</div>
|
||
<div class="line"><a name="l19917"></a><span class="lineno">19917</span>  </div>
|
||
<div class="line"><a name="l19918"></a><span class="lineno">19918</span>  <span class="comment">// check if range iterators belong to the same JSON object</span></div>
|
||
<div class="line"><a name="l19919"></a><span class="lineno">19919</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(first.m_object != last.m_object))</div>
|
||
<div class="line"><a name="l19920"></a><span class="lineno">19920</span>  {</div>
|
||
<div class="line"><a name="l19921"></a><span class="lineno">19921</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1invalid__iterator.html#a4e849260a3caa1b288c7e619130c6c09">invalid_iterator::create</a>(210, <span class="stringliteral">"iterators do not fit"</span>));</div>
|
||
<div class="line"><a name="l19922"></a><span class="lineno">19922</span>  }</div>
|
||
<div class="line"><a name="l19923"></a><span class="lineno">19923</span>  </div>
|
||
<div class="line"><a name="l19924"></a><span class="lineno">19924</span>  <span class="comment">// passed iterators must belong to objects</span></div>
|
||
<div class="line"><a name="l19925"></a><span class="lineno">19925</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not first.m_object->is_object()))</div>
|
||
<div class="line"><a name="l19926"></a><span class="lineno">19926</span>  {</div>
|
||
<div class="line"><a name="l19927"></a><span class="lineno">19927</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1invalid__iterator.html#a4e849260a3caa1b288c7e619130c6c09">invalid_iterator::create</a>(202, <span class="stringliteral">"iterators first and last must point to objects"</span>));</div>
|
||
<div class="line"><a name="l19928"></a><span class="lineno">19928</span>  }</div>
|
||
<div class="line"><a name="l19929"></a><span class="lineno">19929</span>  </div>
|
||
<div class="line"><a name="l19930"></a><span class="lineno">19930</span>  m_value.object->insert(first.m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a8cb0af3498061426c1d0a65ad6220408">object_iterator</a>, last.m_it.<a class="code" href="structnlohmann_1_1detail_1_1internal__iterator.html#a8cb0af3498061426c1d0a65ad6220408">object_iterator</a>);</div>
|
||
<div class="line"><a name="l19931"></a><span class="lineno">19931</span>  }</div>
|
||
<div class="line"><a name="l19932"></a><span class="lineno">19932</span>  </div>
|
||
<div class="line"><a name="l19952"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a1cfa9ae5e7c2434cab4cfe69bffffe11">19952</a></span>  <span class="keywordtype">void</span> <a class="code" href="classnlohmann_1_1basic__json.html#a1cfa9ae5e7c2434cab4cfe69bffffe11">update</a>(<a class="code" href="classnlohmann_1_1basic__json.html">const_reference</a> j)</div>
|
||
<div class="line"><a name="l19953"></a><span class="lineno">19953</span>  {</div>
|
||
<div class="line"><a name="l19954"></a><span class="lineno">19954</span>  <span class="comment">// implicitly convert null value to an empty object</span></div>
|
||
<div class="line"><a name="l19955"></a><span class="lineno">19955</span>  <span class="keywordflow">if</span> (<a class="code" href="classnlohmann_1_1basic__json.html#a8faa039ca82427ed29c486ffd00600c3">is_null</a>())</div>
|
||
<div class="line"><a name="l19956"></a><span class="lineno">19956</span>  {</div>
|
||
<div class="line"><a name="l19957"></a><span class="lineno">19957</span>  m_type = <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>;</div>
|
||
<div class="line"><a name="l19958"></a><span class="lineno">19958</span>  m_value.object = create<object_t>();</div>
|
||
<div class="line"><a name="l19959"></a><span class="lineno">19959</span>  assert_invariant();</div>
|
||
<div class="line"><a name="l19960"></a><span class="lineno">19960</span>  }</div>
|
||
<div class="line"><a name="l19961"></a><span class="lineno">19961</span>  </div>
|
||
<div class="line"><a name="l19962"></a><span class="lineno">19962</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not <a class="code" href="classnlohmann_1_1basic__json.html#af8f511af124e82e4579f444b4175787c">is_object</a>()))</div>
|
||
<div class="line"><a name="l19963"></a><span class="lineno">19963</span>  {</div>
|
||
<div class="line"><a name="l19964"></a><span class="lineno">19964</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(312, <span class="stringliteral">"cannot use update() with "</span> + std::string(<a class="code" href="classnlohmann_1_1basic__json.html#ad14563c53cf7ca9189bc164082367bf3">type_name</a>())));</div>
|
||
<div class="line"><a name="l19965"></a><span class="lineno">19965</span>  }</div>
|
||
<div class="line"><a name="l19966"></a><span class="lineno">19966</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not j.<a class="code" href="classnlohmann_1_1basic__json.html#af8f511af124e82e4579f444b4175787c">is_object</a>()))</div>
|
||
<div class="line"><a name="l19967"></a><span class="lineno">19967</span>  {</div>
|
||
<div class="line"><a name="l19968"></a><span class="lineno">19968</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(312, <span class="stringliteral">"cannot use update() with "</span> + std::string(j.<a class="code" href="classnlohmann_1_1basic__json.html#ad14563c53cf7ca9189bc164082367bf3">type_name</a>())));</div>
|
||
<div class="line"><a name="l19969"></a><span class="lineno">19969</span>  }</div>
|
||
<div class="line"><a name="l19970"></a><span class="lineno">19970</span>  </div>
|
||
<div class="line"><a name="l19971"></a><span class="lineno">19971</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span> it = j.<a class="code" href="classnlohmann_1_1basic__json.html#ad865d6c291b237ae508d5cb2146b5877">cbegin</a>(); it != j.<a class="code" href="classnlohmann_1_1basic__json.html#a8dba7b7d2f38e6b0c614030aa43983f6">cend</a>(); ++it)</div>
|
||
<div class="line"><a name="l19972"></a><span class="lineno">19972</span>  {</div>
|
||
<div class="line"><a name="l19973"></a><span class="lineno">19973</span>  m_value.object->operator[](it.key()) = it.value();</div>
|
||
<div class="line"><a name="l19974"></a><span class="lineno">19974</span>  }</div>
|
||
<div class="line"><a name="l19975"></a><span class="lineno">19975</span>  }</div>
|
||
<div class="line"><a name="l19976"></a><span class="lineno">19976</span>  </div>
|
||
<div class="line"><a name="l20003"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a27921dafadb3bbefd180235ec763e3ea">20003</a></span>  <span class="keywordtype">void</span> <a class="code" href="classnlohmann_1_1basic__json.html#a27921dafadb3bbefd180235ec763e3ea">update</a>(<a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">const_iterator</a> first, <a class="code" href="classnlohmann_1_1detail_1_1iter__impl.html">const_iterator</a> last)</div>
|
||
<div class="line"><a name="l20004"></a><span class="lineno">20004</span>  {</div>
|
||
<div class="line"><a name="l20005"></a><span class="lineno">20005</span>  <span class="comment">// implicitly convert null value to an empty object</span></div>
|
||
<div class="line"><a name="l20006"></a><span class="lineno">20006</span>  <span class="keywordflow">if</span> (<a class="code" href="classnlohmann_1_1basic__json.html#a8faa039ca82427ed29c486ffd00600c3">is_null</a>())</div>
|
||
<div class="line"><a name="l20007"></a><span class="lineno">20007</span>  {</div>
|
||
<div class="line"><a name="l20008"></a><span class="lineno">20008</span>  m_type = <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>;</div>
|
||
<div class="line"><a name="l20009"></a><span class="lineno">20009</span>  m_value.object = create<object_t>();</div>
|
||
<div class="line"><a name="l20010"></a><span class="lineno">20010</span>  assert_invariant();</div>
|
||
<div class="line"><a name="l20011"></a><span class="lineno">20011</span>  }</div>
|
||
<div class="line"><a name="l20012"></a><span class="lineno">20012</span>  </div>
|
||
<div class="line"><a name="l20013"></a><span class="lineno">20013</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not <a class="code" href="classnlohmann_1_1basic__json.html#af8f511af124e82e4579f444b4175787c">is_object</a>()))</div>
|
||
<div class="line"><a name="l20014"></a><span class="lineno">20014</span>  {</div>
|
||
<div class="line"><a name="l20015"></a><span class="lineno">20015</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(312, <span class="stringliteral">"cannot use update() with "</span> + std::string(<a class="code" href="classnlohmann_1_1basic__json.html#ad14563c53cf7ca9189bc164082367bf3">type_name</a>())));</div>
|
||
<div class="line"><a name="l20016"></a><span class="lineno">20016</span>  }</div>
|
||
<div class="line"><a name="l20017"></a><span class="lineno">20017</span>  </div>
|
||
<div class="line"><a name="l20018"></a><span class="lineno">20018</span>  <span class="comment">// check if range iterators belong to the same JSON object</span></div>
|
||
<div class="line"><a name="l20019"></a><span class="lineno">20019</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(first.m_object != last.m_object))</div>
|
||
<div class="line"><a name="l20020"></a><span class="lineno">20020</span>  {</div>
|
||
<div class="line"><a name="l20021"></a><span class="lineno">20021</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1invalid__iterator.html#a4e849260a3caa1b288c7e619130c6c09">invalid_iterator::create</a>(210, <span class="stringliteral">"iterators do not fit"</span>));</div>
|
||
<div class="line"><a name="l20022"></a><span class="lineno">20022</span>  }</div>
|
||
<div class="line"><a name="l20023"></a><span class="lineno">20023</span>  </div>
|
||
<div class="line"><a name="l20024"></a><span class="lineno">20024</span>  <span class="comment">// passed iterators must belong to objects</span></div>
|
||
<div class="line"><a name="l20025"></a><span class="lineno">20025</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not first.m_object->is_object()</div>
|
||
<div class="line"><a name="l20026"></a><span class="lineno">20026</span>  or not last.m_object->is_object()))</div>
|
||
<div class="line"><a name="l20027"></a><span class="lineno">20027</span>  {</div>
|
||
<div class="line"><a name="l20028"></a><span class="lineno">20028</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1invalid__iterator.html#a4e849260a3caa1b288c7e619130c6c09">invalid_iterator::create</a>(202, <span class="stringliteral">"iterators first and last must point to objects"</span>));</div>
|
||
<div class="line"><a name="l20029"></a><span class="lineno">20029</span>  }</div>
|
||
<div class="line"><a name="l20030"></a><span class="lineno">20030</span>  </div>
|
||
<div class="line"><a name="l20031"></a><span class="lineno">20031</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span> it = first; it != last; ++it)</div>
|
||
<div class="line"><a name="l20032"></a><span class="lineno">20032</span>  {</div>
|
||
<div class="line"><a name="l20033"></a><span class="lineno">20033</span>  m_value.object->operator[](it.key()) = it.value();</div>
|
||
<div class="line"><a name="l20034"></a><span class="lineno">20034</span>  }</div>
|
||
<div class="line"><a name="l20035"></a><span class="lineno">20035</span>  }</div>
|
||
<div class="line"><a name="l20036"></a><span class="lineno">20036</span>  </div>
|
||
<div class="line"><a name="l20054"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a8c9d932353e1ab98a7dc2fc27e002031">20054</a></span>  <span class="keywordtype">void</span> <a class="code" href="classnlohmann_1_1basic__json.html#a8c9d932353e1ab98a7dc2fc27e002031">swap</a>(<a class="code" href="classnlohmann_1_1basic__json.html">reference</a> other) noexcept (</div>
|
||
<div class="line"><a name="l20055"></a><span class="lineno">20055</span>  std::is_nothrow_move_constructible<value_t>::value and</div>
|
||
<div class="line"><a name="l20056"></a><span class="lineno">20056</span>  std::is_nothrow_move_assignable<value_t>::value and</div>
|
||
<div class="line"><a name="l20057"></a><span class="lineno">20057</span>  std::is_nothrow_move_constructible<json_value>::value and</div>
|
||
<div class="line"><a name="l20058"></a><span class="lineno">20058</span>  std::is_nothrow_move_assignable<json_value>::value</div>
|
||
<div class="line"><a name="l20059"></a><span class="lineno">20059</span>  )</div>
|
||
<div class="line"><a name="l20060"></a><span class="lineno">20060</span>  {</div>
|
||
<div class="line"><a name="l20061"></a><span class="lineno">20061</span>  std::swap(m_type, other.m_type);</div>
|
||
<div class="line"><a name="l20062"></a><span class="lineno">20062</span>  std::swap(m_value, other.m_value);</div>
|
||
<div class="line"><a name="l20063"></a><span class="lineno">20063</span>  assert_invariant();</div>
|
||
<div class="line"><a name="l20064"></a><span class="lineno">20064</span>  }</div>
|
||
<div class="line"><a name="l20065"></a><span class="lineno">20065</span>  </div>
|
||
<div class="line"><a name="l20086"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a65b0a24e1361a030ad0a661de22f6c8e">20086</a></span>  <span class="keywordtype">void</span> <a class="code" href="classnlohmann_1_1basic__json.html#a65b0a24e1361a030ad0a661de22f6c8e">swap</a>(<a class="code" href="classnlohmann_1_1basic__json.html#ae095578e03df97c5b3991787f1056374">array_t</a>& other)</div>
|
||
<div class="line"><a name="l20087"></a><span class="lineno">20087</span>  {</div>
|
||
<div class="line"><a name="l20088"></a><span class="lineno">20088</span>  <span class="comment">// swap only works for arrays</span></div>
|
||
<div class="line"><a name="l20089"></a><span class="lineno">20089</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a355f2770653ff7bdd5c74b204b5a3ad0">JSON_HEDLEY_LIKELY</a>(<a class="code" href="classnlohmann_1_1basic__json.html#aef9ce5dd2381caee1f8ddcdb5bdd9c65">is_array</a>()))</div>
|
||
<div class="line"><a name="l20090"></a><span class="lineno">20090</span>  {</div>
|
||
<div class="line"><a name="l20091"></a><span class="lineno">20091</span>  std::swap(*(m_value.array), other);</div>
|
||
<div class="line"><a name="l20092"></a><span class="lineno">20092</span>  }</div>
|
||
<div class="line"><a name="l20093"></a><span class="lineno">20093</span>  <span class="keywordflow">else</span></div>
|
||
<div class="line"><a name="l20094"></a><span class="lineno">20094</span>  {</div>
|
||
<div class="line"><a name="l20095"></a><span class="lineno">20095</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(310, <span class="stringliteral">"cannot use swap() with "</span> + std::string(<a class="code" href="classnlohmann_1_1basic__json.html#ad14563c53cf7ca9189bc164082367bf3">type_name</a>())));</div>
|
||
<div class="line"><a name="l20096"></a><span class="lineno">20096</span>  }</div>
|
||
<div class="line"><a name="l20097"></a><span class="lineno">20097</span>  }</div>
|
||
<div class="line"><a name="l20098"></a><span class="lineno">20098</span>  </div>
|
||
<div class="line"><a name="l20119"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#ac31f12587d2f1a3be5ffc394aa9d72a4">20119</a></span>  <span class="keywordtype">void</span> <a class="code" href="classnlohmann_1_1basic__json.html#ac31f12587d2f1a3be5ffc394aa9d72a4">swap</a>(<a class="code" href="classnlohmann_1_1basic__json.html#a5e48a7893520e1314bf0c9723e26ea2a">object_t</a>& other)</div>
|
||
<div class="line"><a name="l20120"></a><span class="lineno">20120</span>  {</div>
|
||
<div class="line"><a name="l20121"></a><span class="lineno">20121</span>  <span class="comment">// swap only works for objects</span></div>
|
||
<div class="line"><a name="l20122"></a><span class="lineno">20122</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a355f2770653ff7bdd5c74b204b5a3ad0">JSON_HEDLEY_LIKELY</a>(<a class="code" href="classnlohmann_1_1basic__json.html#af8f511af124e82e4579f444b4175787c">is_object</a>()))</div>
|
||
<div class="line"><a name="l20123"></a><span class="lineno">20123</span>  {</div>
|
||
<div class="line"><a name="l20124"></a><span class="lineno">20124</span>  std::swap(*(m_value.object), other);</div>
|
||
<div class="line"><a name="l20125"></a><span class="lineno">20125</span>  }</div>
|
||
<div class="line"><a name="l20126"></a><span class="lineno">20126</span>  <span class="keywordflow">else</span></div>
|
||
<div class="line"><a name="l20127"></a><span class="lineno">20127</span>  {</div>
|
||
<div class="line"><a name="l20128"></a><span class="lineno">20128</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(310, <span class="stringliteral">"cannot use swap() with "</span> + std::string(<a class="code" href="classnlohmann_1_1basic__json.html#ad14563c53cf7ca9189bc164082367bf3">type_name</a>())));</div>
|
||
<div class="line"><a name="l20129"></a><span class="lineno">20129</span>  }</div>
|
||
<div class="line"><a name="l20130"></a><span class="lineno">20130</span>  }</div>
|
||
<div class="line"><a name="l20131"></a><span class="lineno">20131</span>  </div>
|
||
<div class="line"><a name="l20152"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#adaa1ed0a889d86c8e0216a3d66980f76">20152</a></span>  <span class="keywordtype">void</span> <a class="code" href="classnlohmann_1_1basic__json.html#adaa1ed0a889d86c8e0216a3d66980f76">swap</a>(<a class="code" href="classnlohmann_1_1basic__json.html#a61f8566a1a85a424c7266fb531dca005">string_t</a>& other)</div>
|
||
<div class="line"><a name="l20153"></a><span class="lineno">20153</span>  {</div>
|
||
<div class="line"><a name="l20154"></a><span class="lineno">20154</span>  <span class="comment">// swap only works for strings</span></div>
|
||
<div class="line"><a name="l20155"></a><span class="lineno">20155</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a355f2770653ff7bdd5c74b204b5a3ad0">JSON_HEDLEY_LIKELY</a>(<a class="code" href="classnlohmann_1_1basic__json.html#a69b596a4a6683b362095c9a139637396">is_string</a>()))</div>
|
||
<div class="line"><a name="l20156"></a><span class="lineno">20156</span>  {</div>
|
||
<div class="line"><a name="l20157"></a><span class="lineno">20157</span>  std::swap(*(m_value.string), other);</div>
|
||
<div class="line"><a name="l20158"></a><span class="lineno">20158</span>  }</div>
|
||
<div class="line"><a name="l20159"></a><span class="lineno">20159</span>  <span class="keywordflow">else</span></div>
|
||
<div class="line"><a name="l20160"></a><span class="lineno">20160</span>  {</div>
|
||
<div class="line"><a name="l20161"></a><span class="lineno">20161</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">type_error::create</a>(310, <span class="stringliteral">"cannot use swap() with "</span> + std::string(<a class="code" href="classnlohmann_1_1basic__json.html#ad14563c53cf7ca9189bc164082367bf3">type_name</a>())));</div>
|
||
<div class="line"><a name="l20162"></a><span class="lineno">20162</span>  }</div>
|
||
<div class="line"><a name="l20163"></a><span class="lineno">20163</span>  }</div>
|
||
<div class="line"><a name="l20164"></a><span class="lineno">20164</span>  </div>
|
||
<div class="line"><a name="l20166"></a><span class="lineno">20166</span>  </div>
|
||
<div class="line"><a name="l20167"></a><span class="lineno">20167</span>  <span class="keyword">public</span>:</div>
|
||
<div class="line"><a name="l20169"></a><span class="lineno">20169</span>  <span class="comment">// lexicographical comparison operators //</span></div>
|
||
<div class="line"><a name="l20171"></a><span class="lineno">20171</span> <span class="comment"></span> </div>
|
||
<div class="line"><a name="l20174"></a><span class="lineno">20174</span>  </div>
|
||
<div class="line"><a name="l20214"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a122640e7e2db1814fc7bbb3c122ec76e">20214</a></span>  <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json.html#a122640e7e2db1814fc7bbb3c122ec76e">operator==</a>(<a class="code" href="classnlohmann_1_1basic__json.html">const_reference</a> lhs, <a class="code" href="classnlohmann_1_1basic__json.html">const_reference</a> rhs) noexcept</div>
|
||
<div class="line"><a name="l20215"></a><span class="lineno">20215</span>  {</div>
|
||
<div class="line"><a name="l20216"></a><span class="lineno">20216</span>  <span class="keyword">const</span> <span class="keyword">auto</span> lhs_type = lhs.type();</div>
|
||
<div class="line"><a name="l20217"></a><span class="lineno">20217</span>  <span class="keyword">const</span> <span class="keyword">auto</span> rhs_type = rhs.type();</div>
|
||
<div class="line"><a name="l20218"></a><span class="lineno">20218</span>  </div>
|
||
<div class="line"><a name="l20219"></a><span class="lineno">20219</span>  <span class="keywordflow">if</span> (lhs_type == rhs_type)</div>
|
||
<div class="line"><a name="l20220"></a><span class="lineno">20220</span>  {</div>
|
||
<div class="line"><a name="l20221"></a><span class="lineno">20221</span>  <span class="keywordflow">switch</span> (lhs_type)</div>
|
||
<div class="line"><a name="l20222"></a><span class="lineno">20222</span>  {</div>
|
||
<div class="line"><a name="l20223"></a><span class="lineno">20223</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>:</div>
|
||
<div class="line"><a name="l20224"></a><span class="lineno">20224</span>  <span class="keywordflow">return</span> *lhs.m_value.array == *rhs.m_value.array;</div>
|
||
<div class="line"><a name="l20225"></a><span class="lineno">20225</span>  </div>
|
||
<div class="line"><a name="l20226"></a><span class="lineno">20226</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>:</div>
|
||
<div class="line"><a name="l20227"></a><span class="lineno">20227</span>  <span class="keywordflow">return</span> *lhs.m_value.object == *rhs.m_value.object;</div>
|
||
<div class="line"><a name="l20228"></a><span class="lineno">20228</span>  </div>
|
||
<div class="line"><a name="l20229"></a><span class="lineno">20229</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a37a6259cc0c1dae299a7866489dff0bd">value_t::null</a>:</div>
|
||
<div class="line"><a name="l20230"></a><span class="lineno">20230</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
||
<div class="line"><a name="l20231"></a><span class="lineno">20231</span>  </div>
|
||
<div class="line"><a name="l20232"></a><span class="lineno">20232</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ab45cffe084dd3d20d928bee85e7b0f21">value_t::string</a>:</div>
|
||
<div class="line"><a name="l20233"></a><span class="lineno">20233</span>  <span class="keywordflow">return</span> *lhs.m_value.string == *rhs.m_value.string;</div>
|
||
<div class="line"><a name="l20234"></a><span class="lineno">20234</span>  </div>
|
||
<div class="line"><a name="l20235"></a><span class="lineno">20235</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a84e2c64f38f78ba3ea5c905ab5a2da27">value_t::boolean</a>:</div>
|
||
<div class="line"><a name="l20236"></a><span class="lineno">20236</span>  <span class="keywordflow">return</span> lhs.m_value.boolean == rhs.m_value.boolean;</div>
|
||
<div class="line"><a name="l20237"></a><span class="lineno">20237</span>  </div>
|
||
<div class="line"><a name="l20238"></a><span class="lineno">20238</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a5763da164f8659d94a56e29df64b4bcc">value_t::number_integer</a>:</div>
|
||
<div class="line"><a name="l20239"></a><span class="lineno">20239</span>  <span class="keywordflow">return</span> lhs.m_value.number_integer == rhs.m_value.number_integer;</div>
|
||
<div class="line"><a name="l20240"></a><span class="lineno">20240</span>  </div>
|
||
<div class="line"><a name="l20241"></a><span class="lineno">20241</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985adce7cc8ec29055c4158828921f2f265e">value_t::number_unsigned</a>:</div>
|
||
<div class="line"><a name="l20242"></a><span class="lineno">20242</span>  <span class="keywordflow">return</span> lhs.m_value.number_unsigned == rhs.m_value.number_unsigned;</div>
|
||
<div class="line"><a name="l20243"></a><span class="lineno">20243</span>  </div>
|
||
<div class="line"><a name="l20244"></a><span class="lineno">20244</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ad9966ecb59667235a57b4b999a649eef">value_t::number_float</a>:</div>
|
||
<div class="line"><a name="l20245"></a><span class="lineno">20245</span>  <span class="keywordflow">return</span> lhs.m_value.number_float == rhs.m_value.number_float;</div>
|
||
<div class="line"><a name="l20246"></a><span class="lineno">20246</span>  </div>
|
||
<div class="line"><a name="l20247"></a><span class="lineno">20247</span>  <span class="keywordflow">default</span>:</div>
|
||
<div class="line"><a name="l20248"></a><span class="lineno">20248</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||
<div class="line"><a name="l20249"></a><span class="lineno">20249</span>  }</div>
|
||
<div class="line"><a name="l20250"></a><span class="lineno">20250</span>  }</div>
|
||
<div class="line"><a name="l20251"></a><span class="lineno">20251</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs_type == <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a5763da164f8659d94a56e29df64b4bcc">value_t::number_integer</a> and rhs_type == <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ad9966ecb59667235a57b4b999a649eef">value_t::number_float</a>)</div>
|
||
<div class="line"><a name="l20252"></a><span class="lineno">20252</span>  {</div>
|
||
<div class="line"><a name="l20253"></a><span class="lineno">20253</span>  <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><a class="code" href="classnlohmann_1_1basic__json.html#a88d6103cb3620410b35200ee8e313d97">number_float_t</a><span class="keyword">></span>(lhs.m_value.number_integer) == rhs.m_value.number_float;</div>
|
||
<div class="line"><a name="l20254"></a><span class="lineno">20254</span>  }</div>
|
||
<div class="line"><a name="l20255"></a><span class="lineno">20255</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs_type == <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ad9966ecb59667235a57b4b999a649eef">value_t::number_float</a> and rhs_type == <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a5763da164f8659d94a56e29df64b4bcc">value_t::number_integer</a>)</div>
|
||
<div class="line"><a name="l20256"></a><span class="lineno">20256</span>  {</div>
|
||
<div class="line"><a name="l20257"></a><span class="lineno">20257</span>  <span class="keywordflow">return</span> lhs.m_value.number_float == <span class="keyword">static_cast<</span><a class="code" href="classnlohmann_1_1basic__json.html#a88d6103cb3620410b35200ee8e313d97">number_float_t</a><span class="keyword">></span>(rhs.m_value.number_integer);</div>
|
||
<div class="line"><a name="l20258"></a><span class="lineno">20258</span>  }</div>
|
||
<div class="line"><a name="l20259"></a><span class="lineno">20259</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs_type == <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985adce7cc8ec29055c4158828921f2f265e">value_t::number_unsigned</a> and rhs_type == <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ad9966ecb59667235a57b4b999a649eef">value_t::number_float</a>)</div>
|
||
<div class="line"><a name="l20260"></a><span class="lineno">20260</span>  {</div>
|
||
<div class="line"><a name="l20261"></a><span class="lineno">20261</span>  <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><a class="code" href="classnlohmann_1_1basic__json.html#a88d6103cb3620410b35200ee8e313d97">number_float_t</a><span class="keyword">></span>(lhs.m_value.number_unsigned) == rhs.m_value.number_float;</div>
|
||
<div class="line"><a name="l20262"></a><span class="lineno">20262</span>  }</div>
|
||
<div class="line"><a name="l20263"></a><span class="lineno">20263</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs_type == <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ad9966ecb59667235a57b4b999a649eef">value_t::number_float</a> and rhs_type == <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985adce7cc8ec29055c4158828921f2f265e">value_t::number_unsigned</a>)</div>
|
||
<div class="line"><a name="l20264"></a><span class="lineno">20264</span>  {</div>
|
||
<div class="line"><a name="l20265"></a><span class="lineno">20265</span>  <span class="keywordflow">return</span> lhs.m_value.number_float == <span class="keyword">static_cast<</span><a class="code" href="classnlohmann_1_1basic__json.html#a88d6103cb3620410b35200ee8e313d97">number_float_t</a><span class="keyword">></span>(rhs.m_value.number_unsigned);</div>
|
||
<div class="line"><a name="l20266"></a><span class="lineno">20266</span>  }</div>
|
||
<div class="line"><a name="l20267"></a><span class="lineno">20267</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs_type == <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985adce7cc8ec29055c4158828921f2f265e">value_t::number_unsigned</a> and rhs_type == <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a5763da164f8659d94a56e29df64b4bcc">value_t::number_integer</a>)</div>
|
||
<div class="line"><a name="l20268"></a><span class="lineno">20268</span>  {</div>
|
||
<div class="line"><a name="l20269"></a><span class="lineno">20269</span>  <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><a class="code" href="classnlohmann_1_1basic__json.html#a98e611d67b7bd75307de99c9358ab2dc">number_integer_t</a><span class="keyword">></span>(lhs.m_value.number_unsigned) == rhs.m_value.number_integer;</div>
|
||
<div class="line"><a name="l20270"></a><span class="lineno">20270</span>  }</div>
|
||
<div class="line"><a name="l20271"></a><span class="lineno">20271</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs_type == <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a5763da164f8659d94a56e29df64b4bcc">value_t::number_integer</a> and rhs_type == <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985adce7cc8ec29055c4158828921f2f265e">value_t::number_unsigned</a>)</div>
|
||
<div class="line"><a name="l20272"></a><span class="lineno">20272</span>  {</div>
|
||
<div class="line"><a name="l20273"></a><span class="lineno">20273</span>  <span class="keywordflow">return</span> lhs.m_value.number_integer == <span class="keyword">static_cast<</span><a class="code" href="classnlohmann_1_1basic__json.html#a98e611d67b7bd75307de99c9358ab2dc">number_integer_t</a><span class="keyword">></span>(rhs.m_value.number_unsigned);</div>
|
||
<div class="line"><a name="l20274"></a><span class="lineno">20274</span>  }</div>
|
||
<div class="line"><a name="l20275"></a><span class="lineno">20275</span>  </div>
|
||
<div class="line"><a name="l20276"></a><span class="lineno">20276</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||
<div class="line"><a name="l20277"></a><span class="lineno">20277</span>  }</div>
|
||
<div class="line"><a name="l20278"></a><span class="lineno">20278</span>  </div>
|
||
<div class="line"><a name="l20283"></a><span class="lineno">20283</span>  <span class="keyword">template</span><<span class="keyword">typename</span> ScalarType, <span class="keyword">typename</span> std::enable_if<</div>
|
||
<div class="line"><a name="l20284"></a><span class="lineno">20284</span>  std::is_scalar<ScalarType>::value, <span class="keywordtype">int</span>><a class="code" href="classnlohmann_1_1basic__json.html#a2b2d781d7f2a4ee41bc0016e931cadf7">::type</a> = 0></div>
|
||
<div class="line"><a name="l20285"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#aba21440ea1aff44f718285ed7d6d20d9">20285</a></span>  <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json.html#aba21440ea1aff44f718285ed7d6d20d9">operator==</a>(<a class="code" href="classnlohmann_1_1basic__json.html">const_reference</a> lhs, <span class="keyword">const</span> ScalarType rhs) noexcept</div>
|
||
<div class="line"><a name="l20286"></a><span class="lineno">20286</span>  {</div>
|
||
<div class="line"><a name="l20287"></a><span class="lineno">20287</span>  <span class="keywordflow">return</span> lhs == <a class="code" href="classnlohmann_1_1basic__json.html#aed115142bd0c6c66c864700e0467df55">basic_json</a>(rhs);</div>
|
||
<div class="line"><a name="l20288"></a><span class="lineno">20288</span>  }</div>
|
||
<div class="line"><a name="l20289"></a><span class="lineno">20289</span>  </div>
|
||
<div class="line"><a name="l20294"></a><span class="lineno">20294</span>  <span class="keyword">template</span><<span class="keyword">typename</span> ScalarType, <span class="keyword">typename</span> std::enable_if<</div>
|
||
<div class="line"><a name="l20295"></a><span class="lineno">20295</span>  std::is_scalar<ScalarType>::value, <span class="keywordtype">int</span>><a class="code" href="classnlohmann_1_1basic__json.html#a2b2d781d7f2a4ee41bc0016e931cadf7">::type</a> = 0></div>
|
||
<div class="line"><a name="l20296"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#aef302e3ae215e46e5035d0e4fdf47235">20296</a></span>  <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json.html#aef302e3ae215e46e5035d0e4fdf47235">operator==</a>(<span class="keyword">const</span> ScalarType lhs, <a class="code" href="classnlohmann_1_1basic__json.html">const_reference</a> rhs) noexcept</div>
|
||
<div class="line"><a name="l20297"></a><span class="lineno">20297</span>  {</div>
|
||
<div class="line"><a name="l20298"></a><span class="lineno">20298</span>  <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json.html#aed115142bd0c6c66c864700e0467df55">basic_json</a>(lhs) == rhs;</div>
|
||
<div class="line"><a name="l20299"></a><span class="lineno">20299</span>  }</div>
|
||
<div class="line"><a name="l20300"></a><span class="lineno">20300</span>  </div>
|
||
<div class="line"><a name="l20319"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a6e2e21da48f5d9471716cd868a068327">20319</a></span>  <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json.html#a6e2e21da48f5d9471716cd868a068327">operator!=</a>(<a class="code" href="classnlohmann_1_1basic__json.html">const_reference</a> lhs, <a class="code" href="classnlohmann_1_1basic__json.html">const_reference</a> rhs) noexcept</div>
|
||
<div class="line"><a name="l20320"></a><span class="lineno">20320</span>  {</div>
|
||
<div class="line"><a name="l20321"></a><span class="lineno">20321</span>  <span class="keywordflow">return</span> not (lhs == rhs);</div>
|
||
<div class="line"><a name="l20322"></a><span class="lineno">20322</span>  }</div>
|
||
<div class="line"><a name="l20323"></a><span class="lineno">20323</span>  </div>
|
||
<div class="line"><a name="l20328"></a><span class="lineno">20328</span>  <span class="keyword">template</span><<span class="keyword">typename</span> ScalarType, <span class="keyword">typename</span> std::enable_if<</div>
|
||
<div class="line"><a name="l20329"></a><span class="lineno">20329</span>  std::is_scalar<ScalarType>::value, <span class="keywordtype">int</span>><a class="code" href="classnlohmann_1_1basic__json.html#a2b2d781d7f2a4ee41bc0016e931cadf7">::type</a> = 0></div>
|
||
<div class="line"><a name="l20330"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#afefc38fc08bdb7a9a7474b5ab4a1140f">20330</a></span>  <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json.html#afefc38fc08bdb7a9a7474b5ab4a1140f">operator!=</a>(<a class="code" href="classnlohmann_1_1basic__json.html">const_reference</a> lhs, <span class="keyword">const</span> ScalarType rhs) noexcept</div>
|
||
<div class="line"><a name="l20331"></a><span class="lineno">20331</span>  {</div>
|
||
<div class="line"><a name="l20332"></a><span class="lineno">20332</span>  <span class="keywordflow">return</span> lhs != <a class="code" href="classnlohmann_1_1basic__json.html#aed115142bd0c6c66c864700e0467df55">basic_json</a>(rhs);</div>
|
||
<div class="line"><a name="l20333"></a><span class="lineno">20333</span>  }</div>
|
||
<div class="line"><a name="l20334"></a><span class="lineno">20334</span>  </div>
|
||
<div class="line"><a name="l20339"></a><span class="lineno">20339</span>  <span class="keyword">template</span><<span class="keyword">typename</span> ScalarType, <span class="keyword">typename</span> std::enable_if<</div>
|
||
<div class="line"><a name="l20340"></a><span class="lineno">20340</span>  std::is_scalar<ScalarType>::value, <span class="keywordtype">int</span>><a class="code" href="classnlohmann_1_1basic__json.html#a2b2d781d7f2a4ee41bc0016e931cadf7">::type</a> = 0></div>
|
||
<div class="line"><a name="l20341"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#ab0e886db6e9fa91ff9fd853333fed05b">20341</a></span>  <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json.html#ab0e886db6e9fa91ff9fd853333fed05b">operator!=</a>(<span class="keyword">const</span> ScalarType lhs, <a class="code" href="classnlohmann_1_1basic__json.html">const_reference</a> rhs) noexcept</div>
|
||
<div class="line"><a name="l20342"></a><span class="lineno">20342</span>  {</div>
|
||
<div class="line"><a name="l20343"></a><span class="lineno">20343</span>  <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json.html#aed115142bd0c6c66c864700e0467df55">basic_json</a>(lhs) != rhs;</div>
|
||
<div class="line"><a name="l20344"></a><span class="lineno">20344</span>  }</div>
|
||
<div class="line"><a name="l20345"></a><span class="lineno">20345</span>  </div>
|
||
<div class="line"><a name="l20372"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#aacd442b66140c764c594ac8ad7dfd5b3">20372</a></span>  <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json.html#aacd442b66140c764c594ac8ad7dfd5b3">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="l20373"></a><span class="lineno">20373</span>  {</div>
|
||
<div class="line"><a name="l20374"></a><span class="lineno">20374</span>  <span class="keyword">const</span> <span class="keyword">auto</span> lhs_type = lhs.type();</div>
|
||
<div class="line"><a name="l20375"></a><span class="lineno">20375</span>  <span class="keyword">const</span> <span class="keyword">auto</span> rhs_type = rhs.type();</div>
|
||
<div class="line"><a name="l20376"></a><span class="lineno">20376</span>  </div>
|
||
<div class="line"><a name="l20377"></a><span class="lineno">20377</span>  <span class="keywordflow">if</span> (lhs_type == rhs_type)</div>
|
||
<div class="line"><a name="l20378"></a><span class="lineno">20378</span>  {</div>
|
||
<div class="line"><a name="l20379"></a><span class="lineno">20379</span>  <span class="keywordflow">switch</span> (lhs_type)</div>
|
||
<div class="line"><a name="l20380"></a><span class="lineno">20380</span>  {</div>
|
||
<div class="line"><a name="l20381"></a><span class="lineno">20381</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>:</div>
|
||
<div class="line"><a name="l20382"></a><span class="lineno">20382</span>  <span class="comment">// note parentheses are necessary, see</span></div>
|
||
<div class="line"><a name="l20383"></a><span class="lineno">20383</span>  <span class="comment">// https://github.com/nlohmann/json/issues/1530</span></div>
|
||
<div class="line"><a name="l20384"></a><span class="lineno">20384</span>  <span class="keywordflow">return</span> (*lhs.m_value.array) < (*rhs.m_value.array);</div>
|
||
<div class="line"><a name="l20385"></a><span class="lineno">20385</span>  </div>
|
||
<div class="line"><a name="l20386"></a><span class="lineno">20386</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>:</div>
|
||
<div class="line"><a name="l20387"></a><span class="lineno">20387</span>  <span class="keywordflow">return</span> (*lhs.m_value.object) < (*rhs.m_value.object);</div>
|
||
<div class="line"><a name="l20388"></a><span class="lineno">20388</span>  </div>
|
||
<div class="line"><a name="l20389"></a><span class="lineno">20389</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a37a6259cc0c1dae299a7866489dff0bd">value_t::null</a>:</div>
|
||
<div class="line"><a name="l20390"></a><span class="lineno">20390</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||
<div class="line"><a name="l20391"></a><span class="lineno">20391</span>  </div>
|
||
<div class="line"><a name="l20392"></a><span class="lineno">20392</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ab45cffe084dd3d20d928bee85e7b0f21">value_t::string</a>:</div>
|
||
<div class="line"><a name="l20393"></a><span class="lineno">20393</span>  <span class="keywordflow">return</span> (*lhs.m_value.string) < (*rhs.m_value.string);</div>
|
||
<div class="line"><a name="l20394"></a><span class="lineno">20394</span>  </div>
|
||
<div class="line"><a name="l20395"></a><span class="lineno">20395</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a84e2c64f38f78ba3ea5c905ab5a2da27">value_t::boolean</a>:</div>
|
||
<div class="line"><a name="l20396"></a><span class="lineno">20396</span>  <span class="keywordflow">return</span> (lhs.m_value.boolean) < (rhs.m_value.boolean);</div>
|
||
<div class="line"><a name="l20397"></a><span class="lineno">20397</span>  </div>
|
||
<div class="line"><a name="l20398"></a><span class="lineno">20398</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a5763da164f8659d94a56e29df64b4bcc">value_t::number_integer</a>:</div>
|
||
<div class="line"><a name="l20399"></a><span class="lineno">20399</span>  <span class="keywordflow">return</span> (lhs.m_value.number_integer) < (rhs.m_value.number_integer);</div>
|
||
<div class="line"><a name="l20400"></a><span class="lineno">20400</span>  </div>
|
||
<div class="line"><a name="l20401"></a><span class="lineno">20401</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985adce7cc8ec29055c4158828921f2f265e">value_t::number_unsigned</a>:</div>
|
||
<div class="line"><a name="l20402"></a><span class="lineno">20402</span>  <span class="keywordflow">return</span> (lhs.m_value.number_unsigned) < (rhs.m_value.number_unsigned);</div>
|
||
<div class="line"><a name="l20403"></a><span class="lineno">20403</span>  </div>
|
||
<div class="line"><a name="l20404"></a><span class="lineno">20404</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ad9966ecb59667235a57b4b999a649eef">value_t::number_float</a>:</div>
|
||
<div class="line"><a name="l20405"></a><span class="lineno">20405</span>  <span class="keywordflow">return</span> (lhs.m_value.number_float) < (rhs.m_value.number_float);</div>
|
||
<div class="line"><a name="l20406"></a><span class="lineno">20406</span>  </div>
|
||
<div class="line"><a name="l20407"></a><span class="lineno">20407</span>  <span class="keywordflow">default</span>:</div>
|
||
<div class="line"><a name="l20408"></a><span class="lineno">20408</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
||
<div class="line"><a name="l20409"></a><span class="lineno">20409</span>  }</div>
|
||
<div class="line"><a name="l20410"></a><span class="lineno">20410</span>  }</div>
|
||
<div class="line"><a name="l20411"></a><span class="lineno">20411</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs_type == <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a5763da164f8659d94a56e29df64b4bcc">value_t::number_integer</a> and rhs_type == <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ad9966ecb59667235a57b4b999a649eef">value_t::number_float</a>)</div>
|
||
<div class="line"><a name="l20412"></a><span class="lineno">20412</span>  {</div>
|
||
<div class="line"><a name="l20413"></a><span class="lineno">20413</span>  <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><a class="code" href="classnlohmann_1_1basic__json.html#a88d6103cb3620410b35200ee8e313d97">number_float_t</a><span class="keyword">></span>(lhs.m_value.number_integer) < rhs.m_value.number_float;</div>
|
||
<div class="line"><a name="l20414"></a><span class="lineno">20414</span>  }</div>
|
||
<div class="line"><a name="l20415"></a><span class="lineno">20415</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs_type == <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ad9966ecb59667235a57b4b999a649eef">value_t::number_float</a> and rhs_type == <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a5763da164f8659d94a56e29df64b4bcc">value_t::number_integer</a>)</div>
|
||
<div class="line"><a name="l20416"></a><span class="lineno">20416</span>  {</div>
|
||
<div class="line"><a name="l20417"></a><span class="lineno">20417</span>  <span class="keywordflow">return</span> lhs.m_value.number_float < <span class="keyword">static_cast<</span><a class="code" href="classnlohmann_1_1basic__json.html#a88d6103cb3620410b35200ee8e313d97">number_float_t</a><span class="keyword">></span>(rhs.m_value.number_integer);</div>
|
||
<div class="line"><a name="l20418"></a><span class="lineno">20418</span>  }</div>
|
||
<div class="line"><a name="l20419"></a><span class="lineno">20419</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs_type == <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985adce7cc8ec29055c4158828921f2f265e">value_t::number_unsigned</a> and rhs_type == <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ad9966ecb59667235a57b4b999a649eef">value_t::number_float</a>)</div>
|
||
<div class="line"><a name="l20420"></a><span class="lineno">20420</span>  {</div>
|
||
<div class="line"><a name="l20421"></a><span class="lineno">20421</span>  <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><a class="code" href="classnlohmann_1_1basic__json.html#a88d6103cb3620410b35200ee8e313d97">number_float_t</a><span class="keyword">></span>(lhs.m_value.number_unsigned) < rhs.m_value.number_float;</div>
|
||
<div class="line"><a name="l20422"></a><span class="lineno">20422</span>  }</div>
|
||
<div class="line"><a name="l20423"></a><span class="lineno">20423</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs_type == <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ad9966ecb59667235a57b4b999a649eef">value_t::number_float</a> and rhs_type == <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985adce7cc8ec29055c4158828921f2f265e">value_t::number_unsigned</a>)</div>
|
||
<div class="line"><a name="l20424"></a><span class="lineno">20424</span>  {</div>
|
||
<div class="line"><a name="l20425"></a><span class="lineno">20425</span>  <span class="keywordflow">return</span> lhs.m_value.number_float < <span class="keyword">static_cast<</span><a class="code" href="classnlohmann_1_1basic__json.html#a88d6103cb3620410b35200ee8e313d97">number_float_t</a><span class="keyword">></span>(rhs.m_value.number_unsigned);</div>
|
||
<div class="line"><a name="l20426"></a><span class="lineno">20426</span>  }</div>
|
||
<div class="line"><a name="l20427"></a><span class="lineno">20427</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs_type == <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a5763da164f8659d94a56e29df64b4bcc">value_t::number_integer</a> and rhs_type == <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985adce7cc8ec29055c4158828921f2f265e">value_t::number_unsigned</a>)</div>
|
||
<div class="line"><a name="l20428"></a><span class="lineno">20428</span>  {</div>
|
||
<div class="line"><a name="l20429"></a><span class="lineno">20429</span>  <span class="keywordflow">return</span> lhs.m_value.number_integer < <span class="keyword">static_cast<</span><a class="code" href="classnlohmann_1_1basic__json.html#a98e611d67b7bd75307de99c9358ab2dc">number_integer_t</a><span class="keyword">></span>(rhs.m_value.number_unsigned);</div>
|
||
<div class="line"><a name="l20430"></a><span class="lineno">20430</span>  }</div>
|
||
<div class="line"><a name="l20431"></a><span class="lineno">20431</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhs_type == <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985adce7cc8ec29055c4158828921f2f265e">value_t::number_unsigned</a> and rhs_type == <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a5763da164f8659d94a56e29df64b4bcc">value_t::number_integer</a>)</div>
|
||
<div class="line"><a name="l20432"></a><span class="lineno">20432</span>  {</div>
|
||
<div class="line"><a name="l20433"></a><span class="lineno">20433</span>  <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><a class="code" href="classnlohmann_1_1basic__json.html#a98e611d67b7bd75307de99c9358ab2dc">number_integer_t</a><span class="keyword">></span>(lhs.m_value.number_unsigned) < rhs.m_value.number_integer;</div>
|
||
<div class="line"><a name="l20434"></a><span class="lineno">20434</span>  }</div>
|
||
<div class="line"><a name="l20435"></a><span class="lineno">20435</span>  </div>
|
||
<div class="line"><a name="l20436"></a><span class="lineno">20436</span>  <span class="comment">// We only reach this line if we cannot compare values. In that case,</span></div>
|
||
<div class="line"><a name="l20437"></a><span class="lineno">20437</span>  <span class="comment">// we compare types. Note we have to call the operator explicitly,</span></div>
|
||
<div class="line"><a name="l20438"></a><span class="lineno">20438</span>  <span class="comment">// because MSVC has problems otherwise.</span></div>
|
||
<div class="line"><a name="l20439"></a><span class="lineno">20439</span>  <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json.html#aacd442b66140c764c594ac8ad7dfd5b3">operator<</a>(lhs_type, rhs_type);</div>
|
||
<div class="line"><a name="l20440"></a><span class="lineno">20440</span>  }</div>
|
||
<div class="line"><a name="l20441"></a><span class="lineno">20441</span>  </div>
|
||
<div class="line"><a name="l20446"></a><span class="lineno">20446</span>  <span class="keyword">template</span><<span class="keyword">typename</span> ScalarType, <span class="keyword">typename</span> std::enable_if<</div>
|
||
<div class="line"><a name="l20447"></a><span class="lineno">20447</span>  std::is_scalar<ScalarType>::value, <span class="keywordtype">int</span>><a class="code" href="classnlohmann_1_1basic__json.html#a2b2d781d7f2a4ee41bc0016e931cadf7">::type</a> = 0></div>
|
||
<div class="line"><a name="l20448"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a7999ee3a69a4979d92e98ab1e88c8759">20448</a></span>  <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json.html#a7999ee3a69a4979d92e98ab1e88c8759">operator<</a>(<a class="code" href="classnlohmann_1_1basic__json.html">const_reference</a> lhs, <span class="keyword">const</span> ScalarType rhs) noexcept</div>
|
||
<div class="line"><a name="l20449"></a><span class="lineno">20449</span>  {</div>
|
||
<div class="line"><a name="l20450"></a><span class="lineno">20450</span>  <span class="keywordflow">return</span> lhs < <a class="code" href="classnlohmann_1_1basic__json.html#aed115142bd0c6c66c864700e0467df55">basic_json</a>(rhs);</div>
|
||
<div class="line"><a name="l20451"></a><span class="lineno">20451</span>  }</div>
|
||
<div class="line"><a name="l20452"></a><span class="lineno">20452</span>  </div>
|
||
<div class="line"><a name="l20457"></a><span class="lineno">20457</span>  <span class="keyword">template</span><<span class="keyword">typename</span> ScalarType, <span class="keyword">typename</span> std::enable_if<</div>
|
||
<div class="line"><a name="l20458"></a><span class="lineno">20458</span>  std::is_scalar<ScalarType>::value, <span class="keywordtype">int</span>><a class="code" href="classnlohmann_1_1basic__json.html#a2b2d781d7f2a4ee41bc0016e931cadf7">::type</a> = 0></div>
|
||
<div class="line"><a name="l20459"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#abed3e9b4ab75f5bcbd3cd20f5af5cdab">20459</a></span>  <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json.html#abed3e9b4ab75f5bcbd3cd20f5af5cdab">operator<</a>(<span class="keyword">const</span> ScalarType lhs, <a class="code" href="classnlohmann_1_1basic__json.html">const_reference</a> rhs) noexcept</div>
|
||
<div class="line"><a name="l20460"></a><span class="lineno">20460</span>  {</div>
|
||
<div class="line"><a name="l20461"></a><span class="lineno">20461</span>  <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json.html#aed115142bd0c6c66c864700e0467df55">basic_json</a>(lhs) < rhs;</div>
|
||
<div class="line"><a name="l20462"></a><span class="lineno">20462</span>  }</div>
|
||
<div class="line"><a name="l20463"></a><span class="lineno">20463</span>  </div>
|
||
<div class="line"><a name="l20483"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a5c8bb5200f5eac10d31e26be46e5b1ac">20483</a></span>  <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json.html#a5c8bb5200f5eac10d31e26be46e5b1ac">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="l20484"></a><span class="lineno">20484</span>  {</div>
|
||
<div class="line"><a name="l20485"></a><span class="lineno">20485</span>  <span class="keywordflow">return</span> not (rhs < lhs);</div>
|
||
<div class="line"><a name="l20486"></a><span class="lineno">20486</span>  }</div>
|
||
<div class="line"><a name="l20487"></a><span class="lineno">20487</span>  </div>
|
||
<div class="line"><a name="l20492"></a><span class="lineno">20492</span>  <span class="keyword">template</span><<span class="keyword">typename</span> ScalarType, <span class="keyword">typename</span> std::enable_if<</div>
|
||
<div class="line"><a name="l20493"></a><span class="lineno">20493</span>  std::is_scalar<ScalarType>::value, <span class="keywordtype">int</span>><a class="code" href="classnlohmann_1_1basic__json.html#a2b2d781d7f2a4ee41bc0016e931cadf7">::type</a> = 0></div>
|
||
<div class="line"><a name="l20494"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a7e368211047f725f333696aefdf39ffd">20494</a></span>  <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json.html#a7e368211047f725f333696aefdf39ffd">operator<=</a>(<a class="code" href="classnlohmann_1_1basic__json.html">const_reference</a> lhs, <span class="keyword">const</span> ScalarType rhs) noexcept</div>
|
||
<div class="line"><a name="l20495"></a><span class="lineno">20495</span>  {</div>
|
||
<div class="line"><a name="l20496"></a><span class="lineno">20496</span>  <span class="keywordflow">return</span> lhs <= <a class="code" href="classnlohmann_1_1basic__json.html#aed115142bd0c6c66c864700e0467df55">basic_json</a>(rhs);</div>
|
||
<div class="line"><a name="l20497"></a><span class="lineno">20497</span>  }</div>
|
||
<div class="line"><a name="l20498"></a><span class="lineno">20498</span>  </div>
|
||
<div class="line"><a name="l20503"></a><span class="lineno">20503</span>  <span class="keyword">template</span><<span class="keyword">typename</span> ScalarType, <span class="keyword">typename</span> std::enable_if<</div>
|
||
<div class="line"><a name="l20504"></a><span class="lineno">20504</span>  std::is_scalar<ScalarType>::value, <span class="keywordtype">int</span>><a class="code" href="classnlohmann_1_1basic__json.html#a2b2d781d7f2a4ee41bc0016e931cadf7">::type</a> = 0></div>
|
||
<div class="line"><a name="l20505"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#ad73f88f70fe5acfa521750a8cd710026">20505</a></span>  <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json.html#ad73f88f70fe5acfa521750a8cd710026">operator<=</a>(<span class="keyword">const</span> ScalarType lhs, <a class="code" href="classnlohmann_1_1basic__json.html">const_reference</a> rhs) noexcept</div>
|
||
<div class="line"><a name="l20506"></a><span class="lineno">20506</span>  {</div>
|
||
<div class="line"><a name="l20507"></a><span class="lineno">20507</span>  <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json.html#aed115142bd0c6c66c864700e0467df55">basic_json</a>(lhs) <= rhs;</div>
|
||
<div class="line"><a name="l20508"></a><span class="lineno">20508</span>  }</div>
|
||
<div class="line"><a name="l20509"></a><span class="lineno">20509</span>  </div>
|
||
<div class="line"><a name="l20529"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a87db51b6b936fb2ea293cdbc8702dcb8">20529</a></span>  <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json.html#a87db51b6b936fb2ea293cdbc8702dcb8">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="l20530"></a><span class="lineno">20530</span>  {</div>
|
||
<div class="line"><a name="l20531"></a><span class="lineno">20531</span>  <span class="keywordflow">return</span> not (lhs <= rhs);</div>
|
||
<div class="line"><a name="l20532"></a><span class="lineno">20532</span>  }</div>
|
||
<div class="line"><a name="l20533"></a><span class="lineno">20533</span>  </div>
|
||
<div class="line"><a name="l20538"></a><span class="lineno">20538</span>  <span class="keyword">template</span><<span class="keyword">typename</span> ScalarType, <span class="keyword">typename</span> std::enable_if<</div>
|
||
<div class="line"><a name="l20539"></a><span class="lineno">20539</span>  std::is_scalar<ScalarType>::value, <span class="keywordtype">int</span>><a class="code" href="classnlohmann_1_1basic__json.html#a2b2d781d7f2a4ee41bc0016e931cadf7">::type</a> = 0></div>
|
||
<div class="line"><a name="l20540"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a412895af9a582869a4d369a64fb1b6d6">20540</a></span>  <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json.html#a412895af9a582869a4d369a64fb1b6d6">operator></a>(<a class="code" href="classnlohmann_1_1basic__json.html">const_reference</a> lhs, <span class="keyword">const</span> ScalarType rhs) noexcept</div>
|
||
<div class="line"><a name="l20541"></a><span class="lineno">20541</span>  {</div>
|
||
<div class="line"><a name="l20542"></a><span class="lineno">20542</span>  <span class="keywordflow">return</span> lhs > <a class="code" href="classnlohmann_1_1basic__json.html#aed115142bd0c6c66c864700e0467df55">basic_json</a>(rhs);</div>
|
||
<div class="line"><a name="l20543"></a><span class="lineno">20543</span>  }</div>
|
||
<div class="line"><a name="l20544"></a><span class="lineno">20544</span>  </div>
|
||
<div class="line"><a name="l20549"></a><span class="lineno">20549</span>  <span class="keyword">template</span><<span class="keyword">typename</span> ScalarType, <span class="keyword">typename</span> std::enable_if<</div>
|
||
<div class="line"><a name="l20550"></a><span class="lineno">20550</span>  std::is_scalar<ScalarType>::value, <span class="keywordtype">int</span>><a class="code" href="classnlohmann_1_1basic__json.html#a2b2d781d7f2a4ee41bc0016e931cadf7">::type</a> = 0></div>
|
||
<div class="line"><a name="l20551"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a124c319566198d9f092c5bebea46ce77">20551</a></span>  <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json.html#a124c319566198d9f092c5bebea46ce77">operator></a>(<span class="keyword">const</span> ScalarType lhs, <a class="code" href="classnlohmann_1_1basic__json.html">const_reference</a> rhs) noexcept</div>
|
||
<div class="line"><a name="l20552"></a><span class="lineno">20552</span>  {</div>
|
||
<div class="line"><a name="l20553"></a><span class="lineno">20553</span>  <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json.html#aed115142bd0c6c66c864700e0467df55">basic_json</a>(lhs) > rhs;</div>
|
||
<div class="line"><a name="l20554"></a><span class="lineno">20554</span>  }</div>
|
||
<div class="line"><a name="l20555"></a><span class="lineno">20555</span>  </div>
|
||
<div class="line"><a name="l20575"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a74a943800c7f103d0990d7eef82c6453">20575</a></span>  <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json.html#a74a943800c7f103d0990d7eef82c6453">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="l20576"></a><span class="lineno">20576</span>  {</div>
|
||
<div class="line"><a name="l20577"></a><span class="lineno">20577</span>  <span class="keywordflow">return</span> not (lhs < rhs);</div>
|
||
<div class="line"><a name="l20578"></a><span class="lineno">20578</span>  }</div>
|
||
<div class="line"><a name="l20579"></a><span class="lineno">20579</span>  </div>
|
||
<div class="line"><a name="l20584"></a><span class="lineno">20584</span>  <span class="keyword">template</span><<span class="keyword">typename</span> ScalarType, <span class="keyword">typename</span> std::enable_if<</div>
|
||
<div class="line"><a name="l20585"></a><span class="lineno">20585</span>  std::is_scalar<ScalarType>::value, <span class="keywordtype">int</span>><a class="code" href="classnlohmann_1_1basic__json.html#a2b2d781d7f2a4ee41bc0016e931cadf7">::type</a> = 0></div>
|
||
<div class="line"><a name="l20586"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a68e3a92b3d9be1faa05c92d096299189">20586</a></span>  <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json.html#a68e3a92b3d9be1faa05c92d096299189">operator>=</a>(<a class="code" href="classnlohmann_1_1basic__json.html">const_reference</a> lhs, <span class="keyword">const</span> ScalarType rhs) noexcept</div>
|
||
<div class="line"><a name="l20587"></a><span class="lineno">20587</span>  {</div>
|
||
<div class="line"><a name="l20588"></a><span class="lineno">20588</span>  <span class="keywordflow">return</span> lhs >= <a class="code" href="classnlohmann_1_1basic__json.html#aed115142bd0c6c66c864700e0467df55">basic_json</a>(rhs);</div>
|
||
<div class="line"><a name="l20589"></a><span class="lineno">20589</span>  }</div>
|
||
<div class="line"><a name="l20590"></a><span class="lineno">20590</span>  </div>
|
||
<div class="line"><a name="l20595"></a><span class="lineno">20595</span>  <span class="keyword">template</span><<span class="keyword">typename</span> ScalarType, <span class="keyword">typename</span> std::enable_if<</div>
|
||
<div class="line"><a name="l20596"></a><span class="lineno">20596</span>  std::is_scalar<ScalarType>::value, <span class="keywordtype">int</span>><a class="code" href="classnlohmann_1_1basic__json.html#a2b2d781d7f2a4ee41bc0016e931cadf7">::type</a> = 0></div>
|
||
<div class="line"><a name="l20597"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a5ee0e3e8afc7cbd932d6ed66418fa80a">20597</a></span>  <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json.html#a5ee0e3e8afc7cbd932d6ed66418fa80a">operator>=</a>(<span class="keyword">const</span> ScalarType lhs, <a class="code" href="classnlohmann_1_1basic__json.html">const_reference</a> rhs) noexcept</div>
|
||
<div class="line"><a name="l20598"></a><span class="lineno">20598</span>  {</div>
|
||
<div class="line"><a name="l20599"></a><span class="lineno">20599</span>  <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json.html#aed115142bd0c6c66c864700e0467df55">basic_json</a>(lhs) >= rhs;</div>
|
||
<div class="line"><a name="l20600"></a><span class="lineno">20600</span>  }</div>
|
||
<div class="line"><a name="l20601"></a><span class="lineno">20601</span>  </div>
|
||
<div class="line"><a name="l20603"></a><span class="lineno">20603</span>  </div>
|
||
<div class="line"><a name="l20605"></a><span class="lineno">20605</span>  <span class="comment">// serialization //</span></div>
|
||
<div class="line"><a name="l20607"></a><span class="lineno">20607</span> <span class="comment"></span> </div>
|
||
<div class="line"><a name="l20610"></a><span class="lineno">20610</span>  </div>
|
||
<div class="line"><a name="l20642"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a5e34c5435e557d0bf666bd7311211405">20642</a></span>  <span class="keyword">friend</span> std::ostream& <a class="code" href="classnlohmann_1_1basic__json.html#a5e34c5435e557d0bf666bd7311211405">operator<<</a>(std::ostream& o, <span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a>& j)</div>
|
||
<div class="line"><a name="l20643"></a><span class="lineno">20643</span>  {</div>
|
||
<div class="line"><a name="l20644"></a><span class="lineno">20644</span>  <span class="comment">// read width member and use it as indentation parameter if nonzero</span></div>
|
||
<div class="line"><a name="l20645"></a><span class="lineno">20645</span>  <span class="keyword">const</span> <span class="keywordtype">bool</span> pretty_print = o.width() > 0;</div>
|
||
<div class="line"><a name="l20646"></a><span class="lineno">20646</span>  <span class="keyword">const</span> <span class="keyword">auto</span> indentation = pretty_print ? o.width() : 0;</div>
|
||
<div class="line"><a name="l20647"></a><span class="lineno">20647</span>  </div>
|
||
<div class="line"><a name="l20648"></a><span class="lineno">20648</span>  <span class="comment">// reset width to 0 for subsequent calls to this stream</span></div>
|
||
<div class="line"><a name="l20649"></a><span class="lineno">20649</span>  o.width(0);</div>
|
||
<div class="line"><a name="l20650"></a><span class="lineno">20650</span>  </div>
|
||
<div class="line"><a name="l20651"></a><span class="lineno">20651</span>  <span class="comment">// do the actual serialization</span></div>
|
||
<div class="line"><a name="l20652"></a><span class="lineno">20652</span>  <a class="code" href="classnlohmann_1_1detail_1_1serializer.html">serializer</a> s(<a class="code" href="classnlohmann_1_1detail_1_1output__adapter.html">detail::output_adapter<char></a>(o), o.fill());</div>
|
||
<div class="line"><a name="l20653"></a><span class="lineno">20653</span>  s.<a class="code" href="classnlohmann_1_1detail_1_1serializer.html#a95460ebd1a535a543e5a0ec52e00f48b">dump</a>(j, pretty_print, <span class="keyword">false</span>, <span class="keyword">static_cast<</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span><span class="keyword">></span>(indentation));</div>
|
||
<div class="line"><a name="l20654"></a><span class="lineno">20654</span>  <span class="keywordflow">return</span> o;</div>
|
||
<div class="line"><a name="l20655"></a><span class="lineno">20655</span>  }</div>
|
||
<div class="line"><a name="l20656"></a><span class="lineno">20656</span>  </div>
|
||
<div class="line"><a name="l20665"></a><span class="lineno">20665</span>  <a class="code" href="json_8hpp.html#a0f2cbf281fa983a844b9279c697b7a0c">JSON_HEDLEY_DEPRECATED</a>(3.0.0)</div>
|
||
<div class="line"><a name="l20666"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a34d6a60dd99e9f33b8273a1c8db5669b">20666</a></span>  friend <a class="code" href="namespacestd.html">std</a>::ostream& operator>>(const <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a>& j, <a class="code" href="namespacestd.html">std</a>::ostream& o)</div>
|
||
<div class="line"><a name="l20667"></a><span class="lineno">20667</span>  {</div>
|
||
<div class="line"><a name="l20668"></a><span class="lineno">20668</span>  <span class="keywordflow">return</span> o << j;</div>
|
||
<div class="line"><a name="l20669"></a><span class="lineno">20669</span>  }</div>
|
||
<div class="line"><a name="l20670"></a><span class="lineno">20670</span>  </div>
|
||
<div class="line"><a name="l20672"></a><span class="lineno">20672</span>  </div>
|
||
<div class="line"><a name="l20673"></a><span class="lineno">20673</span>  </div>
|
||
<div class="line"><a name="l20675"></a><span class="lineno">20675</span>  <span class="comment">// deserialization //</span></div>
|
||
<div class="line"><a name="l20677"></a><span class="lineno">20677</span> <span class="comment"></span> </div>
|
||
<div class="line"><a name="l20680"></a><span class="lineno">20680</span>  </div>
|
||
<div class="line"><a name="l20744"></a><span class="lineno">20744</span>  <a class="code" href="json_8hpp.html#a28d7e3b2d26bd5b8a3806da3db7dea03">JSON_HEDLEY_WARN_UNUSED_RESULT</a></div>
|
||
<div class="line"><a name="l20745"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a265a473e939184aa42655c9ccdf34e58">20745</a></span>  <span class="keyword">static</span> <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a> <a class="code" href="classnlohmann_1_1basic__json.html#a265a473e939184aa42655c9ccdf34e58">parse</a>(<a class="code" href="classnlohmann_1_1detail_1_1input__adapter.html">detail::input_adapter</a>&& i,</div>
|
||
<div class="line"><a name="l20746"></a><span class="lineno">20746</span>  <span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json.html#ab4f78c5f9fd25172eeec84482e03f5b7">parser_callback_t</a> cb = <span class="keyword">nullptr</span>,</div>
|
||
<div class="line"><a name="l20747"></a><span class="lineno">20747</span>  <span class="keyword">const</span> <span class="keywordtype">bool</span> allow_exceptions = <span class="keyword">true</span>)</div>
|
||
<div class="line"><a name="l20748"></a><span class="lineno">20748</span>  {</div>
|
||
<div class="line"><a name="l20749"></a><span class="lineno">20749</span>  <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a> result;</div>
|
||
<div class="line"><a name="l20750"></a><span class="lineno">20750</span>  <a class="code" href="classnlohmann_1_1detail_1_1parser.html">parser</a>(i, cb, allow_exceptions).<a class="code" href="classnlohmann_1_1detail_1_1parser.html#a14338d8f3174601c0b2b7ef28752ab17">parse</a>(<span class="keyword">true</span>, result);</div>
|
||
<div class="line"><a name="l20751"></a><span class="lineno">20751</span>  <span class="keywordflow">return</span> result;</div>
|
||
<div class="line"><a name="l20752"></a><span class="lineno">20752</span>  }</div>
|
||
<div class="line"><a name="l20753"></a><span class="lineno">20753</span>  </div>
|
||
<div class="line"><a name="l20754"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a875585b0cb6133902066daccd7c9d420">20754</a></span>  <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json.html#a875585b0cb6133902066daccd7c9d420">accept</a>(<a class="code" href="classnlohmann_1_1detail_1_1input__adapter.html">detail::input_adapter</a>&& i)</div>
|
||
<div class="line"><a name="l20755"></a><span class="lineno">20755</span>  {</div>
|
||
<div class="line"><a name="l20756"></a><span class="lineno">20756</span>  <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1detail_1_1parser.html">parser</a>(i).<a class="code" href="classnlohmann_1_1detail_1_1parser.html#a20997b42262856935b60fc91bf05bf3f">accept</a>(<span class="keyword">true</span>);</div>
|
||
<div class="line"><a name="l20757"></a><span class="lineno">20757</span>  }</div>
|
||
<div class="line"><a name="l20758"></a><span class="lineno">20758</span>  </div>
|
||
<div class="line"><a name="l20812"></a><span class="lineno">20812</span>  <span class="keyword">template</span> <<span class="keyword">typename</span> SAX></div>
|
||
<div class="line"><a name="l20813"></a><span class="lineno">20813</span>  <a class="code" href="json_8hpp.html#a5338981b5ad9027c9e54b1c5597f4344">JSON_HEDLEY_NON_NULL</a>(2)</div>
|
||
<div class="line"><a name="l20814"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a8a3dd150c2d1f0df3502d937de0871db">20814</a></span>  static <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json.html#a8a3dd150c2d1f0df3502d937de0871db">sax_parse</a>(detail::input_adapter&& i, SAX* sax,</div>
|
||
<div class="line"><a name="l20815"></a><span class="lineno">20815</span>  <a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40">input_format_t</a> format = <a class="code" href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40">input_format_t</a>::<a class="code" href="classnlohmann_1_1basic__json.html">json</a>,</div>
|
||
<div class="line"><a name="l20816"></a><span class="lineno">20816</span>  const <span class="keywordtype">bool</span> strict = true)</div>
|
||
<div class="line"><a name="l20817"></a><span class="lineno">20817</span>  {</div>
|
||
<div class="line"><a name="l20818"></a><span class="lineno">20818</span>  assert(sax);</div>
|
||
<div class="line"><a name="l20819"></a><span class="lineno">20819</span>  <span class="keywordflow">return</span> format == <a class="code" href="namespacenlohmann.html#a9cc9a3033850a092f791d86854d117fc">input_format_t::json</a></div>
|
||
<div class="line"><a name="l20820"></a><span class="lineno">20820</span>  ? <a class="code" href="classnlohmann_1_1detail_1_1parser.html">parser</a>(std::move(i)).<a class="code" href="classnlohmann_1_1detail_1_1parser.html#a14e34931965064b26e118eb72cbd5e25">sax_parse</a>(sax, strict)</div>
|
||
<div class="line"><a name="l20821"></a><span class="lineno">20821</span>  : <a class="code" href="classnlohmann_1_1detail_1_1binary__reader.html">detail::binary_reader<basic_json, SAX></a>(std::move(i)).<a class="code" href="classnlohmann_1_1detail_1_1binary__reader.html#ab94a54d6e595c2620b07589cf4116256">sax_parse</a>(format, sax, strict);</div>
|
||
<div class="line"><a name="l20822"></a><span class="lineno">20822</span>  }</div>
|
||
<div class="line"><a name="l20823"></a><span class="lineno">20823</span>  </div>
|
||
<div class="line"><a name="l20873"></a><span class="lineno">20873</span>  <span class="keyword">template</span><<span class="keyword">class </span>IteratorType, <span class="keyword">typename</span> std::enable_if<</div>
|
||
<div class="line"><a name="l20874"></a><span class="lineno">20874</span>  std::is_base_of<</div>
|
||
<div class="line"><a name="l20875"></a><span class="lineno">20875</span>  std::random_access_iterator_tag,</div>
|
||
<div class="line"><a name="l20876"></a><span class="lineno">20876</span>  <span class="keyword">typename</span> std::iterator_traits<IteratorType>::iterator_category><a class="code" href="classnlohmann_1_1basic__json.html#adcf8ca5079f5db993820bf50036bf45d">::value</a>, <span class="keywordtype">int</span>><a class="code" href="classnlohmann_1_1basic__json.html#a2b2d781d7f2a4ee41bc0016e931cadf7">::type</a> = 0></div>
|
||
<div class="line"><a name="l20877"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#ab330c13ba254ea41fbc1c52c5c610f45">20877</a></span>  <span class="keyword">static</span> <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a> <a class="code" href="classnlohmann_1_1basic__json.html#ab330c13ba254ea41fbc1c52c5c610f45">parse</a>(IteratorType first, IteratorType last,</div>
|
||
<div class="line"><a name="l20878"></a><span class="lineno">20878</span>  <span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json.html#ab4f78c5f9fd25172eeec84482e03f5b7">parser_callback_t</a> cb = <span class="keyword">nullptr</span>,</div>
|
||
<div class="line"><a name="l20879"></a><span class="lineno">20879</span>  <span class="keyword">const</span> <span class="keywordtype">bool</span> allow_exceptions = <span class="keyword">true</span>)</div>
|
||
<div class="line"><a name="l20880"></a><span class="lineno">20880</span>  {</div>
|
||
<div class="line"><a name="l20881"></a><span class="lineno">20881</span>  <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a> result;</div>
|
||
<div class="line"><a name="l20882"></a><span class="lineno">20882</span>  <a class="code" href="classnlohmann_1_1detail_1_1parser.html">parser</a>(<a class="code" href="classnlohmann_1_1detail_1_1input__adapter.html">detail::input_adapter</a>(first, last), cb, allow_exceptions).<a class="code" href="classnlohmann_1_1detail_1_1parser.html#a14338d8f3174601c0b2b7ef28752ab17">parse</a>(<span class="keyword">true</span>, result);</div>
|
||
<div class="line"><a name="l20883"></a><span class="lineno">20883</span>  <span class="keywordflow">return</span> result;</div>
|
||
<div class="line"><a name="l20884"></a><span class="lineno">20884</span>  }</div>
|
||
<div class="line"><a name="l20885"></a><span class="lineno">20885</span>  </div>
|
||
<div class="line"><a name="l20886"></a><span class="lineno">20886</span>  <span class="keyword">template</span><<span class="keyword">class </span>IteratorType, <span class="keyword">typename</span> std::enable_if<</div>
|
||
<div class="line"><a name="l20887"></a><span class="lineno">20887</span>  std::is_base_of<</div>
|
||
<div class="line"><a name="l20888"></a><span class="lineno">20888</span>  std::random_access_iterator_tag,</div>
|
||
<div class="line"><a name="l20889"></a><span class="lineno">20889</span>  <span class="keyword">typename</span> std::iterator_traits<IteratorType>::iterator_category><a class="code" href="classnlohmann_1_1basic__json.html#adcf8ca5079f5db993820bf50036bf45d">::value</a>, <span class="keywordtype">int</span>><a class="code" href="classnlohmann_1_1basic__json.html#a2b2d781d7f2a4ee41bc0016e931cadf7">::type</a> = 0></div>
|
||
<div class="line"><a name="l20890"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#ae797958b922732bf5fc01053d0659c1f">20890</a></span>  <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json.html#ae797958b922732bf5fc01053d0659c1f">accept</a>(IteratorType first, IteratorType last)</div>
|
||
<div class="line"><a name="l20891"></a><span class="lineno">20891</span>  {</div>
|
||
<div class="line"><a name="l20892"></a><span class="lineno">20892</span>  <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1detail_1_1parser.html">parser</a>(<a class="code" href="classnlohmann_1_1detail_1_1input__adapter.html">detail::input_adapter</a>(first, last)).<a class="code" href="classnlohmann_1_1detail_1_1parser.html#a20997b42262856935b60fc91bf05bf3f">accept</a>(<span class="keyword">true</span>);</div>
|
||
<div class="line"><a name="l20893"></a><span class="lineno">20893</span>  }</div>
|
||
<div class="line"><a name="l20894"></a><span class="lineno">20894</span>  </div>
|
||
<div class="line"><a name="l20895"></a><span class="lineno">20895</span>  <span class="keyword">template</span><<span class="keyword">class </span>IteratorType, <span class="keyword">class </span>SAX, <span class="keyword">typename</span> std::enable_if<</div>
|
||
<div class="line"><a name="l20896"></a><span class="lineno">20896</span>  std::is_base_of<</div>
|
||
<div class="line"><a name="l20897"></a><span class="lineno">20897</span>  std::random_access_iterator_tag,</div>
|
||
<div class="line"><a name="l20898"></a><span class="lineno">20898</span>  <span class="keyword">typename</span> std::iterator_traits<IteratorType>::iterator_category><a class="code" href="classnlohmann_1_1basic__json.html#adcf8ca5079f5db993820bf50036bf45d">::value</a>, <span class="keywordtype">int</span>><a class="code" href="classnlohmann_1_1basic__json.html#a2b2d781d7f2a4ee41bc0016e931cadf7">::type</a> = 0></div>
|
||
<div class="line"><a name="l20899"></a><span class="lineno">20899</span>  <a class="code" href="json_8hpp.html#a5338981b5ad9027c9e54b1c5597f4344">JSON_HEDLEY_NON_NULL</a>(3)</div>
|
||
<div class="line"><a name="l20900"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#aab9d7f0843a6e8f18eb2ebb944a796bd">20900</a></span>  static <span class="keywordtype">bool</span> <a class="code" href="classnlohmann_1_1basic__json.html#a8a3dd150c2d1f0df3502d937de0871db">sax_parse</a>(IteratorType first, IteratorType last, SAX* sax)</div>
|
||
<div class="line"><a name="l20901"></a><span class="lineno">20901</span>  {</div>
|
||
<div class="line"><a name="l20902"></a><span class="lineno">20902</span>  <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1detail_1_1parser.html">parser</a>(<a class="code" href="classnlohmann_1_1detail_1_1input__adapter.html">detail::input_adapter</a>(first, last)).<a class="code" href="classnlohmann_1_1detail_1_1parser.html#a14e34931965064b26e118eb72cbd5e25">sax_parse</a>(sax);</div>
|
||
<div class="line"><a name="l20903"></a><span class="lineno">20903</span>  }</div>
|
||
<div class="line"><a name="l20904"></a><span class="lineno">20904</span>  </div>
|
||
<div class="line"><a name="l20913"></a><span class="lineno">20913</span>  <a class="code" href="json_8hpp.html#a0f2cbf281fa983a844b9279c697b7a0c">JSON_HEDLEY_DEPRECATED</a>(3.0.0)</div>
|
||
<div class="line"><a name="l20914"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a60ca396028b8d9714c6e10efbf475af6">20914</a></span>  friend <a class="code" href="namespacestd.html">std</a>::istream& operator<<(<a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a>& j, <a class="code" href="namespacestd.html">std</a>::istream& i)</div>
|
||
<div class="line"><a name="l20915"></a><span class="lineno">20915</span>  {</div>
|
||
<div class="line"><a name="l20916"></a><span class="lineno">20916</span>  <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json.html#a34d6a60dd99e9f33b8273a1c8db5669b">operator>></a>(i, j);</div>
|
||
<div class="line"><a name="l20917"></a><span class="lineno">20917</span>  }</div>
|
||
<div class="line"><a name="l20918"></a><span class="lineno">20918</span>  </div>
|
||
<div class="line"><a name="l20944"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#aaf363408931d76472ded14017e59c9e8">20944</a></span>  <span class="keyword">friend</span> std::istream& <a class="code" href="classnlohmann_1_1basic__json.html#aaf363408931d76472ded14017e59c9e8">operator>></a>(std::istream& i, <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a>& j)</div>
|
||
<div class="line"><a name="l20945"></a><span class="lineno">20945</span>  {</div>
|
||
<div class="line"><a name="l20946"></a><span class="lineno">20946</span>  <a class="code" href="classnlohmann_1_1detail_1_1parser.html">parser</a>(<a class="code" href="classnlohmann_1_1detail_1_1input__adapter.html">detail::input_adapter</a>(i)).<a class="code" href="classnlohmann_1_1detail_1_1parser.html#a14338d8f3174601c0b2b7ef28752ab17">parse</a>(<span class="keyword">false</span>, j);</div>
|
||
<div class="line"><a name="l20947"></a><span class="lineno">20947</span>  <span class="keywordflow">return</span> i;</div>
|
||
<div class="line"><a name="l20948"></a><span class="lineno">20948</span>  }</div>
|
||
<div class="line"><a name="l20949"></a><span class="lineno">20949</span>  </div>
|
||
<div class="line"><a name="l20951"></a><span class="lineno">20951</span>  </div>
|
||
<div class="line"><a name="l20953"></a><span class="lineno">20953</span>  <span class="comment">// convenience functions //</span></div>
|
||
<div class="line"><a name="l20955"></a><span class="lineno">20955</span> <span class="comment"></span> </div>
|
||
<div class="line"><a name="l20986"></a><span class="lineno">20986</span>  <a class="code" href="json_8hpp.html#a5f2aaec3b681d0a72f7d6e90b70cdcd1">JSON_HEDLEY_RETURNS_NON_NULL</a></div>
|
||
<div class="line"><a name="l20987"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#ad14563c53cf7ca9189bc164082367bf3">20987</a></span>  <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="classnlohmann_1_1basic__json.html#ad14563c53cf7ca9189bc164082367bf3">type_name</a>() const noexcept</div>
|
||
<div class="line"><a name="l20988"></a><span class="lineno">20988</span>  {</div>
|
||
<div class="line"><a name="l20989"></a><span class="lineno">20989</span>  {</div>
|
||
<div class="line"><a name="l20990"></a><span class="lineno">20990</span>  <span class="keywordflow">switch</span> (m_type)</div>
|
||
<div class="line"><a name="l20991"></a><span class="lineno">20991</span>  {</div>
|
||
<div class="line"><a name="l20992"></a><span class="lineno">20992</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a37a6259cc0c1dae299a7866489dff0bd">value_t::null</a>:</div>
|
||
<div class="line"><a name="l20993"></a><span class="lineno">20993</span>  <span class="keywordflow">return</span> <span class="stringliteral">"null"</span>;</div>
|
||
<div class="line"><a name="l20994"></a><span class="lineno">20994</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>:</div>
|
||
<div class="line"><a name="l20995"></a><span class="lineno">20995</span>  <span class="keywordflow">return</span> <span class="stringliteral">"object"</span>;</div>
|
||
<div class="line"><a name="l20996"></a><span class="lineno">20996</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>:</div>
|
||
<div class="line"><a name="l20997"></a><span class="lineno">20997</span>  <span class="keywordflow">return</span> <span class="stringliteral">"array"</span>;</div>
|
||
<div class="line"><a name="l20998"></a><span class="lineno">20998</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ab45cffe084dd3d20d928bee85e7b0f21">value_t::string</a>:</div>
|
||
<div class="line"><a name="l20999"></a><span class="lineno">20999</span>  <span class="keywordflow">return</span> <span class="stringliteral">"string"</span>;</div>
|
||
<div class="line"><a name="l21000"></a><span class="lineno">21000</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a84e2c64f38f78ba3ea5c905ab5a2da27">value_t::boolean</a>:</div>
|
||
<div class="line"><a name="l21001"></a><span class="lineno">21001</span>  <span class="keywordflow">return</span> <span class="stringliteral">"boolean"</span>;</div>
|
||
<div class="line"><a name="l21002"></a><span class="lineno">21002</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a94708897ec9db8647dfe695714c98e46">value_t::discarded</a>:</div>
|
||
<div class="line"><a name="l21003"></a><span class="lineno">21003</span>  <span class="keywordflow">return</span> <span class="stringliteral">"discarded"</span>;</div>
|
||
<div class="line"><a name="l21004"></a><span class="lineno">21004</span>  <span class="keywordflow">default</span>:</div>
|
||
<div class="line"><a name="l21005"></a><span class="lineno">21005</span>  <span class="keywordflow">return</span> <span class="stringliteral">"number"</span>;</div>
|
||
<div class="line"><a name="l21006"></a><span class="lineno">21006</span>  }</div>
|
||
<div class="line"><a name="l21007"></a><span class="lineno">21007</span>  }</div>
|
||
<div class="line"><a name="l21008"></a><span class="lineno">21008</span>  }</div>
|
||
<div class="line"><a name="l21009"></a><span class="lineno">21009</span>  </div>
|
||
<div class="line"><a name="l21010"></a><span class="lineno">21010</span>  </div>
|
||
<div class="line"><a name="l21011"></a><span class="lineno">21011</span>  <span class="keyword">private</span>:</div>
|
||
<div class="line"><a name="l21013"></a><span class="lineno">21013</span>  <span class="comment">// member variables //</span></div>
|
||
<div class="line"><a name="l21015"></a><span class="lineno">21015</span> <span class="comment"></span> </div>
|
||
<div class="line"><a name="l21017"></a><span class="lineno">21017</span>  <a class="code" href="classnlohmann_1_1basic__json.html#ae8cbef097f7da18a781fc86587de6b90">value_t</a> m_type = <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a37a6259cc0c1dae299a7866489dff0bd">value_t::null</a>;</div>
|
||
<div class="line"><a name="l21018"></a><span class="lineno">21018</span>  </div>
|
||
<div class="line"><a name="l21020"></a><span class="lineno">21020</span>  json_value m_value = {};</div>
|
||
<div class="line"><a name="l21021"></a><span class="lineno">21021</span>  </div>
|
||
<div class="line"><a name="l21023"></a><span class="lineno">21023</span>  <span class="comment">// binary serialization/deserialization //</span></div>
|
||
<div class="line"><a name="l21025"></a><span class="lineno">21025</span> <span class="comment"></span> </div>
|
||
<div class="line"><a name="l21028"></a><span class="lineno">21028</span>  </div>
|
||
<div class="line"><a name="l21029"></a><span class="lineno">21029</span>  <span class="keyword">public</span>:</div>
|
||
<div class="line"><a name="l21118"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a2566783e190dec524bf3445b322873b8">21118</a></span>  <span class="keyword">static</span> std::vector<uint8_t> <a class="code" href="classnlohmann_1_1basic__json.html#a2566783e190dec524bf3445b322873b8">to_cbor</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a>& j)</div>
|
||
<div class="line"><a name="l21119"></a><span class="lineno">21119</span>  {</div>
|
||
<div class="line"><a name="l21120"></a><span class="lineno">21120</span>  std::vector<uint8_t> result;</div>
|
||
<div class="line"><a name="l21121"></a><span class="lineno">21121</span>  <a class="code" href="classnlohmann_1_1basic__json.html#a2566783e190dec524bf3445b322873b8">to_cbor</a>(j, result);</div>
|
||
<div class="line"><a name="l21122"></a><span class="lineno">21122</span>  <span class="keywordflow">return</span> result;</div>
|
||
<div class="line"><a name="l21123"></a><span class="lineno">21123</span>  }</div>
|
||
<div class="line"><a name="l21124"></a><span class="lineno">21124</span>  </div>
|
||
<div class="line"><a name="l21125"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a5d9a89ac7ed08171a22dc6d65d033c09">21125</a></span>  <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classnlohmann_1_1basic__json.html#a5d9a89ac7ed08171a22dc6d65d033c09">to_cbor</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a>& j, <a class="code" href="classnlohmann_1_1detail_1_1output__adapter.html">detail::output_adapter<uint8_t></a> o)</div>
|
||
<div class="line"><a name="l21126"></a><span class="lineno">21126</span>  {</div>
|
||
<div class="line"><a name="l21127"></a><span class="lineno">21127</span>  <a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html">binary_writer<uint8_t></a>(o).<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#aa0ab8d27fd88a33a2f801413ac4c7fbc">write_cbor</a>(j);</div>
|
||
<div class="line"><a name="l21128"></a><span class="lineno">21128</span>  }</div>
|
||
<div class="line"><a name="l21129"></a><span class="lineno">21129</span>  </div>
|
||
<div class="line"><a name="l21130"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a6defa7ec3d3ace8f713f001f720182d7">21130</a></span>  <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classnlohmann_1_1basic__json.html#a6defa7ec3d3ace8f713f001f720182d7">to_cbor</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a>& j, <a class="code" href="classnlohmann_1_1detail_1_1output__adapter.html">detail::output_adapter<char></a> o)</div>
|
||
<div class="line"><a name="l21131"></a><span class="lineno">21131</span>  {</div>
|
||
<div class="line"><a name="l21132"></a><span class="lineno">21132</span>  <a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html">binary_writer<char></a>(o).<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#aa0ab8d27fd88a33a2f801413ac4c7fbc">write_cbor</a>(j);</div>
|
||
<div class="line"><a name="l21133"></a><span class="lineno">21133</span>  }</div>
|
||
<div class="line"><a name="l21134"></a><span class="lineno">21134</span>  </div>
|
||
<div class="line"><a name="l21214"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a09ca1dc273d226afe0ca83a9d7438d9c">21214</a></span>  <span class="keyword">static</span> std::vector<uint8_t> <a class="code" href="classnlohmann_1_1basic__json.html#a09ca1dc273d226afe0ca83a9d7438d9c">to_msgpack</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a>& j)</div>
|
||
<div class="line"><a name="l21215"></a><span class="lineno">21215</span>  {</div>
|
||
<div class="line"><a name="l21216"></a><span class="lineno">21216</span>  std::vector<uint8_t> result;</div>
|
||
<div class="line"><a name="l21217"></a><span class="lineno">21217</span>  <a class="code" href="classnlohmann_1_1basic__json.html#a09ca1dc273d226afe0ca83a9d7438d9c">to_msgpack</a>(j, result);</div>
|
||
<div class="line"><a name="l21218"></a><span class="lineno">21218</span>  <span class="keywordflow">return</span> result;</div>
|
||
<div class="line"><a name="l21219"></a><span class="lineno">21219</span>  }</div>
|
||
<div class="line"><a name="l21220"></a><span class="lineno">21220</span>  </div>
|
||
<div class="line"><a name="l21221"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a4ef190107be36fea6b6c63d71d439c99">21221</a></span>  <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classnlohmann_1_1basic__json.html#a4ef190107be36fea6b6c63d71d439c99">to_msgpack</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a>& j, <a class="code" href="classnlohmann_1_1detail_1_1output__adapter.html">detail::output_adapter<uint8_t></a> o)</div>
|
||
<div class="line"><a name="l21222"></a><span class="lineno">21222</span>  {</div>
|
||
<div class="line"><a name="l21223"></a><span class="lineno">21223</span>  <a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html">binary_writer<uint8_t></a>(o).<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ae4e0852b64102ce4b07d99f08f828b7c">write_msgpack</a>(j);</div>
|
||
<div class="line"><a name="l21224"></a><span class="lineno">21224</span>  }</div>
|
||
<div class="line"><a name="l21225"></a><span class="lineno">21225</span>  </div>
|
||
<div class="line"><a name="l21226"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a99efe44b502de2762a433ce3688ec2d2">21226</a></span>  <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classnlohmann_1_1basic__json.html#a99efe44b502de2762a433ce3688ec2d2">to_msgpack</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a>& j, <a class="code" href="classnlohmann_1_1detail_1_1output__adapter.html">detail::output_adapter<char></a> o)</div>
|
||
<div class="line"><a name="l21227"></a><span class="lineno">21227</span>  {</div>
|
||
<div class="line"><a name="l21228"></a><span class="lineno">21228</span>  <a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html">binary_writer<char></a>(o).<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#ae4e0852b64102ce4b07d99f08f828b7c">write_msgpack</a>(j);</div>
|
||
<div class="line"><a name="l21229"></a><span class="lineno">21229</span>  }</div>
|
||
<div class="line"><a name="l21230"></a><span class="lineno">21230</span>  </div>
|
||
<div class="line"><a name="l21311"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#ae1ece6c2059114eac10873f13ef19185">21311</a></span>  <span class="keyword">static</span> std::vector<uint8_t> <a class="code" href="classnlohmann_1_1basic__json.html#ae1ece6c2059114eac10873f13ef19185">to_ubjson</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a>& j,</div>
|
||
<div class="line"><a name="l21312"></a><span class="lineno">21312</span>  <span class="keyword">const</span> <span class="keywordtype">bool</span> use_size = <span class="keyword">false</span>,</div>
|
||
<div class="line"><a name="l21313"></a><span class="lineno">21313</span>  <span class="keyword">const</span> <span class="keywordtype">bool</span> use_type = <span class="keyword">false</span>)</div>
|
||
<div class="line"><a name="l21314"></a><span class="lineno">21314</span>  {</div>
|
||
<div class="line"><a name="l21315"></a><span class="lineno">21315</span>  std::vector<uint8_t> result;</div>
|
||
<div class="line"><a name="l21316"></a><span class="lineno">21316</span>  <a class="code" href="classnlohmann_1_1basic__json.html#ae1ece6c2059114eac10873f13ef19185">to_ubjson</a>(j, result, use_size, use_type);</div>
|
||
<div class="line"><a name="l21317"></a><span class="lineno">21317</span>  <span class="keywordflow">return</span> result;</div>
|
||
<div class="line"><a name="l21318"></a><span class="lineno">21318</span>  }</div>
|
||
<div class="line"><a name="l21319"></a><span class="lineno">21319</span>  </div>
|
||
<div class="line"><a name="l21320"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a480f6d5a30b9627b55831178266575a7">21320</a></span>  <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classnlohmann_1_1basic__json.html#a480f6d5a30b9627b55831178266575a7">to_ubjson</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a>& j, <a class="code" href="classnlohmann_1_1detail_1_1output__adapter.html">detail::output_adapter<uint8_t></a> o,</div>
|
||
<div class="line"><a name="l21321"></a><span class="lineno">21321</span>  <span class="keyword">const</span> <span class="keywordtype">bool</span> use_size = <span class="keyword">false</span>, <span class="keyword">const</span> <span class="keywordtype">bool</span> use_type = <span class="keyword">false</span>)</div>
|
||
<div class="line"><a name="l21322"></a><span class="lineno">21322</span>  {</div>
|
||
<div class="line"><a name="l21323"></a><span class="lineno">21323</span>  <a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html">binary_writer<uint8_t></a>(o).<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#a0f6c65053d859269f88eb4ebb0cd7060">write_ubjson</a>(j, use_size, use_type);</div>
|
||
<div class="line"><a name="l21324"></a><span class="lineno">21324</span>  }</div>
|
||
<div class="line"><a name="l21325"></a><span class="lineno">21325</span>  </div>
|
||
<div class="line"><a name="l21326"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#af66db22ad819346a688042a9da68ee5f">21326</a></span>  <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classnlohmann_1_1basic__json.html#af66db22ad819346a688042a9da68ee5f">to_ubjson</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a>& j, <a class="code" href="classnlohmann_1_1detail_1_1output__adapter.html">detail::output_adapter<char></a> o,</div>
|
||
<div class="line"><a name="l21327"></a><span class="lineno">21327</span>  <span class="keyword">const</span> <span class="keywordtype">bool</span> use_size = <span class="keyword">false</span>, <span class="keyword">const</span> <span class="keywordtype">bool</span> use_type = <span class="keyword">false</span>)</div>
|
||
<div class="line"><a name="l21328"></a><span class="lineno">21328</span>  {</div>
|
||
<div class="line"><a name="l21329"></a><span class="lineno">21329</span>  <a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html">binary_writer<char></a>(o).<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#a0f6c65053d859269f88eb4ebb0cd7060">write_ubjson</a>(j, use_size, use_type);</div>
|
||
<div class="line"><a name="l21330"></a><span class="lineno">21330</span>  }</div>
|
||
<div class="line"><a name="l21331"></a><span class="lineno">21331</span>  </div>
|
||
<div class="line"><a name="l21332"></a><span class="lineno">21332</span>  </div>
|
||
<div class="line"><a name="l21388"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a8ca5dd4f18b59e7022b04fd9bf7f5176">21388</a></span>  <span class="keyword">static</span> std::vector<uint8_t> <a class="code" href="classnlohmann_1_1basic__json.html#a8ca5dd4f18b59e7022b04fd9bf7f5176">to_bson</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a>& j)</div>
|
||
<div class="line"><a name="l21389"></a><span class="lineno">21389</span>  {</div>
|
||
<div class="line"><a name="l21390"></a><span class="lineno">21390</span>  std::vector<uint8_t> result;</div>
|
||
<div class="line"><a name="l21391"></a><span class="lineno">21391</span>  <a class="code" href="classnlohmann_1_1basic__json.html#a8ca5dd4f18b59e7022b04fd9bf7f5176">to_bson</a>(j, result);</div>
|
||
<div class="line"><a name="l21392"></a><span class="lineno">21392</span>  <span class="keywordflow">return</span> result;</div>
|
||
<div class="line"><a name="l21393"></a><span class="lineno">21393</span>  }</div>
|
||
<div class="line"><a name="l21394"></a><span class="lineno">21394</span>  </div>
|
||
<div class="line"><a name="l21403"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a51df13f73a970da95c3dcb3d47b0c2c4">21403</a></span>  <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classnlohmann_1_1basic__json.html#a51df13f73a970da95c3dcb3d47b0c2c4">to_bson</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a>& j, <a class="code" href="classnlohmann_1_1detail_1_1output__adapter.html">detail::output_adapter<uint8_t></a> o)</div>
|
||
<div class="line"><a name="l21404"></a><span class="lineno">21404</span>  {</div>
|
||
<div class="line"><a name="l21405"></a><span class="lineno">21405</span>  <a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html">binary_writer<uint8_t></a>(o).<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#a9ffc566db5219b473762462234b47db9">write_bson</a>(j);</div>
|
||
<div class="line"><a name="l21406"></a><span class="lineno">21406</span>  }</div>
|
||
<div class="line"><a name="l21407"></a><span class="lineno">21407</span>  </div>
|
||
<div class="line"><a name="l21411"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#aeb988f5b2148875ed1c9cb32bec156c6">21411</a></span>  <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classnlohmann_1_1basic__json.html#aeb988f5b2148875ed1c9cb32bec156c6">to_bson</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a>& j, <a class="code" href="classnlohmann_1_1detail_1_1output__adapter.html">detail::output_adapter<char></a> o)</div>
|
||
<div class="line"><a name="l21412"></a><span class="lineno">21412</span>  {</div>
|
||
<div class="line"><a name="l21413"></a><span class="lineno">21413</span>  <a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html">binary_writer<char></a>(o).<a class="code" href="classnlohmann_1_1detail_1_1binary__writer.html#a9ffc566db5219b473762462234b47db9">write_bson</a>(j);</div>
|
||
<div class="line"><a name="l21414"></a><span class="lineno">21414</span>  }</div>
|
||
<div class="line"><a name="l21415"></a><span class="lineno">21415</span>  </div>
|
||
<div class="line"><a name="l21416"></a><span class="lineno">21416</span>  </div>
|
||
<div class="line"><a name="l21516"></a><span class="lineno">21516</span>  <a class="code" href="json_8hpp.html#a28d7e3b2d26bd5b8a3806da3db7dea03">JSON_HEDLEY_WARN_UNUSED_RESULT</a></div>
|
||
<div class="line"><a name="l21517"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a1d568ba1bd6978d80db42aa76626e2cf">21517</a></span>  <span class="keyword">static</span> <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a> <a class="code" href="classnlohmann_1_1basic__json.html#a1d568ba1bd6978d80db42aa76626e2cf">from_cbor</a>(<a class="code" href="classnlohmann_1_1detail_1_1input__adapter.html">detail::input_adapter</a>&& i,</div>
|
||
<div class="line"><a name="l21518"></a><span class="lineno">21518</span>  <span class="keyword">const</span> <span class="keywordtype">bool</span> strict = <span class="keyword">true</span>,</div>
|
||
<div class="line"><a name="l21519"></a><span class="lineno">21519</span>  <span class="keyword">const</span> <span class="keywordtype">bool</span> allow_exceptions = <span class="keyword">true</span>)</div>
|
||
<div class="line"><a name="l21520"></a><span class="lineno">21520</span>  {</div>
|
||
<div class="line"><a name="l21521"></a><span class="lineno">21521</span>  <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a> result;</div>
|
||
<div class="line"><a name="l21522"></a><span class="lineno">21522</span>  <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html">detail::json_sax_dom_parser<basic_json></a> sdp(result, allow_exceptions);</div>
|
||
<div class="line"><a name="l21523"></a><span class="lineno">21523</span>  <span class="keyword">const</span> <span class="keywordtype">bool</span> res = <a class="code" href="classnlohmann_1_1detail_1_1binary__reader.html">binary_reader</a>(<a class="code" href="classnlohmann_1_1detail_1_1input__adapter.html">detail::input_adapter</a>(i)).<a class="code" href="classnlohmann_1_1detail_1_1binary__reader.html#ab94a54d6e595c2620b07589cf4116256">sax_parse</a>(input_format_t::cbor, &sdp, strict);</div>
|
||
<div class="line"><a name="l21524"></a><span class="lineno">21524</span>  <span class="keywordflow">return</span> res ? result : <a class="code" href="classnlohmann_1_1basic__json.html#aed115142bd0c6c66c864700e0467df55">basic_json</a>(<a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a94708897ec9db8647dfe695714c98e46">value_t::discarded</a>);</div>
|
||
<div class="line"><a name="l21525"></a><span class="lineno">21525</span>  }</div>
|
||
<div class="line"><a name="l21526"></a><span class="lineno">21526</span>  </div>
|
||
<div class="line"><a name="l21530"></a><span class="lineno">21530</span>  <span class="keyword">template</span><<span class="keyword">typename</span> A1, <span class="keyword">typename</span> A2,</div>
|
||
<div class="line"><a name="l21531"></a><span class="lineno">21531</span>  <a class="code" href="namespacenlohmann_1_1detail.html#a02bcbc878bee413f25b985ada771aa9c">detail::enable_if_t<std::is_constructible<detail::input_adapter, A1, A2>::value</a>, <span class="keywordtype">int</span>> = 0></div>
|
||
<div class="line"><a name="l21532"></a><span class="lineno">21532</span>  <a class="code" href="json_8hpp.html#a28d7e3b2d26bd5b8a3806da3db7dea03">JSON_HEDLEY_WARN_UNUSED_RESULT</a></div>
|
||
<div class="line"><a name="l21533"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a513d6fb63a0ea53ce6c28c05ce0f26e6">21533</a></span>  <span class="keyword">static</span> <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a> <a class="code" href="classnlohmann_1_1basic__json.html#a513d6fb63a0ea53ce6c28c05ce0f26e6">from_cbor</a>(A1 && a1, A2 && a2,</div>
|
||
<div class="line"><a name="l21534"></a><span class="lineno">21534</span>  <span class="keyword">const</span> <span class="keywordtype">bool</span> strict = <span class="keyword">true</span>,</div>
|
||
<div class="line"><a name="l21535"></a><span class="lineno">21535</span>  <span class="keyword">const</span> <span class="keywordtype">bool</span> allow_exceptions = <span class="keyword">true</span>)</div>
|
||
<div class="line"><a name="l21536"></a><span class="lineno">21536</span>  {</div>
|
||
<div class="line"><a name="l21537"></a><span class="lineno">21537</span>  <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a> result;</div>
|
||
<div class="line"><a name="l21538"></a><span class="lineno">21538</span>  <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html">detail::json_sax_dom_parser<basic_json></a> sdp(result, allow_exceptions);</div>
|
||
<div class="line"><a name="l21539"></a><span class="lineno">21539</span>  <span class="keyword">const</span> <span class="keywordtype">bool</span> res = <a class="code" href="classnlohmann_1_1detail_1_1binary__reader.html">binary_reader</a>(<a class="code" href="classnlohmann_1_1detail_1_1input__adapter.html">detail::input_adapter</a>(std::forward<A1>(a1), std::forward<A2>(a2))).<a class="code" href="classnlohmann_1_1detail_1_1binary__reader.html#ab94a54d6e595c2620b07589cf4116256">sax_parse</a>(input_format_t::cbor, &sdp, strict);</div>
|
||
<div class="line"><a name="l21540"></a><span class="lineno">21540</span>  <span class="keywordflow">return</span> res ? result : <a class="code" href="classnlohmann_1_1basic__json.html#aed115142bd0c6c66c864700e0467df55">basic_json</a>(<a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a94708897ec9db8647dfe695714c98e46">value_t::discarded</a>);</div>
|
||
<div class="line"><a name="l21541"></a><span class="lineno">21541</span>  }</div>
|
||
<div class="line"><a name="l21542"></a><span class="lineno">21542</span>  </div>
|
||
<div class="line"><a name="l21625"></a><span class="lineno">21625</span>  <a class="code" href="json_8hpp.html#a28d7e3b2d26bd5b8a3806da3db7dea03">JSON_HEDLEY_WARN_UNUSED_RESULT</a></div>
|
||
<div class="line"><a name="l21626"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a11458b7982adba51bc634f2f8c961e9b">21626</a></span>  <span class="keyword">static</span> <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a> <a class="code" href="classnlohmann_1_1basic__json.html#a11458b7982adba51bc634f2f8c961e9b">from_msgpack</a>(<a class="code" href="classnlohmann_1_1detail_1_1input__adapter.html">detail::input_adapter</a>&& i,</div>
|
||
<div class="line"><a name="l21627"></a><span class="lineno">21627</span>  <span class="keyword">const</span> <span class="keywordtype">bool</span> strict = <span class="keyword">true</span>,</div>
|
||
<div class="line"><a name="l21628"></a><span class="lineno">21628</span>  <span class="keyword">const</span> <span class="keywordtype">bool</span> allow_exceptions = <span class="keyword">true</span>)</div>
|
||
<div class="line"><a name="l21629"></a><span class="lineno">21629</span>  {</div>
|
||
<div class="line"><a name="l21630"></a><span class="lineno">21630</span>  <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a> result;</div>
|
||
<div class="line"><a name="l21631"></a><span class="lineno">21631</span>  <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html">detail::json_sax_dom_parser<basic_json></a> sdp(result, allow_exceptions);</div>
|
||
<div class="line"><a name="l21632"></a><span class="lineno">21632</span>  <span class="keyword">const</span> <span class="keywordtype">bool</span> res = <a class="code" href="classnlohmann_1_1detail_1_1binary__reader.html">binary_reader</a>(<a class="code" href="classnlohmann_1_1detail_1_1input__adapter.html">detail::input_adapter</a>(i)).<a class="code" href="classnlohmann_1_1detail_1_1binary__reader.html#ab94a54d6e595c2620b07589cf4116256">sax_parse</a>(input_format_t::msgpack, &sdp, strict);</div>
|
||
<div class="line"><a name="l21633"></a><span class="lineno">21633</span>  <span class="keywordflow">return</span> res ? result : <a class="code" href="classnlohmann_1_1basic__json.html#aed115142bd0c6c66c864700e0467df55">basic_json</a>(<a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a94708897ec9db8647dfe695714c98e46">value_t::discarded</a>);</div>
|
||
<div class="line"><a name="l21634"></a><span class="lineno">21634</span>  }</div>
|
||
<div class="line"><a name="l21635"></a><span class="lineno">21635</span>  </div>
|
||
<div class="line"><a name="l21639"></a><span class="lineno">21639</span>  <span class="keyword">template</span><<span class="keyword">typename</span> A1, <span class="keyword">typename</span> A2,</div>
|
||
<div class="line"><a name="l21640"></a><span class="lineno">21640</span>  <a class="code" href="namespacenlohmann_1_1detail.html#a02bcbc878bee413f25b985ada771aa9c">detail::enable_if_t<std::is_constructible<detail::input_adapter, A1, A2>::value</a>, <span class="keywordtype">int</span>> = 0></div>
|
||
<div class="line"><a name="l21641"></a><span class="lineno">21641</span>  <a class="code" href="json_8hpp.html#a28d7e3b2d26bd5b8a3806da3db7dea03">JSON_HEDLEY_WARN_UNUSED_RESULT</a></div>
|
||
<div class="line"><a name="l21642"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a022b65246f82c87526940248dc9df6f5">21642</a></span>  <span class="keyword">static</span> <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a> <a class="code" href="classnlohmann_1_1basic__json.html#a022b65246f82c87526940248dc9df6f5">from_msgpack</a>(A1 && a1, A2 && a2,</div>
|
||
<div class="line"><a name="l21643"></a><span class="lineno">21643</span>  <span class="keyword">const</span> <span class="keywordtype">bool</span> strict = <span class="keyword">true</span>,</div>
|
||
<div class="line"><a name="l21644"></a><span class="lineno">21644</span>  <span class="keyword">const</span> <span class="keywordtype">bool</span> allow_exceptions = <span class="keyword">true</span>)</div>
|
||
<div class="line"><a name="l21645"></a><span class="lineno">21645</span>  {</div>
|
||
<div class="line"><a name="l21646"></a><span class="lineno">21646</span>  <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a> result;</div>
|
||
<div class="line"><a name="l21647"></a><span class="lineno">21647</span>  <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html">detail::json_sax_dom_parser<basic_json></a> sdp(result, allow_exceptions);</div>
|
||
<div class="line"><a name="l21648"></a><span class="lineno">21648</span>  <span class="keyword">const</span> <span class="keywordtype">bool</span> res = <a class="code" href="classnlohmann_1_1detail_1_1binary__reader.html">binary_reader</a>(<a class="code" href="classnlohmann_1_1detail_1_1input__adapter.html">detail::input_adapter</a>(std::forward<A1>(a1), std::forward<A2>(a2))).<a class="code" href="classnlohmann_1_1detail_1_1binary__reader.html#ab94a54d6e595c2620b07589cf4116256">sax_parse</a>(input_format_t::msgpack, &sdp, strict);</div>
|
||
<div class="line"><a name="l21649"></a><span class="lineno">21649</span>  <span class="keywordflow">return</span> res ? result : <a class="code" href="classnlohmann_1_1basic__json.html#aed115142bd0c6c66c864700e0467df55">basic_json</a>(<a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a94708897ec9db8647dfe695714c98e46">value_t::discarded</a>);</div>
|
||
<div class="line"><a name="l21650"></a><span class="lineno">21650</span>  }</div>
|
||
<div class="line"><a name="l21651"></a><span class="lineno">21651</span>  </div>
|
||
<div class="line"><a name="l21713"></a><span class="lineno">21713</span>  <a class="code" href="json_8hpp.html#a28d7e3b2d26bd5b8a3806da3db7dea03">JSON_HEDLEY_WARN_UNUSED_RESULT</a></div>
|
||
<div class="line"><a name="l21714"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a1ed52b463d2ef14c85ed076467168c72">21714</a></span>  <span class="keyword">static</span> <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a> <a class="code" href="classnlohmann_1_1basic__json.html#a1ed52b463d2ef14c85ed076467168c72">from_ubjson</a>(<a class="code" href="classnlohmann_1_1detail_1_1input__adapter.html">detail::input_adapter</a>&& i,</div>
|
||
<div class="line"><a name="l21715"></a><span class="lineno">21715</span>  <span class="keyword">const</span> <span class="keywordtype">bool</span> strict = <span class="keyword">true</span>,</div>
|
||
<div class="line"><a name="l21716"></a><span class="lineno">21716</span>  <span class="keyword">const</span> <span class="keywordtype">bool</span> allow_exceptions = <span class="keyword">true</span>)</div>
|
||
<div class="line"><a name="l21717"></a><span class="lineno">21717</span>  {</div>
|
||
<div class="line"><a name="l21718"></a><span class="lineno">21718</span>  <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a> result;</div>
|
||
<div class="line"><a name="l21719"></a><span class="lineno">21719</span>  <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html">detail::json_sax_dom_parser<basic_json></a> sdp(result, allow_exceptions);</div>
|
||
<div class="line"><a name="l21720"></a><span class="lineno">21720</span>  <span class="keyword">const</span> <span class="keywordtype">bool</span> res = <a class="code" href="classnlohmann_1_1detail_1_1binary__reader.html">binary_reader</a>(<a class="code" href="classnlohmann_1_1detail_1_1input__adapter.html">detail::input_adapter</a>(i)).<a class="code" href="classnlohmann_1_1detail_1_1binary__reader.html#ab94a54d6e595c2620b07589cf4116256">sax_parse</a>(input_format_t::ubjson, &sdp, strict);</div>
|
||
<div class="line"><a name="l21721"></a><span class="lineno">21721</span>  <span class="keywordflow">return</span> res ? result : <a class="code" href="classnlohmann_1_1basic__json.html#aed115142bd0c6c66c864700e0467df55">basic_json</a>(<a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a94708897ec9db8647dfe695714c98e46">value_t::discarded</a>);</div>
|
||
<div class="line"><a name="l21722"></a><span class="lineno">21722</span>  }</div>
|
||
<div class="line"><a name="l21723"></a><span class="lineno">21723</span>  </div>
|
||
<div class="line"><a name="l21727"></a><span class="lineno">21727</span>  <span class="keyword">template</span><<span class="keyword">typename</span> A1, <span class="keyword">typename</span> A2,</div>
|
||
<div class="line"><a name="l21728"></a><span class="lineno">21728</span>  <a class="code" href="namespacenlohmann_1_1detail.html#a02bcbc878bee413f25b985ada771aa9c">detail::enable_if_t<std::is_constructible<detail::input_adapter, A1, A2>::value</a>, <span class="keywordtype">int</span>> = 0></div>
|
||
<div class="line"><a name="l21729"></a><span class="lineno">21729</span>  <a class="code" href="json_8hpp.html#a28d7e3b2d26bd5b8a3806da3db7dea03">JSON_HEDLEY_WARN_UNUSED_RESULT</a></div>
|
||
<div class="line"><a name="l21730"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a46afafed69ed4c8ae797afb8445fd42f">21730</a></span>  <span class="keyword">static</span> <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a> <a class="code" href="classnlohmann_1_1basic__json.html#a46afafed69ed4c8ae797afb8445fd42f">from_ubjson</a>(A1 && a1, A2 && a2,</div>
|
||
<div class="line"><a name="l21731"></a><span class="lineno">21731</span>  <span class="keyword">const</span> <span class="keywordtype">bool</span> strict = <span class="keyword">true</span>,</div>
|
||
<div class="line"><a name="l21732"></a><span class="lineno">21732</span>  <span class="keyword">const</span> <span class="keywordtype">bool</span> allow_exceptions = <span class="keyword">true</span>)</div>
|
||
<div class="line"><a name="l21733"></a><span class="lineno">21733</span>  {</div>
|
||
<div class="line"><a name="l21734"></a><span class="lineno">21734</span>  <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a> result;</div>
|
||
<div class="line"><a name="l21735"></a><span class="lineno">21735</span>  <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html">detail::json_sax_dom_parser<basic_json></a> sdp(result, allow_exceptions);</div>
|
||
<div class="line"><a name="l21736"></a><span class="lineno">21736</span>  <span class="keyword">const</span> <span class="keywordtype">bool</span> res = <a class="code" href="classnlohmann_1_1detail_1_1binary__reader.html">binary_reader</a>(<a class="code" href="classnlohmann_1_1detail_1_1input__adapter.html">detail::input_adapter</a>(std::forward<A1>(a1), std::forward<A2>(a2))).<a class="code" href="classnlohmann_1_1detail_1_1binary__reader.html#ab94a54d6e595c2620b07589cf4116256">sax_parse</a>(input_format_t::ubjson, &sdp, strict);</div>
|
||
<div class="line"><a name="l21737"></a><span class="lineno">21737</span>  <span class="keywordflow">return</span> res ? result : <a class="code" href="classnlohmann_1_1basic__json.html#aed115142bd0c6c66c864700e0467df55">basic_json</a>(<a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a94708897ec9db8647dfe695714c98e46">value_t::discarded</a>);</div>
|
||
<div class="line"><a name="l21738"></a><span class="lineno">21738</span>  }</div>
|
||
<div class="line"><a name="l21739"></a><span class="lineno">21739</span>  </div>
|
||
<div class="line"><a name="l21800"></a><span class="lineno">21800</span>  <a class="code" href="json_8hpp.html#a28d7e3b2d26bd5b8a3806da3db7dea03">JSON_HEDLEY_WARN_UNUSED_RESULT</a></div>
|
||
<div class="line"><a name="l21801"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a0524486cd0b36a47448df882ec0d5e7b">21801</a></span>  <span class="keyword">static</span> <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a> <a class="code" href="classnlohmann_1_1basic__json.html#a0524486cd0b36a47448df882ec0d5e7b">from_bson</a>(<a class="code" href="classnlohmann_1_1detail_1_1input__adapter.html">detail::input_adapter</a>&& i,</div>
|
||
<div class="line"><a name="l21802"></a><span class="lineno">21802</span>  <span class="keyword">const</span> <span class="keywordtype">bool</span> strict = <span class="keyword">true</span>,</div>
|
||
<div class="line"><a name="l21803"></a><span class="lineno">21803</span>  <span class="keyword">const</span> <span class="keywordtype">bool</span> allow_exceptions = <span class="keyword">true</span>)</div>
|
||
<div class="line"><a name="l21804"></a><span class="lineno">21804</span>  {</div>
|
||
<div class="line"><a name="l21805"></a><span class="lineno">21805</span>  <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a> result;</div>
|
||
<div class="line"><a name="l21806"></a><span class="lineno">21806</span>  <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html">detail::json_sax_dom_parser<basic_json></a> sdp(result, allow_exceptions);</div>
|
||
<div class="line"><a name="l21807"></a><span class="lineno">21807</span>  <span class="keyword">const</span> <span class="keywordtype">bool</span> res = <a class="code" href="classnlohmann_1_1detail_1_1binary__reader.html">binary_reader</a>(<a class="code" href="classnlohmann_1_1detail_1_1input__adapter.html">detail::input_adapter</a>(i)).<a class="code" href="classnlohmann_1_1detail_1_1binary__reader.html#ab94a54d6e595c2620b07589cf4116256">sax_parse</a>(input_format_t::bson, &sdp, strict);</div>
|
||
<div class="line"><a name="l21808"></a><span class="lineno">21808</span>  <span class="keywordflow">return</span> res ? result : <a class="code" href="classnlohmann_1_1basic__json.html#aed115142bd0c6c66c864700e0467df55">basic_json</a>(<a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a94708897ec9db8647dfe695714c98e46">value_t::discarded</a>);</div>
|
||
<div class="line"><a name="l21809"></a><span class="lineno">21809</span>  }</div>
|
||
<div class="line"><a name="l21810"></a><span class="lineno">21810</span>  </div>
|
||
<div class="line"><a name="l21814"></a><span class="lineno">21814</span>  <span class="keyword">template</span><<span class="keyword">typename</span> A1, <span class="keyword">typename</span> A2,</div>
|
||
<div class="line"><a name="l21815"></a><span class="lineno">21815</span>  <a class="code" href="namespacenlohmann_1_1detail.html#a02bcbc878bee413f25b985ada771aa9c">detail::enable_if_t<std::is_constructible<detail::input_adapter, A1, A2>::value</a>, <span class="keywordtype">int</span>> = 0></div>
|
||
<div class="line"><a name="l21816"></a><span class="lineno">21816</span>  <a class="code" href="json_8hpp.html#a28d7e3b2d26bd5b8a3806da3db7dea03">JSON_HEDLEY_WARN_UNUSED_RESULT</a></div>
|
||
<div class="line"><a name="l21817"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a000cef9f49c8f04319cf98150361d13d">21817</a></span>  <span class="keyword">static</span> <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a> <a class="code" href="classnlohmann_1_1basic__json.html#a000cef9f49c8f04319cf98150361d13d">from_bson</a>(A1 && a1, A2 && a2,</div>
|
||
<div class="line"><a name="l21818"></a><span class="lineno">21818</span>  <span class="keyword">const</span> <span class="keywordtype">bool</span> strict = <span class="keyword">true</span>,</div>
|
||
<div class="line"><a name="l21819"></a><span class="lineno">21819</span>  <span class="keyword">const</span> <span class="keywordtype">bool</span> allow_exceptions = <span class="keyword">true</span>)</div>
|
||
<div class="line"><a name="l21820"></a><span class="lineno">21820</span>  {</div>
|
||
<div class="line"><a name="l21821"></a><span class="lineno">21821</span>  <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a> result;</div>
|
||
<div class="line"><a name="l21822"></a><span class="lineno">21822</span>  <a class="code" href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html">detail::json_sax_dom_parser<basic_json></a> sdp(result, allow_exceptions);</div>
|
||
<div class="line"><a name="l21823"></a><span class="lineno">21823</span>  <span class="keyword">const</span> <span class="keywordtype">bool</span> res = <a class="code" href="classnlohmann_1_1detail_1_1binary__reader.html">binary_reader</a>(<a class="code" href="classnlohmann_1_1detail_1_1input__adapter.html">detail::input_adapter</a>(std::forward<A1>(a1), std::forward<A2>(a2))).<a class="code" href="classnlohmann_1_1detail_1_1binary__reader.html#ab94a54d6e595c2620b07589cf4116256">sax_parse</a>(input_format_t::bson, &sdp, strict);</div>
|
||
<div class="line"><a name="l21824"></a><span class="lineno">21824</span>  <span class="keywordflow">return</span> res ? result : <a class="code" href="classnlohmann_1_1basic__json.html#aed115142bd0c6c66c864700e0467df55">basic_json</a>(<a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a94708897ec9db8647dfe695714c98e46">value_t::discarded</a>);</div>
|
||
<div class="line"><a name="l21825"></a><span class="lineno">21825</span>  }</div>
|
||
<div class="line"><a name="l21826"></a><span class="lineno">21826</span>  </div>
|
||
<div class="line"><a name="l21827"></a><span class="lineno">21827</span>  </div>
|
||
<div class="line"><a name="l21828"></a><span class="lineno">21828</span>  </div>
|
||
<div class="line"><a name="l21830"></a><span class="lineno">21830</span>  </div>
|
||
<div class="line"><a name="l21832"></a><span class="lineno">21832</span>  <span class="comment">// JSON Pointer support //</span></div>
|
||
<div class="line"><a name="l21834"></a><span class="lineno">21834</span> <span class="comment"></span> </div>
|
||
<div class="line"><a name="l21837"></a><span class="lineno">21837</span>  </div>
|
||
<div class="line"><a name="l21871"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#ac6946dffeb3be5aa173645f0467a44b3">21871</a></span>  <a class="code" href="classnlohmann_1_1basic__json.html">reference</a> <a class="code" href="classnlohmann_1_1basic__json.html#ac6946dffeb3be5aa173645f0467a44b3">operator[]</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1json__pointer.html">json_pointer</a>& ptr)</div>
|
||
<div class="line"><a name="l21872"></a><span class="lineno">21872</span>  {</div>
|
||
<div class="line"><a name="l21873"></a><span class="lineno">21873</span>  <span class="keywordflow">return</span> ptr.get_unchecked(<span class="keyword">this</span>);</div>
|
||
<div class="line"><a name="l21874"></a><span class="lineno">21874</span>  }</div>
|
||
<div class="line"><a name="l21875"></a><span class="lineno">21875</span>  </div>
|
||
<div class="line"><a name="l21899"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a9d55e3e63b05e03a2b70cea3761f84cb">21899</a></span>  <a class="code" href="classnlohmann_1_1basic__json.html">const_reference</a> <a class="code" href="classnlohmann_1_1basic__json.html#a9d55e3e63b05e03a2b70cea3761f84cb">operator[]</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1json__pointer.html">json_pointer</a>& ptr)<span class="keyword"> const</span></div>
|
||
<div class="line"><a name="l21900"></a><span class="lineno">21900</span> <span class="keyword"> </span>{</div>
|
||
<div class="line"><a name="l21901"></a><span class="lineno">21901</span>  <span class="keywordflow">return</span> ptr.get_unchecked(<span class="keyword">this</span>);</div>
|
||
<div class="line"><a name="l21902"></a><span class="lineno">21902</span>  }</div>
|
||
<div class="line"><a name="l21903"></a><span class="lineno">21903</span>  </div>
|
||
<div class="line"><a name="l21942"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a8ab61397c10f18b305520da7073b2b45">21942</a></span>  <a class="code" href="classnlohmann_1_1basic__json.html">reference</a> <a class="code" href="classnlohmann_1_1basic__json.html#a8ab61397c10f18b305520da7073b2b45">at</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1json__pointer.html">json_pointer</a>& ptr)</div>
|
||
<div class="line"><a name="l21943"></a><span class="lineno">21943</span>  {</div>
|
||
<div class="line"><a name="l21944"></a><span class="lineno">21944</span>  <span class="keywordflow">return</span> ptr.get_checked(<span class="keyword">this</span>);</div>
|
||
<div class="line"><a name="l21945"></a><span class="lineno">21945</span>  }</div>
|
||
<div class="line"><a name="l21946"></a><span class="lineno">21946</span>  </div>
|
||
<div class="line"><a name="l21985"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a7479d686148c26e252781bb32aa5d5c9">21985</a></span>  <a class="code" href="classnlohmann_1_1basic__json.html">const_reference</a> <a class="code" href="classnlohmann_1_1basic__json.html#a7479d686148c26e252781bb32aa5d5c9">at</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1json__pointer.html">json_pointer</a>& ptr)<span class="keyword"> const</span></div>
|
||
<div class="line"><a name="l21986"></a><span class="lineno">21986</span> <span class="keyword"> </span>{</div>
|
||
<div class="line"><a name="l21987"></a><span class="lineno">21987</span>  <span class="keywordflow">return</span> ptr.get_checked(<span class="keyword">this</span>);</div>
|
||
<div class="line"><a name="l21988"></a><span class="lineno">21988</span>  }</div>
|
||
<div class="line"><a name="l21989"></a><span class="lineno">21989</span>  </div>
|
||
<div class="line"><a name="l22012"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#ab838f000d76662917ffd6ec529569e03">22012</a></span>  <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a> <a class="code" href="classnlohmann_1_1basic__json.html#ab838f000d76662917ffd6ec529569e03">flatten</a>()<span class="keyword"> const</span></div>
|
||
<div class="line"><a name="l22013"></a><span class="lineno">22013</span> <span class="keyword"> </span>{</div>
|
||
<div class="line"><a name="l22014"></a><span class="lineno">22014</span>  <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a> result(<a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>);</div>
|
||
<div class="line"><a name="l22015"></a><span class="lineno">22015</span>  json_pointer::flatten(<span class="stringliteral">""</span>, *<span class="keyword">this</span>, result);</div>
|
||
<div class="line"><a name="l22016"></a><span class="lineno">22016</span>  <span class="keywordflow">return</span> result;</div>
|
||
<div class="line"><a name="l22017"></a><span class="lineno">22017</span>  }</div>
|
||
<div class="line"><a name="l22018"></a><span class="lineno">22018</span>  </div>
|
||
<div class="line"><a name="l22049"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a74fa3ab2003f2f6f2b69deaafed9126d">22049</a></span>  <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a> <a class="code" href="classnlohmann_1_1basic__json.html#a74fa3ab2003f2f6f2b69deaafed9126d">unflatten</a>()<span class="keyword"> const</span></div>
|
||
<div class="line"><a name="l22050"></a><span class="lineno">22050</span> <span class="keyword"> </span>{</div>
|
||
<div class="line"><a name="l22051"></a><span class="lineno">22051</span>  <span class="keywordflow">return</span> json_pointer::unflatten(*<span class="keyword">this</span>);</div>
|
||
<div class="line"><a name="l22052"></a><span class="lineno">22052</span>  }</div>
|
||
<div class="line"><a name="l22053"></a><span class="lineno">22053</span>  </div>
|
||
<div class="line"><a name="l22055"></a><span class="lineno">22055</span>  </div>
|
||
<div class="line"><a name="l22057"></a><span class="lineno">22057</span>  <span class="comment">// JSON Patch functions //</span></div>
|
||
<div class="line"><a name="l22059"></a><span class="lineno">22059</span> <span class="comment"></span> </div>
|
||
<div class="line"><a name="l22062"></a><span class="lineno">22062</span>  </div>
|
||
<div class="line"><a name="l22110"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a81e0c41a4a9dff4df2f6973f7f8b2a83">22110</a></span>  <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a> <a class="code" href="classnlohmann_1_1basic__json.html#a81e0c41a4a9dff4df2f6973f7f8b2a83">patch</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a>& json_patch)<span class="keyword"> const</span></div>
|
||
<div class="line"><a name="l22111"></a><span class="lineno">22111</span> <span class="keyword"> </span>{</div>
|
||
<div class="line"><a name="l22112"></a><span class="lineno">22112</span>  <span class="comment">// make a working copy to apply the patch to</span></div>
|
||
<div class="line"><a name="l22113"></a><span class="lineno">22113</span>  <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a> result = *<span class="keyword">this</span>;</div>
|
||
<div class="line"><a name="l22114"></a><span class="lineno">22114</span>  </div>
|
||
<div class="line"><a name="l22115"></a><span class="lineno">22115</span>  <span class="comment">// the valid JSON Patch operations</span></div>
|
||
<div class="line"><a name="l22116"></a><span class="lineno">22116</span>  <span class="keyword">enum class</span> patch_operations {add, remove, replace, move, copy, test, invalid};</div>
|
||
<div class="line"><a name="l22117"></a><span class="lineno">22117</span>  </div>
|
||
<div class="line"><a name="l22118"></a><span class="lineno">22118</span>  <span class="keyword">const</span> <span class="keyword">auto</span> get_op = [](<span class="keyword">const</span> std::string & op)</div>
|
||
<div class="line"><a name="l22119"></a><span class="lineno">22119</span>  {</div>
|
||
<div class="line"><a name="l22120"></a><span class="lineno">22120</span>  <span class="keywordflow">if</span> (op == <span class="stringliteral">"add"</span>)</div>
|
||
<div class="line"><a name="l22121"></a><span class="lineno">22121</span>  {</div>
|
||
<div class="line"><a name="l22122"></a><span class="lineno">22122</span>  <span class="keywordflow">return</span> patch_operations::add;</div>
|
||
<div class="line"><a name="l22123"></a><span class="lineno">22123</span>  }</div>
|
||
<div class="line"><a name="l22124"></a><span class="lineno">22124</span>  <span class="keywordflow">if</span> (op == <span class="stringliteral">"remove"</span>)</div>
|
||
<div class="line"><a name="l22125"></a><span class="lineno">22125</span>  {</div>
|
||
<div class="line"><a name="l22126"></a><span class="lineno">22126</span>  <span class="keywordflow">return</span> patch_operations::remove;</div>
|
||
<div class="line"><a name="l22127"></a><span class="lineno">22127</span>  }</div>
|
||
<div class="line"><a name="l22128"></a><span class="lineno">22128</span>  <span class="keywordflow">if</span> (op == <span class="stringliteral">"replace"</span>)</div>
|
||
<div class="line"><a name="l22129"></a><span class="lineno">22129</span>  {</div>
|
||
<div class="line"><a name="l22130"></a><span class="lineno">22130</span>  <span class="keywordflow">return</span> patch_operations::replace;</div>
|
||
<div class="line"><a name="l22131"></a><span class="lineno">22131</span>  }</div>
|
||
<div class="line"><a name="l22132"></a><span class="lineno">22132</span>  <span class="keywordflow">if</span> (op == <span class="stringliteral">"move"</span>)</div>
|
||
<div class="line"><a name="l22133"></a><span class="lineno">22133</span>  {</div>
|
||
<div class="line"><a name="l22134"></a><span class="lineno">22134</span>  <span class="keywordflow">return</span> patch_operations::move;</div>
|
||
<div class="line"><a name="l22135"></a><span class="lineno">22135</span>  }</div>
|
||
<div class="line"><a name="l22136"></a><span class="lineno">22136</span>  <span class="keywordflow">if</span> (op == <span class="stringliteral">"copy"</span>)</div>
|
||
<div class="line"><a name="l22137"></a><span class="lineno">22137</span>  {</div>
|
||
<div class="line"><a name="l22138"></a><span class="lineno">22138</span>  <span class="keywordflow">return</span> patch_operations::copy;</div>
|
||
<div class="line"><a name="l22139"></a><span class="lineno">22139</span>  }</div>
|
||
<div class="line"><a name="l22140"></a><span class="lineno">22140</span>  <span class="keywordflow">if</span> (op == <span class="stringliteral">"test"</span>)</div>
|
||
<div class="line"><a name="l22141"></a><span class="lineno">22141</span>  {</div>
|
||
<div class="line"><a name="l22142"></a><span class="lineno">22142</span>  <span class="keywordflow">return</span> patch_operations::test;</div>
|
||
<div class="line"><a name="l22143"></a><span class="lineno">22143</span>  }</div>
|
||
<div class="line"><a name="l22144"></a><span class="lineno">22144</span>  </div>
|
||
<div class="line"><a name="l22145"></a><span class="lineno">22145</span>  <span class="keywordflow">return</span> patch_operations::invalid;</div>
|
||
<div class="line"><a name="l22146"></a><span class="lineno">22146</span>  };</div>
|
||
<div class="line"><a name="l22147"></a><span class="lineno">22147</span>  </div>
|
||
<div class="line"><a name="l22148"></a><span class="lineno">22148</span>  <span class="comment">// wrapper for "add" operation; add value at ptr</span></div>
|
||
<div class="line"><a name="l22149"></a><span class="lineno">22149</span>  <span class="keyword">const</span> <span class="keyword">auto</span> operation_add = [&result](<a class="code" href="classnlohmann_1_1json__pointer.html">json_pointer</a> & ptr, <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a> val)</div>
|
||
<div class="line"><a name="l22150"></a><span class="lineno">22150</span>  {</div>
|
||
<div class="line"><a name="l22151"></a><span class="lineno">22151</span>  <span class="comment">// adding to the root of the target document means replacing it</span></div>
|
||
<div class="line"><a name="l22152"></a><span class="lineno">22152</span>  <span class="keywordflow">if</span> (ptr.empty())</div>
|
||
<div class="line"><a name="l22153"></a><span class="lineno">22153</span>  {</div>
|
||
<div class="line"><a name="l22154"></a><span class="lineno">22154</span>  result = val;</div>
|
||
<div class="line"><a name="l22155"></a><span class="lineno">22155</span>  <span class="keywordflow">return</span>;</div>
|
||
<div class="line"><a name="l22156"></a><span class="lineno">22156</span>  }</div>
|
||
<div class="line"><a name="l22157"></a><span class="lineno">22157</span>  </div>
|
||
<div class="line"><a name="l22158"></a><span class="lineno">22158</span>  <span class="comment">// make sure the top element of the pointer exists</span></div>
|
||
<div class="line"><a name="l22159"></a><span class="lineno">22159</span>  <a class="code" href="classnlohmann_1_1json__pointer.html">json_pointer</a> top_pointer = ptr.top();</div>
|
||
<div class="line"><a name="l22160"></a><span class="lineno">22160</span>  <span class="keywordflow">if</span> (top_pointer != ptr)</div>
|
||
<div class="line"><a name="l22161"></a><span class="lineno">22161</span>  {</div>
|
||
<div class="line"><a name="l22162"></a><span class="lineno">22162</span>  result.at(top_pointer);</div>
|
||
<div class="line"><a name="l22163"></a><span class="lineno">22163</span>  }</div>
|
||
<div class="line"><a name="l22164"></a><span class="lineno">22164</span>  </div>
|
||
<div class="line"><a name="l22165"></a><span class="lineno">22165</span>  <span class="comment">// get reference to parent of JSON pointer ptr</span></div>
|
||
<div class="line"><a name="l22166"></a><span class="lineno">22166</span>  <span class="keyword">const</span> <span class="keyword">auto</span> last_path = ptr.back();</div>
|
||
<div class="line"><a name="l22167"></a><span class="lineno">22167</span>  ptr.pop_back();</div>
|
||
<div class="line"><a name="l22168"></a><span class="lineno">22168</span>  <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a>& parent = result[ptr];</div>
|
||
<div class="line"><a name="l22169"></a><span class="lineno">22169</span>  </div>
|
||
<div class="line"><a name="l22170"></a><span class="lineno">22170</span>  <span class="keywordflow">switch</span> (parent.m_type)</div>
|
||
<div class="line"><a name="l22171"></a><span class="lineno">22171</span>  {</div>
|
||
<div class="line"><a name="l22172"></a><span class="lineno">22172</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a37a6259cc0c1dae299a7866489dff0bd">value_t::null</a>:</div>
|
||
<div class="line"><a name="l22173"></a><span class="lineno">22173</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>:</div>
|
||
<div class="line"><a name="l22174"></a><span class="lineno">22174</span>  {</div>
|
||
<div class="line"><a name="l22175"></a><span class="lineno">22175</span>  <span class="comment">// use operator[] to add value</span></div>
|
||
<div class="line"><a name="l22176"></a><span class="lineno">22176</span>  parent[last_path] = val;</div>
|
||
<div class="line"><a name="l22177"></a><span class="lineno">22177</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l22178"></a><span class="lineno">22178</span>  }</div>
|
||
<div class="line"><a name="l22179"></a><span class="lineno">22179</span>  </div>
|
||
<div class="line"><a name="l22180"></a><span class="lineno">22180</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>:</div>
|
||
<div class="line"><a name="l22181"></a><span class="lineno">22181</span>  {</div>
|
||
<div class="line"><a name="l22182"></a><span class="lineno">22182</span>  <span class="keywordflow">if</span> (last_path == <span class="stringliteral">"-"</span>)</div>
|
||
<div class="line"><a name="l22183"></a><span class="lineno">22183</span>  {</div>
|
||
<div class="line"><a name="l22184"></a><span class="lineno">22184</span>  <span class="comment">// special case: append to back</span></div>
|
||
<div class="line"><a name="l22185"></a><span class="lineno">22185</span>  parent.push_back(val);</div>
|
||
<div class="line"><a name="l22186"></a><span class="lineno">22186</span>  }</div>
|
||
<div class="line"><a name="l22187"></a><span class="lineno">22187</span>  <span class="keywordflow">else</span></div>
|
||
<div class="line"><a name="l22188"></a><span class="lineno">22188</span>  {</div>
|
||
<div class="line"><a name="l22189"></a><span class="lineno">22189</span>  <span class="keyword">const</span> <span class="keyword">auto</span> idx = json_pointer::array_index(last_path);</div>
|
||
<div class="line"><a name="l22190"></a><span class="lineno">22190</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(<span class="keyword">static_cast<</span><a class="code" href="classnlohmann_1_1basic__json.html#a39f2cd0b58106097e0e67bf185cc519b">size_type</a><span class="keyword">></span>(idx) > parent.size()))</div>
|
||
<div class="line"><a name="l22191"></a><span class="lineno">22191</span>  {</div>
|
||
<div class="line"><a name="l22192"></a><span class="lineno">22192</span>  <span class="comment">// avoid undefined behavior</span></div>
|
||
<div class="line"><a name="l22193"></a><span class="lineno">22193</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1out__of__range.html#a3f6d82a6f967c4728a1ec735a7867073">out_of_range::create</a>(401, <span class="stringliteral">"array index "</span> + <a class="code" href="namespacenlohmann.html#a6ce645a0b8717757e096a5b5773b7a16">std::to_string</a>(idx) + <span class="stringliteral">" is out of range"</span>));</div>
|
||
<div class="line"><a name="l22194"></a><span class="lineno">22194</span>  }</div>
|
||
<div class="line"><a name="l22195"></a><span class="lineno">22195</span>  </div>
|
||
<div class="line"><a name="l22196"></a><span class="lineno">22196</span>  <span class="comment">// default case: insert add offset</span></div>
|
||
<div class="line"><a name="l22197"></a><span class="lineno">22197</span>  parent.insert(parent.begin() + <span class="keyword">static_cast<</span><a class="code" href="classnlohmann_1_1basic__json.html#afe7c1303357e19cea9527af4e9a31d8f">difference_type</a><span class="keyword">></span>(idx), val);</div>
|
||
<div class="line"><a name="l22198"></a><span class="lineno">22198</span>  }</div>
|
||
<div class="line"><a name="l22199"></a><span class="lineno">22199</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l22200"></a><span class="lineno">22200</span>  }</div>
|
||
<div class="line"><a name="l22201"></a><span class="lineno">22201</span>  </div>
|
||
<div class="line"><a name="l22202"></a><span class="lineno">22202</span>  <span class="comment">// if there exists a parent it cannot be primitive</span></div>
|
||
<div class="line"><a name="l22203"></a><span class="lineno">22203</span>  <span class="keywordflow">default</span>: <span class="comment">// LCOV_EXCL_LINE</span></div>
|
||
<div class="line"><a name="l22204"></a><span class="lineno">22204</span>  assert(<span class="keyword">false</span>); <span class="comment">// LCOV_EXCL_LINE</span></div>
|
||
<div class="line"><a name="l22205"></a><span class="lineno">22205</span>  }</div>
|
||
<div class="line"><a name="l22206"></a><span class="lineno">22206</span>  };</div>
|
||
<div class="line"><a name="l22207"></a><span class="lineno">22207</span>  </div>
|
||
<div class="line"><a name="l22208"></a><span class="lineno">22208</span>  <span class="comment">// wrapper for "remove" operation; remove value at ptr</span></div>
|
||
<div class="line"><a name="l22209"></a><span class="lineno">22209</span>  <span class="keyword">const</span> <span class="keyword">auto</span> operation_remove = [&result](<a class="code" href="classnlohmann_1_1json__pointer.html">json_pointer</a> & ptr)</div>
|
||
<div class="line"><a name="l22210"></a><span class="lineno">22210</span>  {</div>
|
||
<div class="line"><a name="l22211"></a><span class="lineno">22211</span>  <span class="comment">// get reference to parent of JSON pointer ptr</span></div>
|
||
<div class="line"><a name="l22212"></a><span class="lineno">22212</span>  <span class="keyword">const</span> <span class="keyword">auto</span> last_path = ptr.back();</div>
|
||
<div class="line"><a name="l22213"></a><span class="lineno">22213</span>  ptr.pop_back();</div>
|
||
<div class="line"><a name="l22214"></a><span class="lineno">22214</span>  <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a>& parent = result.at(ptr);</div>
|
||
<div class="line"><a name="l22215"></a><span class="lineno">22215</span>  </div>
|
||
<div class="line"><a name="l22216"></a><span class="lineno">22216</span>  <span class="comment">// remove child</span></div>
|
||
<div class="line"><a name="l22217"></a><span class="lineno">22217</span>  <span class="keywordflow">if</span> (parent.is_object())</div>
|
||
<div class="line"><a name="l22218"></a><span class="lineno">22218</span>  {</div>
|
||
<div class="line"><a name="l22219"></a><span class="lineno">22219</span>  <span class="comment">// perform range check</span></div>
|
||
<div class="line"><a name="l22220"></a><span class="lineno">22220</span>  <span class="keyword">auto</span> it = parent.find(last_path);</div>
|
||
<div class="line"><a name="l22221"></a><span class="lineno">22221</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a355f2770653ff7bdd5c74b204b5a3ad0">JSON_HEDLEY_LIKELY</a>(it != parent.end()))</div>
|
||
<div class="line"><a name="l22222"></a><span class="lineno">22222</span>  {</div>
|
||
<div class="line"><a name="l22223"></a><span class="lineno">22223</span>  parent.erase(it);</div>
|
||
<div class="line"><a name="l22224"></a><span class="lineno">22224</span>  }</div>
|
||
<div class="line"><a name="l22225"></a><span class="lineno">22225</span>  <span class="keywordflow">else</span></div>
|
||
<div class="line"><a name="l22226"></a><span class="lineno">22226</span>  {</div>
|
||
<div class="line"><a name="l22227"></a><span class="lineno">22227</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1out__of__range.html#a3f6d82a6f967c4728a1ec735a7867073">out_of_range::create</a>(403, <span class="stringliteral">"key '"</span> + last_path + <span class="stringliteral">"' not found"</span>));</div>
|
||
<div class="line"><a name="l22228"></a><span class="lineno">22228</span>  }</div>
|
||
<div class="line"><a name="l22229"></a><span class="lineno">22229</span>  }</div>
|
||
<div class="line"><a name="l22230"></a><span class="lineno">22230</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (parent.is_array())</div>
|
||
<div class="line"><a name="l22231"></a><span class="lineno">22231</span>  {</div>
|
||
<div class="line"><a name="l22232"></a><span class="lineno">22232</span>  <span class="comment">// note erase performs range check</span></div>
|
||
<div class="line"><a name="l22233"></a><span class="lineno">22233</span>  parent.erase(<span class="keyword">static_cast<</span><a class="code" href="classnlohmann_1_1basic__json.html#a39f2cd0b58106097e0e67bf185cc519b">size_type</a><span class="keyword">></span>(json_pointer::array_index(last_path)));</div>
|
||
<div class="line"><a name="l22234"></a><span class="lineno">22234</span>  }</div>
|
||
<div class="line"><a name="l22235"></a><span class="lineno">22235</span>  };</div>
|
||
<div class="line"><a name="l22236"></a><span class="lineno">22236</span>  </div>
|
||
<div class="line"><a name="l22237"></a><span class="lineno">22237</span>  <span class="comment">// type check: top level value must be an array</span></div>
|
||
<div class="line"><a name="l22238"></a><span class="lineno">22238</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not json_patch.is_array()))</div>
|
||
<div class="line"><a name="l22239"></a><span class="lineno">22239</span>  {</div>
|
||
<div class="line"><a name="l22240"></a><span class="lineno">22240</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1parse__error.html#a137ea4d27de45d8a844fd13451d40f3d">parse_error::create</a>(104, 0, <span class="stringliteral">"JSON patch must be an array of objects"</span>));</div>
|
||
<div class="line"><a name="l22241"></a><span class="lineno">22241</span>  }</div>
|
||
<div class="line"><a name="l22242"></a><span class="lineno">22242</span>  </div>
|
||
<div class="line"><a name="l22243"></a><span class="lineno">22243</span>  <span class="comment">// iterate and apply the operations</span></div>
|
||
<div class="line"><a name="l22244"></a><span class="lineno">22244</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span>& val : json_patch)</div>
|
||
<div class="line"><a name="l22245"></a><span class="lineno">22245</span>  {</div>
|
||
<div class="line"><a name="l22246"></a><span class="lineno">22246</span>  <span class="comment">// wrapper to get a value for an operation</span></div>
|
||
<div class="line"><a name="l22247"></a><span class="lineno">22247</span>  <span class="keyword">const</span> <span class="keyword">auto</span> get_value = [&val](<span class="keyword">const</span> std::string & op,</div>
|
||
<div class="line"><a name="l22248"></a><span class="lineno">22248</span>  <span class="keyword">const</span> std::string & member,</div>
|
||
<div class="line"><a name="l22249"></a><span class="lineno">22249</span>  <span class="keywordtype">bool</span> string_type) -> <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a> &</div>
|
||
<div class="line"><a name="l22250"></a><span class="lineno">22250</span>  {</div>
|
||
<div class="line"><a name="l22251"></a><span class="lineno">22251</span>  <span class="comment">// find value</span></div>
|
||
<div class="line"><a name="l22252"></a><span class="lineno">22252</span>  <span class="keyword">auto</span> it = val.m_value.object->find(member);</div>
|
||
<div class="line"><a name="l22253"></a><span class="lineno">22253</span>  </div>
|
||
<div class="line"><a name="l22254"></a><span class="lineno">22254</span>  <span class="comment">// context-sensitive error message</span></div>
|
||
<div class="line"><a name="l22255"></a><span class="lineno">22255</span>  <span class="keyword">const</span> <span class="keyword">auto</span> error_msg = (op == <span class="stringliteral">"op"</span>) ? <span class="stringliteral">"operation"</span> : <span class="stringliteral">"operation '"</span> + op + <span class="stringliteral">"'"</span>;</div>
|
||
<div class="line"><a name="l22256"></a><span class="lineno">22256</span>  </div>
|
||
<div class="line"><a name="l22257"></a><span class="lineno">22257</span>  <span class="comment">// check if desired value is present</span></div>
|
||
<div class="line"><a name="l22258"></a><span class="lineno">22258</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(it == val.m_value.object->end()))</div>
|
||
<div class="line"><a name="l22259"></a><span class="lineno">22259</span>  {</div>
|
||
<div class="line"><a name="l22260"></a><span class="lineno">22260</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1parse__error.html#a137ea4d27de45d8a844fd13451d40f3d">parse_error::create</a>(105, 0, error_msg + <span class="stringliteral">" must have member '"</span> + member + <span class="stringliteral">"'"</span>));</div>
|
||
<div class="line"><a name="l22261"></a><span class="lineno">22261</span>  }</div>
|
||
<div class="line"><a name="l22262"></a><span class="lineno">22262</span>  </div>
|
||
<div class="line"><a name="l22263"></a><span class="lineno">22263</span>  <span class="comment">// check if result is of type string</span></div>
|
||
<div class="line"><a name="l22264"></a><span class="lineno">22264</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(string_type and not it->second.is_string()))</div>
|
||
<div class="line"><a name="l22265"></a><span class="lineno">22265</span>  {</div>
|
||
<div class="line"><a name="l22266"></a><span class="lineno">22266</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1parse__error.html#a137ea4d27de45d8a844fd13451d40f3d">parse_error::create</a>(105, 0, error_msg + <span class="stringliteral">" must have string member '"</span> + member + <span class="stringliteral">"'"</span>));</div>
|
||
<div class="line"><a name="l22267"></a><span class="lineno">22267</span>  }</div>
|
||
<div class="line"><a name="l22268"></a><span class="lineno">22268</span>  </div>
|
||
<div class="line"><a name="l22269"></a><span class="lineno">22269</span>  <span class="comment">// no error: return value</span></div>
|
||
<div class="line"><a name="l22270"></a><span class="lineno">22270</span>  <span class="keywordflow">return</span> it->second;</div>
|
||
<div class="line"><a name="l22271"></a><span class="lineno">22271</span>  };</div>
|
||
<div class="line"><a name="l22272"></a><span class="lineno">22272</span>  </div>
|
||
<div class="line"><a name="l22273"></a><span class="lineno">22273</span>  <span class="comment">// type check: every element of the array must be an object</span></div>
|
||
<div class="line"><a name="l22274"></a><span class="lineno">22274</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not val.is_object()))</div>
|
||
<div class="line"><a name="l22275"></a><span class="lineno">22275</span>  {</div>
|
||
<div class="line"><a name="l22276"></a><span class="lineno">22276</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1parse__error.html#a137ea4d27de45d8a844fd13451d40f3d">parse_error::create</a>(104, 0, <span class="stringliteral">"JSON patch must be an array of objects"</span>));</div>
|
||
<div class="line"><a name="l22277"></a><span class="lineno">22277</span>  }</div>
|
||
<div class="line"><a name="l22278"></a><span class="lineno">22278</span>  </div>
|
||
<div class="line"><a name="l22279"></a><span class="lineno">22279</span>  <span class="comment">// collect mandatory members</span></div>
|
||
<div class="line"><a name="l22280"></a><span class="lineno">22280</span>  <span class="keyword">const</span> std::string op = get_value(<span class="stringliteral">"op"</span>, <span class="stringliteral">"op"</span>, <span class="keyword">true</span>);</div>
|
||
<div class="line"><a name="l22281"></a><span class="lineno">22281</span>  <span class="keyword">const</span> std::string path = get_value(op, <span class="stringliteral">"path"</span>, <span class="keyword">true</span>);</div>
|
||
<div class="line"><a name="l22282"></a><span class="lineno">22282</span>  <a class="code" href="classnlohmann_1_1json__pointer.html">json_pointer</a> ptr(path);</div>
|
||
<div class="line"><a name="l22283"></a><span class="lineno">22283</span>  </div>
|
||
<div class="line"><a name="l22284"></a><span class="lineno">22284</span>  <span class="keywordflow">switch</span> (get_op(op))</div>
|
||
<div class="line"><a name="l22285"></a><span class="lineno">22285</span>  {</div>
|
||
<div class="line"><a name="l22286"></a><span class="lineno">22286</span>  <span class="keywordflow">case</span> patch_operations::add:</div>
|
||
<div class="line"><a name="l22287"></a><span class="lineno">22287</span>  {</div>
|
||
<div class="line"><a name="l22288"></a><span class="lineno">22288</span>  operation_add(ptr, get_value(<span class="stringliteral">"add"</span>, <span class="stringliteral">"value"</span>, <span class="keyword">false</span>));</div>
|
||
<div class="line"><a name="l22289"></a><span class="lineno">22289</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l22290"></a><span class="lineno">22290</span>  }</div>
|
||
<div class="line"><a name="l22291"></a><span class="lineno">22291</span>  </div>
|
||
<div class="line"><a name="l22292"></a><span class="lineno">22292</span>  <span class="keywordflow">case</span> patch_operations::remove:</div>
|
||
<div class="line"><a name="l22293"></a><span class="lineno">22293</span>  {</div>
|
||
<div class="line"><a name="l22294"></a><span class="lineno">22294</span>  operation_remove(ptr);</div>
|
||
<div class="line"><a name="l22295"></a><span class="lineno">22295</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l22296"></a><span class="lineno">22296</span>  }</div>
|
||
<div class="line"><a name="l22297"></a><span class="lineno">22297</span>  </div>
|
||
<div class="line"><a name="l22298"></a><span class="lineno">22298</span>  <span class="keywordflow">case</span> patch_operations::replace:</div>
|
||
<div class="line"><a name="l22299"></a><span class="lineno">22299</span>  {</div>
|
||
<div class="line"><a name="l22300"></a><span class="lineno">22300</span>  <span class="comment">// the "path" location must exist - use at()</span></div>
|
||
<div class="line"><a name="l22301"></a><span class="lineno">22301</span>  result.at(ptr) = get_value(<span class="stringliteral">"replace"</span>, <span class="stringliteral">"value"</span>, <span class="keyword">false</span>);</div>
|
||
<div class="line"><a name="l22302"></a><span class="lineno">22302</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l22303"></a><span class="lineno">22303</span>  }</div>
|
||
<div class="line"><a name="l22304"></a><span class="lineno">22304</span>  </div>
|
||
<div class="line"><a name="l22305"></a><span class="lineno">22305</span>  <span class="keywordflow">case</span> patch_operations::move:</div>
|
||
<div class="line"><a name="l22306"></a><span class="lineno">22306</span>  {</div>
|
||
<div class="line"><a name="l22307"></a><span class="lineno">22307</span>  <span class="keyword">const</span> std::string from_path = get_value(<span class="stringliteral">"move"</span>, <span class="stringliteral">"from"</span>, <span class="keyword">true</span>);</div>
|
||
<div class="line"><a name="l22308"></a><span class="lineno">22308</span>  <a class="code" href="classnlohmann_1_1json__pointer.html">json_pointer</a> from_ptr(from_path);</div>
|
||
<div class="line"><a name="l22309"></a><span class="lineno">22309</span>  </div>
|
||
<div class="line"><a name="l22310"></a><span class="lineno">22310</span>  <span class="comment">// the "from" location must exist - use at()</span></div>
|
||
<div class="line"><a name="l22311"></a><span class="lineno">22311</span>  <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a> v = result.at(from_ptr);</div>
|
||
<div class="line"><a name="l22312"></a><span class="lineno">22312</span>  </div>
|
||
<div class="line"><a name="l22313"></a><span class="lineno">22313</span>  <span class="comment">// The move operation is functionally identical to a</span></div>
|
||
<div class="line"><a name="l22314"></a><span class="lineno">22314</span>  <span class="comment">// "remove" operation on the "from" location, followed</span></div>
|
||
<div class="line"><a name="l22315"></a><span class="lineno">22315</span>  <span class="comment">// immediately by an "add" operation at the target</span></div>
|
||
<div class="line"><a name="l22316"></a><span class="lineno">22316</span>  <span class="comment">// location with the value that was just removed.</span></div>
|
||
<div class="line"><a name="l22317"></a><span class="lineno">22317</span>  operation_remove(from_ptr);</div>
|
||
<div class="line"><a name="l22318"></a><span class="lineno">22318</span>  operation_add(ptr, v);</div>
|
||
<div class="line"><a name="l22319"></a><span class="lineno">22319</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l22320"></a><span class="lineno">22320</span>  }</div>
|
||
<div class="line"><a name="l22321"></a><span class="lineno">22321</span>  </div>
|
||
<div class="line"><a name="l22322"></a><span class="lineno">22322</span>  <span class="keywordflow">case</span> patch_operations::copy:</div>
|
||
<div class="line"><a name="l22323"></a><span class="lineno">22323</span>  {</div>
|
||
<div class="line"><a name="l22324"></a><span class="lineno">22324</span>  <span class="keyword">const</span> std::string from_path = get_value(<span class="stringliteral">"copy"</span>, <span class="stringliteral">"from"</span>, <span class="keyword">true</span>);</div>
|
||
<div class="line"><a name="l22325"></a><span class="lineno">22325</span>  <span class="keyword">const</span> <a class="code" href="classnlohmann_1_1json__pointer.html">json_pointer</a> from_ptr(from_path);</div>
|
||
<div class="line"><a name="l22326"></a><span class="lineno">22326</span>  </div>
|
||
<div class="line"><a name="l22327"></a><span class="lineno">22327</span>  <span class="comment">// the "from" location must exist - use at()</span></div>
|
||
<div class="line"><a name="l22328"></a><span class="lineno">22328</span>  <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a> v = result.at(from_ptr);</div>
|
||
<div class="line"><a name="l22329"></a><span class="lineno">22329</span>  </div>
|
||
<div class="line"><a name="l22330"></a><span class="lineno">22330</span>  <span class="comment">// The copy is functionally identical to an "add"</span></div>
|
||
<div class="line"><a name="l22331"></a><span class="lineno">22331</span>  <span class="comment">// operation at the target location using the value</span></div>
|
||
<div class="line"><a name="l22332"></a><span class="lineno">22332</span>  <span class="comment">// specified in the "from" member.</span></div>
|
||
<div class="line"><a name="l22333"></a><span class="lineno">22333</span>  operation_add(ptr, v);</div>
|
||
<div class="line"><a name="l22334"></a><span class="lineno">22334</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l22335"></a><span class="lineno">22335</span>  }</div>
|
||
<div class="line"><a name="l22336"></a><span class="lineno">22336</span>  </div>
|
||
<div class="line"><a name="l22337"></a><span class="lineno">22337</span>  <span class="keywordflow">case</span> patch_operations::test:</div>
|
||
<div class="line"><a name="l22338"></a><span class="lineno">22338</span>  {</div>
|
||
<div class="line"><a name="l22339"></a><span class="lineno">22339</span>  <span class="keywordtype">bool</span> success = <span class="keyword">false</span>;</div>
|
||
<div class="line"><a name="l22340"></a><span class="lineno">22340</span>  <a class="code" href="json_8hpp.html#a985d3b82445302c57257f6432f261fe9">JSON_TRY</a></div>
|
||
<div class="line"><a name="l22341"></a><span class="lineno">22341</span>  {</div>
|
||
<div class="line"><a name="l22342"></a><span class="lineno">22342</span>  <span class="comment">// check if "value" matches the one at "path"</span></div>
|
||
<div class="line"><a name="l22343"></a><span class="lineno">22343</span>  <span class="comment">// the "path" location must exist - use at()</span></div>
|
||
<div class="line"><a name="l22344"></a><span class="lineno">22344</span>  success = (result.at(ptr) == get_value(<span class="stringliteral">"test"</span>, <span class="stringliteral">"value"</span>, <span class="keyword">false</span>));</div>
|
||
<div class="line"><a name="l22345"></a><span class="lineno">22345</span>  }</div>
|
||
<div class="line"><a name="l22346"></a><span class="lineno">22346</span>  <a class="code" href="json_8hpp.html#a5478b7564e65634cc69432ed3cb6490e">JSON_INTERNAL_CATCH</a> (<a class="code" href="classnlohmann_1_1detail_1_1out__of__range.html">out_of_range</a>&)</div>
|
||
<div class="line"><a name="l22347"></a><span class="lineno">22347</span>  {</div>
|
||
<div class="line"><a name="l22348"></a><span class="lineno">22348</span>  <span class="comment">// ignore out of range errors: success remains false</span></div>
|
||
<div class="line"><a name="l22349"></a><span class="lineno">22349</span>  }</div>
|
||
<div class="line"><a name="l22350"></a><span class="lineno">22350</span>  </div>
|
||
<div class="line"><a name="l22351"></a><span class="lineno">22351</span>  <span class="comment">// throw an exception if test fails</span></div>
|
||
<div class="line"><a name="l22352"></a><span class="lineno">22352</span>  <span class="keywordflow">if</span> (<a class="code" href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a>(not success))</div>
|
||
<div class="line"><a name="l22353"></a><span class="lineno">22353</span>  {</div>
|
||
<div class="line"><a name="l22354"></a><span class="lineno">22354</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1other__error.html#a87e8ab894e8c85c0d97a0919782d3683">other_error::create</a>(501, <span class="stringliteral">"unsuccessful: "</span> + val.dump()));</div>
|
||
<div class="line"><a name="l22355"></a><span class="lineno">22355</span>  }</div>
|
||
<div class="line"><a name="l22356"></a><span class="lineno">22356</span>  </div>
|
||
<div class="line"><a name="l22357"></a><span class="lineno">22357</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l22358"></a><span class="lineno">22358</span>  }</div>
|
||
<div class="line"><a name="l22359"></a><span class="lineno">22359</span>  </div>
|
||
<div class="line"><a name="l22360"></a><span class="lineno">22360</span>  <span class="keywordflow">default</span>:</div>
|
||
<div class="line"><a name="l22361"></a><span class="lineno">22361</span>  {</div>
|
||
<div class="line"><a name="l22362"></a><span class="lineno">22362</span>  <span class="comment">// op must be "add", "remove", "replace", "move", "copy", or</span></div>
|
||
<div class="line"><a name="l22363"></a><span class="lineno">22363</span>  <span class="comment">// "test"</span></div>
|
||
<div class="line"><a name="l22364"></a><span class="lineno">22364</span>  <a class="code" href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a>(<a class="code" href="classnlohmann_1_1detail_1_1parse__error.html#a137ea4d27de45d8a844fd13451d40f3d">parse_error::create</a>(105, 0, <span class="stringliteral">"operation value '"</span> + op + <span class="stringliteral">"' is invalid"</span>));</div>
|
||
<div class="line"><a name="l22365"></a><span class="lineno">22365</span>  }</div>
|
||
<div class="line"><a name="l22366"></a><span class="lineno">22366</span>  }</div>
|
||
<div class="line"><a name="l22367"></a><span class="lineno">22367</span>  }</div>
|
||
<div class="line"><a name="l22368"></a><span class="lineno">22368</span>  </div>
|
||
<div class="line"><a name="l22369"></a><span class="lineno">22369</span>  <span class="keywordflow">return</span> result;</div>
|
||
<div class="line"><a name="l22370"></a><span class="lineno">22370</span>  }</div>
|
||
<div class="line"><a name="l22371"></a><span class="lineno">22371</span>  </div>
|
||
<div class="line"><a name="l22405"></a><span class="lineno">22405</span>  <a class="code" href="json_8hpp.html#a28d7e3b2d26bd5b8a3806da3db7dea03">JSON_HEDLEY_WARN_UNUSED_RESULT</a></div>
|
||
<div class="line"><a name="l22406"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a9c4f3554773649beef69461a10a3de87">22406</a></span>  <span class="keyword">static</span> <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a> <a class="code" href="classnlohmann_1_1basic__json.html#a9c4f3554773649beef69461a10a3de87">diff</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a>& source, <span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a>& target,</div>
|
||
<div class="line"><a name="l22407"></a><span class="lineno">22407</span>  <span class="keyword">const</span> std::string& path = <span class="stringliteral">""</span>)</div>
|
||
<div class="line"><a name="l22408"></a><span class="lineno">22408</span>  {</div>
|
||
<div class="line"><a name="l22409"></a><span class="lineno">22409</span>  <span class="comment">// the patch</span></div>
|
||
<div class="line"><a name="l22410"></a><span class="lineno">22410</span>  <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a> result(<a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>);</div>
|
||
<div class="line"><a name="l22411"></a><span class="lineno">22411</span>  </div>
|
||
<div class="line"><a name="l22412"></a><span class="lineno">22412</span>  <span class="comment">// if the values are the same, return empty patch</span></div>
|
||
<div class="line"><a name="l22413"></a><span class="lineno">22413</span>  <span class="keywordflow">if</span> (source == target)</div>
|
||
<div class="line"><a name="l22414"></a><span class="lineno">22414</span>  {</div>
|
||
<div class="line"><a name="l22415"></a><span class="lineno">22415</span>  <span class="keywordflow">return</span> result;</div>
|
||
<div class="line"><a name="l22416"></a><span class="lineno">22416</span>  }</div>
|
||
<div class="line"><a name="l22417"></a><span class="lineno">22417</span>  </div>
|
||
<div class="line"><a name="l22418"></a><span class="lineno">22418</span>  <span class="keywordflow">if</span> (source.type() != target.type())</div>
|
||
<div class="line"><a name="l22419"></a><span class="lineno">22419</span>  {</div>
|
||
<div class="line"><a name="l22420"></a><span class="lineno">22420</span>  <span class="comment">// different types: replace value</span></div>
|
||
<div class="line"><a name="l22421"></a><span class="lineno">22421</span>  result.push_back(</div>
|
||
<div class="line"><a name="l22422"></a><span class="lineno">22422</span>  {</div>
|
||
<div class="line"><a name="l22423"></a><span class="lineno">22423</span>  {<span class="stringliteral">"op"</span>, <span class="stringliteral">"replace"</span>}, {<span class="stringliteral">"path"</span>, path}, {<span class="stringliteral">"value"</span>, target}</div>
|
||
<div class="line"><a name="l22424"></a><span class="lineno">22424</span>  });</div>
|
||
<div class="line"><a name="l22425"></a><span class="lineno">22425</span>  <span class="keywordflow">return</span> result;</div>
|
||
<div class="line"><a name="l22426"></a><span class="lineno">22426</span>  }</div>
|
||
<div class="line"><a name="l22427"></a><span class="lineno">22427</span>  </div>
|
||
<div class="line"><a name="l22428"></a><span class="lineno">22428</span>  <span class="keywordflow">switch</span> (source.type())</div>
|
||
<div class="line"><a name="l22429"></a><span class="lineno">22429</span>  {</div>
|
||
<div class="line"><a name="l22430"></a><span class="lineno">22430</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">value_t::array</a>:</div>
|
||
<div class="line"><a name="l22431"></a><span class="lineno">22431</span>  {</div>
|
||
<div class="line"><a name="l22432"></a><span class="lineno">22432</span>  <span class="comment">// first pass: traverse common elements</span></div>
|
||
<div class="line"><a name="l22433"></a><span class="lineno">22433</span>  std::size_t i = 0;</div>
|
||
<div class="line"><a name="l22434"></a><span class="lineno">22434</span>  <span class="keywordflow">while</span> (i < source.size() and i < target.size())</div>
|
||
<div class="line"><a name="l22435"></a><span class="lineno">22435</span>  {</div>
|
||
<div class="line"><a name="l22436"></a><span class="lineno">22436</span>  <span class="comment">// recursive call to compare array values at index i</span></div>
|
||
<div class="line"><a name="l22437"></a><span class="lineno">22437</span>  <span class="keyword">auto</span> temp_diff = <a class="code" href="classnlohmann_1_1basic__json.html#a9c4f3554773649beef69461a10a3de87">diff</a>(source[i], target[i], path + <span class="stringliteral">"/"</span> + <a class="code" href="namespacenlohmann.html#a6ce645a0b8717757e096a5b5773b7a16">std::to_string</a>(i));</div>
|
||
<div class="line"><a name="l22438"></a><span class="lineno">22438</span>  result.insert(result.end(), temp_diff.begin(), temp_diff.end());</div>
|
||
<div class="line"><a name="l22439"></a><span class="lineno">22439</span>  ++i;</div>
|
||
<div class="line"><a name="l22440"></a><span class="lineno">22440</span>  }</div>
|
||
<div class="line"><a name="l22441"></a><span class="lineno">22441</span>  </div>
|
||
<div class="line"><a name="l22442"></a><span class="lineno">22442</span>  <span class="comment">// i now reached the end of at least one array</span></div>
|
||
<div class="line"><a name="l22443"></a><span class="lineno">22443</span>  <span class="comment">// in a second pass, traverse the remaining elements</span></div>
|
||
<div class="line"><a name="l22444"></a><span class="lineno">22444</span>  </div>
|
||
<div class="line"><a name="l22445"></a><span class="lineno">22445</span>  <span class="comment">// remove my remaining elements</span></div>
|
||
<div class="line"><a name="l22446"></a><span class="lineno">22446</span>  <span class="keyword">const</span> <span class="keyword">auto</span> end_index = <span class="keyword">static_cast<</span><a class="code" href="classnlohmann_1_1basic__json.html#afe7c1303357e19cea9527af4e9a31d8f">difference_type</a><span class="keyword">></span>(result.size());</div>
|
||
<div class="line"><a name="l22447"></a><span class="lineno">22447</span>  <span class="keywordflow">while</span> (i < source.size())</div>
|
||
<div class="line"><a name="l22448"></a><span class="lineno">22448</span>  {</div>
|
||
<div class="line"><a name="l22449"></a><span class="lineno">22449</span>  <span class="comment">// add operations in reverse order to avoid invalid</span></div>
|
||
<div class="line"><a name="l22450"></a><span class="lineno">22450</span>  <span class="comment">// indices</span></div>
|
||
<div class="line"><a name="l22451"></a><span class="lineno">22451</span>  result.insert(result.begin() + end_index, <a class="code" href="classnlohmann_1_1basic__json.html#a31f84ee15c4690ff705bed74736d04c6">object</a>(</div>
|
||
<div class="line"><a name="l22452"></a><span class="lineno">22452</span>  {</div>
|
||
<div class="line"><a name="l22453"></a><span class="lineno">22453</span>  {<span class="stringliteral">"op"</span>, <span class="stringliteral">"remove"</span>},</div>
|
||
<div class="line"><a name="l22454"></a><span class="lineno">22454</span>  {<span class="stringliteral">"path"</span>, path + <span class="stringliteral">"/"</span> + <a class="code" href="namespacenlohmann.html#a6ce645a0b8717757e096a5b5773b7a16">std::to_string</a>(i)}</div>
|
||
<div class="line"><a name="l22455"></a><span class="lineno">22455</span>  }));</div>
|
||
<div class="line"><a name="l22456"></a><span class="lineno">22456</span>  ++i;</div>
|
||
<div class="line"><a name="l22457"></a><span class="lineno">22457</span>  }</div>
|
||
<div class="line"><a name="l22458"></a><span class="lineno">22458</span>  </div>
|
||
<div class="line"><a name="l22459"></a><span class="lineno">22459</span>  <span class="comment">// add other remaining elements</span></div>
|
||
<div class="line"><a name="l22460"></a><span class="lineno">22460</span>  <span class="keywordflow">while</span> (i < target.size())</div>
|
||
<div class="line"><a name="l22461"></a><span class="lineno">22461</span>  {</div>
|
||
<div class="line"><a name="l22462"></a><span class="lineno">22462</span>  result.push_back(</div>
|
||
<div class="line"><a name="l22463"></a><span class="lineno">22463</span>  {</div>
|
||
<div class="line"><a name="l22464"></a><span class="lineno">22464</span>  {<span class="stringliteral">"op"</span>, <span class="stringliteral">"add"</span>},</div>
|
||
<div class="line"><a name="l22465"></a><span class="lineno">22465</span>  {<span class="stringliteral">"path"</span>, path + <span class="stringliteral">"/"</span> + <a class="code" href="namespacenlohmann.html#a6ce645a0b8717757e096a5b5773b7a16">std::to_string</a>(i)},</div>
|
||
<div class="line"><a name="l22466"></a><span class="lineno">22466</span>  {<span class="stringliteral">"value"</span>, target[i]}</div>
|
||
<div class="line"><a name="l22467"></a><span class="lineno">22467</span>  });</div>
|
||
<div class="line"><a name="l22468"></a><span class="lineno">22468</span>  ++i;</div>
|
||
<div class="line"><a name="l22469"></a><span class="lineno">22469</span>  }</div>
|
||
<div class="line"><a name="l22470"></a><span class="lineno">22470</span>  </div>
|
||
<div class="line"><a name="l22471"></a><span class="lineno">22471</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l22472"></a><span class="lineno">22472</span>  }</div>
|
||
<div class="line"><a name="l22473"></a><span class="lineno">22473</span>  </div>
|
||
<div class="line"><a name="l22474"></a><span class="lineno">22474</span>  <span class="keywordflow">case</span> <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">value_t::object</a>:</div>
|
||
<div class="line"><a name="l22475"></a><span class="lineno">22475</span>  {</div>
|
||
<div class="line"><a name="l22476"></a><span class="lineno">22476</span>  <span class="comment">// first pass: traverse this object's elements</span></div>
|
||
<div class="line"><a name="l22477"></a><span class="lineno">22477</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span> it = source.cbegin(); it != source.cend(); ++it)</div>
|
||
<div class="line"><a name="l22478"></a><span class="lineno">22478</span>  {</div>
|
||
<div class="line"><a name="l22479"></a><span class="lineno">22479</span>  <span class="comment">// escape the key name to be used in a JSON patch</span></div>
|
||
<div class="line"><a name="l22480"></a><span class="lineno">22480</span>  <span class="keyword">const</span> <span class="keyword">auto</span> key = json_pointer::escape(it.key());</div>
|
||
<div class="line"><a name="l22481"></a><span class="lineno">22481</span>  </div>
|
||
<div class="line"><a name="l22482"></a><span class="lineno">22482</span>  <span class="keywordflow">if</span> (target.find(it.key()) != target.end())</div>
|
||
<div class="line"><a name="l22483"></a><span class="lineno">22483</span>  {</div>
|
||
<div class="line"><a name="l22484"></a><span class="lineno">22484</span>  <span class="comment">// recursive call to compare object values at key it</span></div>
|
||
<div class="line"><a name="l22485"></a><span class="lineno">22485</span>  <span class="keyword">auto</span> temp_diff = <a class="code" href="classnlohmann_1_1basic__json.html#a9c4f3554773649beef69461a10a3de87">diff</a>(it.value(), target[it.key()], path + <span class="stringliteral">"/"</span> + key);</div>
|
||
<div class="line"><a name="l22486"></a><span class="lineno">22486</span>  result.insert(result.end(), temp_diff.begin(), temp_diff.end());</div>
|
||
<div class="line"><a name="l22487"></a><span class="lineno">22487</span>  }</div>
|
||
<div class="line"><a name="l22488"></a><span class="lineno">22488</span>  <span class="keywordflow">else</span></div>
|
||
<div class="line"><a name="l22489"></a><span class="lineno">22489</span>  {</div>
|
||
<div class="line"><a name="l22490"></a><span class="lineno">22490</span>  <span class="comment">// found a key that is not in o -> remove it</span></div>
|
||
<div class="line"><a name="l22491"></a><span class="lineno">22491</span>  result.push_back(<span class="keywordtype">object</span>(</div>
|
||
<div class="line"><a name="l22492"></a><span class="lineno">22492</span>  {</div>
|
||
<div class="line"><a name="l22493"></a><span class="lineno">22493</span>  {<span class="stringliteral">"op"</span>, <span class="stringliteral">"remove"</span>}, {<span class="stringliteral">"path"</span>, path + <span class="stringliteral">"/"</span> + key}</div>
|
||
<div class="line"><a name="l22494"></a><span class="lineno">22494</span>  }));</div>
|
||
<div class="line"><a name="l22495"></a><span class="lineno">22495</span>  }</div>
|
||
<div class="line"><a name="l22496"></a><span class="lineno">22496</span>  }</div>
|
||
<div class="line"><a name="l22497"></a><span class="lineno">22497</span>  </div>
|
||
<div class="line"><a name="l22498"></a><span class="lineno">22498</span>  <span class="comment">// second pass: traverse other object's elements</span></div>
|
||
<div class="line"><a name="l22499"></a><span class="lineno">22499</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span> it = target.cbegin(); it != target.cend(); ++it)</div>
|
||
<div class="line"><a name="l22500"></a><span class="lineno">22500</span>  {</div>
|
||
<div class="line"><a name="l22501"></a><span class="lineno">22501</span>  <span class="keywordflow">if</span> (source.find(it.key()) == source.end())</div>
|
||
<div class="line"><a name="l22502"></a><span class="lineno">22502</span>  {</div>
|
||
<div class="line"><a name="l22503"></a><span class="lineno">22503</span>  <span class="comment">// found a key that is not in this -> add it</span></div>
|
||
<div class="line"><a name="l22504"></a><span class="lineno">22504</span>  <span class="keyword">const</span> <span class="keyword">auto</span> key = json_pointer::escape(it.key());</div>
|
||
<div class="line"><a name="l22505"></a><span class="lineno">22505</span>  result.push_back(</div>
|
||
<div class="line"><a name="l22506"></a><span class="lineno">22506</span>  {</div>
|
||
<div class="line"><a name="l22507"></a><span class="lineno">22507</span>  {<span class="stringliteral">"op"</span>, <span class="stringliteral">"add"</span>}, {<span class="stringliteral">"path"</span>, path + <span class="stringliteral">"/"</span> + key},</div>
|
||
<div class="line"><a name="l22508"></a><span class="lineno">22508</span>  {<span class="stringliteral">"value"</span>, it.value()}</div>
|
||
<div class="line"><a name="l22509"></a><span class="lineno">22509</span>  });</div>
|
||
<div class="line"><a name="l22510"></a><span class="lineno">22510</span>  }</div>
|
||
<div class="line"><a name="l22511"></a><span class="lineno">22511</span>  }</div>
|
||
<div class="line"><a name="l22512"></a><span class="lineno">22512</span>  </div>
|
||
<div class="line"><a name="l22513"></a><span class="lineno">22513</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l22514"></a><span class="lineno">22514</span>  }</div>
|
||
<div class="line"><a name="l22515"></a><span class="lineno">22515</span>  </div>
|
||
<div class="line"><a name="l22516"></a><span class="lineno">22516</span>  <span class="keywordflow">default</span>:</div>
|
||
<div class="line"><a name="l22517"></a><span class="lineno">22517</span>  {</div>
|
||
<div class="line"><a name="l22518"></a><span class="lineno">22518</span>  <span class="comment">// both primitive type: replace value</span></div>
|
||
<div class="line"><a name="l22519"></a><span class="lineno">22519</span>  result.push_back(</div>
|
||
<div class="line"><a name="l22520"></a><span class="lineno">22520</span>  {</div>
|
||
<div class="line"><a name="l22521"></a><span class="lineno">22521</span>  {<span class="stringliteral">"op"</span>, <span class="stringliteral">"replace"</span>}, {<span class="stringliteral">"path"</span>, path}, {<span class="stringliteral">"value"</span>, target}</div>
|
||
<div class="line"><a name="l22522"></a><span class="lineno">22522</span>  });</div>
|
||
<div class="line"><a name="l22523"></a><span class="lineno">22523</span>  <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a name="l22524"></a><span class="lineno">22524</span>  }</div>
|
||
<div class="line"><a name="l22525"></a><span class="lineno">22525</span>  }</div>
|
||
<div class="line"><a name="l22526"></a><span class="lineno">22526</span>  </div>
|
||
<div class="line"><a name="l22527"></a><span class="lineno">22527</span>  <span class="keywordflow">return</span> result;</div>
|
||
<div class="line"><a name="l22528"></a><span class="lineno">22528</span>  }</div>
|
||
<div class="line"><a name="l22529"></a><span class="lineno">22529</span>  </div>
|
||
<div class="line"><a name="l22531"></a><span class="lineno">22531</span>  </div>
|
||
<div class="line"><a name="l22533"></a><span class="lineno">22533</span>  <span class="comment">// JSON Merge Patch functions //</span></div>
|
||
<div class="line"><a name="l22535"></a><span class="lineno">22535</span> <span class="comment"></span> </div>
|
||
<div class="line"><a name="l22538"></a><span class="lineno">22538</span>  </div>
|
||
<div class="line"><a name="l22581"></a><span class="lineno"><a class="line" href="classnlohmann_1_1basic__json.html#a7c43ed2a3004c1fa9543913f37b9fca9">22581</a></span>  <span class="keywordtype">void</span> <a class="code" href="classnlohmann_1_1basic__json.html#a7c43ed2a3004c1fa9543913f37b9fca9">merge_patch</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json.html">basic_json</a>& apply_patch)</div>
|
||
<div class="line"><a name="l22582"></a><span class="lineno">22582</span>  {</div>
|
||
<div class="line"><a name="l22583"></a><span class="lineno">22583</span>  <span class="keywordflow">if</span> (apply_patch.is_object())</div>
|
||
<div class="line"><a name="l22584"></a><span class="lineno">22584</span>  {</div>
|
||
<div class="line"><a name="l22585"></a><span class="lineno">22585</span>  <span class="keywordflow">if</span> (not <a class="code" href="classnlohmann_1_1basic__json.html#af8f511af124e82e4579f444b4175787c">is_object</a>())</div>
|
||
<div class="line"><a name="l22586"></a><span class="lineno">22586</span>  {</div>
|
||
<div class="line"><a name="l22587"></a><span class="lineno">22587</span>  *<span class="keyword">this</span> = <a class="code" href="classnlohmann_1_1basic__json.html#a31f84ee15c4690ff705bed74736d04c6">object</a>();</div>
|
||
<div class="line"><a name="l22588"></a><span class="lineno">22588</span>  }</div>
|
||
<div class="line"><a name="l22589"></a><span class="lineno">22589</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span> it = apply_patch.begin(); it != apply_patch.end(); ++it)</div>
|
||
<div class="line"><a name="l22590"></a><span class="lineno">22590</span>  {</div>
|
||
<div class="line"><a name="l22591"></a><span class="lineno">22591</span>  <span class="keywordflow">if</span> (it.value().is_null())</div>
|
||
<div class="line"><a name="l22592"></a><span class="lineno">22592</span>  {</div>
|
||
<div class="line"><a name="l22593"></a><span class="lineno">22593</span>  <a class="code" href="classnlohmann_1_1basic__json.html#a068a16e76be178e83da6a192916923ed">erase</a>(it.key());</div>
|
||
<div class="line"><a name="l22594"></a><span class="lineno">22594</span>  }</div>
|
||
<div class="line"><a name="l22595"></a><span class="lineno">22595</span>  <span class="keywordflow">else</span></div>
|
||
<div class="line"><a name="l22596"></a><span class="lineno">22596</span>  {</div>
|
||
<div class="line"><a name="l22597"></a><span class="lineno">22597</span>  <a class="code" href="classnlohmann_1_1basic__json.html#ac871e3b03fb2eeca9a8de4db2bea760f">operator[]</a>(it.key()).<a class="code" href="classnlohmann_1_1basic__json.html#a7c43ed2a3004c1fa9543913f37b9fca9">merge_patch</a>(it.value());</div>
|
||
<div class="line"><a name="l22598"></a><span class="lineno">22598</span>  }</div>
|
||
<div class="line"><a name="l22599"></a><span class="lineno">22599</span>  }</div>
|
||
<div class="line"><a name="l22600"></a><span class="lineno">22600</span>  }</div>
|
||
<div class="line"><a name="l22601"></a><span class="lineno">22601</span>  <span class="keywordflow">else</span></div>
|
||
<div class="line"><a name="l22602"></a><span class="lineno">22602</span>  {</div>
|
||
<div class="line"><a name="l22603"></a><span class="lineno">22603</span>  *<span class="keyword">this</span> = apply_patch;</div>
|
||
<div class="line"><a name="l22604"></a><span class="lineno">22604</span>  }</div>
|
||
<div class="line"><a name="l22605"></a><span class="lineno">22605</span>  }</div>
|
||
<div class="line"><a name="l22606"></a><span class="lineno">22606</span>  </div>
|
||
<div class="line"><a name="l22608"></a><span class="lineno">22608</span> };</div>
|
||
<div class="line"><a name="l22609"></a><span class="lineno">22609</span>  </div>
|
||
<div class="line"><a name="l22619"></a><span class="lineno">22619</span> <a class="code" href="json_8hpp.html#a0643bd74c2dc6f0e4e420b8190ea8f0f">NLOHMANN_BASIC_JSON_TPL_DECLARATION</a></div>
|
||
<div class="line"><a name="l22620"></a><span class="lineno"><a class="line" href="namespacenlohmann.html#a6ce645a0b8717757e096a5b5773b7a16">22620</a></span> std::string <a class="code" href="namespacenlohmann.html#a6ce645a0b8717757e096a5b5773b7a16">to_string</a>(<span class="keyword">const</span> <a class="code" href="json_8hpp.html#a80b7254e63f199a1f656f07ae551f632">NLOHMANN_BASIC_JSON_TPL</a>& j)</div>
|
||
<div class="line"><a name="l22621"></a><span class="lineno">22621</span> {</div>
|
||
<div class="line"><a name="l22622"></a><span class="lineno">22622</span>  <span class="keywordflow">return</span> j.dump();</div>
|
||
<div class="line"><a name="l22623"></a><span class="lineno">22623</span> }</div>
|
||
<div class="line"><a name="l22624"></a><span class="lineno">22624</span> } <span class="comment">// namespace nlohmann</span></div>
|
||
<div class="line"><a name="l22625"></a><span class="lineno">22625</span>  </div>
|
||
<div class="line"><a name="l22627"></a><span class="lineno">22627</span> <span class="comment">// nonmember support //</span></div>
|
||
<div class="line"><a name="l22629"></a><span class="lineno">22629</span> <span class="comment"></span> </div>
|
||
<div class="line"><a name="l22630"></a><span class="lineno">22630</span> <span class="comment">// specialization of std::swap, and std::hash</span></div>
|
||
<div class="line"><a name="l22631"></a><span class="lineno">22631</span> <span class="keyword">namespace </span><a class="code" href="namespacestd.html">std</a></div>
|
||
<div class="line"><a name="l22632"></a><span class="lineno">22632</span> {</div>
|
||
<div class="line"><a name="l22633"></a><span class="lineno">22633</span>  </div>
|
||
<div class="line"><a name="l22635"></a><span class="lineno">22635</span> <span class="keyword">template</span><></div>
|
||
<div class="line"><a name="l22636"></a><span class="lineno"><a class="line" href="structstd_1_1hash_3_01nlohmann_1_1json_01_4.html">22636</a></span> <span class="keyword">struct </span>hash<<a class="code" href="namespacenlohmann.html">nlohmann</a>::<a class="code" href="namespacenlohmann.html#a9cc9a3033850a092f791d86854d117fc">json</a>></div>
|
||
<div class="line"><a name="l22637"></a><span class="lineno">22637</span> {</div>
|
||
<div class="line"><a name="l22643"></a><span class="lineno"><a class="line" href="structstd_1_1hash_3_01nlohmann_1_1json_01_4.html#aec1567d1fa47dbe5b77954dce3a55b64">22643</a></span>  std::size_t <a class="code" href="structstd_1_1hash_3_01nlohmann_1_1json_01_4.html#aec1567d1fa47dbe5b77954dce3a55b64">operator()</a>(<span class="keyword">const</span> <a class="code" href="classnlohmann_1_1basic__json.html">nlohmann::json</a>& j)<span class="keyword"> const</span></div>
|
||
<div class="line"><a name="l22644"></a><span class="lineno">22644</span> <span class="keyword"> </span>{</div>
|
||
<div class="line"><a name="l22645"></a><span class="lineno">22645</span>  <span class="comment">// a naive hashing via the string representation</span></div>
|
||
<div class="line"><a name="l22646"></a><span class="lineno">22646</span>  <span class="keyword">const</span> <span class="keyword">auto</span>& h = hash<nlohmann::json::string_t>();</div>
|
||
<div class="line"><a name="l22647"></a><span class="lineno">22647</span>  <span class="keywordflow">return</span> h(j.<a class="code" href="classnlohmann_1_1basic__json.html#a50ec80b02d0f3f51130d4abb5d1cfdc5">dump</a>());</div>
|
||
<div class="line"><a name="l22648"></a><span class="lineno">22648</span>  }</div>
|
||
<div class="line"><a name="l22649"></a><span class="lineno">22649</span> };</div>
|
||
<div class="line"><a name="l22650"></a><span class="lineno">22650</span>  </div>
|
||
<div class="line"><a name="l22654"></a><span class="lineno">22654</span> <span class="keyword">template</span><></div>
|
||
<div class="line"><a name="l22655"></a><span class="lineno"><a class="line" href="structstd_1_1less_3_1_1nlohmann_1_1detail_1_1value__t_01_4.html">22655</a></span> <span class="keyword">struct </span>less<::<a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985">nlohmann::detail::value_t</a>></div>
|
||
<div class="line"><a name="l22656"></a><span class="lineno">22656</span> {</div>
|
||
<div class="line"><a name="l22661"></a><span class="lineno"><a class="line" href="structstd_1_1less_3_1_1nlohmann_1_1detail_1_1value__t_01_4.html#a10d3fea50edf7b15ead8f4ceeb006000">22661</a></span>  <span class="keywordtype">bool</span> <a class="code" href="structstd_1_1less_3_1_1nlohmann_1_1detail_1_1value__t_01_4.html#a10d3fea50edf7b15ead8f4ceeb006000">operator()</a>(<a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985">nlohmann::detail::value_t</a> lhs,</div>
|
||
<div class="line"><a name="l22662"></a><span class="lineno">22662</span>  <a class="code" href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985">nlohmann::detail::value_t</a> rhs) <span class="keyword">const</span> noexcept</div>
|
||
<div class="line"><a name="l22663"></a><span class="lineno">22663</span>  {</div>
|
||
<div class="line"><a name="l22664"></a><span class="lineno">22664</span>  <span class="keywordflow">return</span> <a class="code" href="namespacenlohmann_1_1detail.html#a09169efff3bd1771fff29bd92cea19e0">nlohmann::detail::operator<</a>(lhs, rhs);</div>
|
||
<div class="line"><a name="l22665"></a><span class="lineno">22665</span>  }</div>
|
||
<div class="line"><a name="l22666"></a><span class="lineno">22666</span> };</div>
|
||
<div class="line"><a name="l22667"></a><span class="lineno">22667</span>  </div>
|
||
<div class="line"><a name="l22673"></a><span class="lineno">22673</span> <span class="keyword">template</span><></div>
|
||
<div class="line"><a name="l22674"></a><span class="lineno"><a class="line" href="namespacestd.html#ace192546038d61d9c28ddfe0c3d732de">22674</a></span> <span class="keyword">inline</span> <span class="keywordtype">void</span> swap<nlohmann::json>(<a class="code" href="classnlohmann_1_1basic__json.html">nlohmann::json</a>& j1, <a class="code" href="classnlohmann_1_1basic__json.html">nlohmann::json</a>& j2) noexcept(</div>
|
||
<div class="line"><a name="l22675"></a><span class="lineno">22675</span>  is_nothrow_move_constructible<nlohmann::json>::value and</div>
|
||
<div class="line"><a name="l22676"></a><span class="lineno">22676</span>  is_nothrow_move_assignable<nlohmann::json>::value</div>
|
||
<div class="line"><a name="l22677"></a><span class="lineno">22677</span> )</div>
|
||
<div class="line"><a name="l22678"></a><span class="lineno">22678</span> {</div>
|
||
<div class="line"><a name="l22679"></a><span class="lineno">22679</span>  j1.swap(j2);</div>
|
||
<div class="line"><a name="l22680"></a><span class="lineno">22680</span> }</div>
|
||
<div class="line"><a name="l22681"></a><span class="lineno">22681</span>  </div>
|
||
<div class="line"><a name="l22682"></a><span class="lineno">22682</span> } <span class="comment">// namespace std</span></div>
|
||
<div class="line"><a name="l22683"></a><span class="lineno">22683</span>  </div>
|
||
<div class="line"><a name="l22697"></a><span class="lineno">22697</span> <a class="code" href="json_8hpp.html#a5338981b5ad9027c9e54b1c5597f4344">JSON_HEDLEY_NON_NULL</a>(1)</div>
|
||
<div class="line"><a name="l22698"></a><span class="lineno"><a class="line" href="json_8hpp.html#ae90d59ab420a183cd5fb8588bdc95e06">22698</a></span> inline <a class="code" href="namespacenlohmann.html">nlohmann</a>::<a class="code" href="namespacenlohmann.html#a9cc9a3033850a092f791d86854d117fc">json</a> operator "" _json(const <span class="keywordtype">char</span>* s, <a class="code" href="namespacestd.html">std</a>::<span class="keywordtype">size_t</span> n)</div>
|
||
<div class="line"><a name="l22699"></a><span class="lineno">22699</span> {</div>
|
||
<div class="line"><a name="l22700"></a><span class="lineno">22700</span>  <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json.html#a265a473e939184aa42655c9ccdf34e58">nlohmann::json::parse</a>(s, s + n);</div>
|
||
<div class="line"><a name="l22701"></a><span class="lineno">22701</span> }</div>
|
||
<div class="line"><a name="l22702"></a><span class="lineno">22702</span>  </div>
|
||
<div class="line"><a name="l22716"></a><span class="lineno">22716</span> <a class="code" href="json_8hpp.html#a5338981b5ad9027c9e54b1c5597f4344">JSON_HEDLEY_NON_NULL</a>(1)</div>
|
||
<div class="line"><a name="l22717"></a><span class="lineno"><a class="line" href="json_8hpp.html#a3e528a99a7882f8d0b97375bb6081d10">22717</a></span> inline <a class="code" href="namespacenlohmann.html">nlohmann</a>::<a class="code" href="namespacenlohmann.html#a9cc9a3033850a092f791d86854d117fc">json</a>::json_pointer operator "" _json_pointer(const <span class="keywordtype">char</span>* s, <a class="code" href="namespacestd.html">std</a>::<span class="keywordtype">size_t</span> n)</div>
|
||
<div class="line"><a name="l22718"></a><span class="lineno">22718</span> {</div>
|
||
<div class="line"><a name="l22719"></a><span class="lineno">22719</span>  <span class="keywordflow">return</span> <a class="code" href="classnlohmann_1_1basic__json.html#a6886a5001f5b449ad316101a311ce536">nlohmann::json::json_pointer</a>(std::string(s, n));</div>
|
||
<div class="line"><a name="l22720"></a><span class="lineno">22720</span> }</div>
|
||
<div class="line"><a name="l22721"></a><span class="lineno">22721</span>  </div>
|
||
<div class="line"><a name="l22722"></a><span class="lineno">22722</span> <span class="comment">// #include <nlohmann/detail/macro_unscope.hpp></span></div>
|
||
<div class="line"><a name="l22723"></a><span class="lineno">22723</span>  </div>
|
||
<div class="line"><a name="l22724"></a><span class="lineno">22724</span>  </div>
|
||
<div class="line"><a name="l22725"></a><span class="lineno">22725</span> <span class="comment">// restore GCC/clang diagnostic settings</span></div>
|
||
<div class="line"><a name="l22726"></a><span class="lineno">22726</span> <span class="preprocessor">#if defined(__clang__) || defined(__GNUC__) || defined(__GNUG__)</span></div>
|
||
<div class="line"><a name="l22727"></a><span class="lineno">22727</span> <span class="preprocessor"> #pragma GCC diagnostic pop</span></div>
|
||
<div class="line"><a name="l22728"></a><span class="lineno">22728</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l22729"></a><span class="lineno">22729</span> <span class="preprocessor">#if defined(__clang__)</span></div>
|
||
<div class="line"><a name="l22730"></a><span class="lineno">22730</span> <span class="preprocessor"> #pragma GCC diagnostic pop</span></div>
|
||
<div class="line"><a name="l22731"></a><span class="lineno">22731</span> <span class="preprocessor">#endif</span></div>
|
||
<div class="line"><a name="l22732"></a><span class="lineno">22732</span>  </div>
|
||
<div class="line"><a name="l22733"></a><span class="lineno">22733</span> <span class="comment">// clean up</span></div>
|
||
<div class="line"><a name="l22734"></a><span class="lineno">22734</span> <span class="preprocessor">#undef JSON_INTERNAL_CATCH</span></div>
|
||
<div class="line"><a name="l22735"></a><span class="lineno">22735</span> <span class="preprocessor">#undef JSON_CATCH</span></div>
|
||
<div class="line"><a name="l22736"></a><span class="lineno">22736</span> <span class="preprocessor">#undef JSON_THROW</span></div>
|
||
<div class="line"><a name="l22737"></a><span class="lineno">22737</span> <span class="preprocessor">#undef JSON_TRY</span></div>
|
||
<div class="line"><a name="l22738"></a><span class="lineno">22738</span> <span class="preprocessor">#undef JSON_HAS_CPP_14</span></div>
|
||
<div class="line"><a name="l22739"></a><span class="lineno">22739</span> <span class="preprocessor">#undef JSON_HAS_CPP_17</span></div>
|
||
<div class="line"><a name="l22740"></a><span class="lineno">22740</span> <span class="preprocessor">#undef NLOHMANN_BASIC_JSON_TPL_DECLARATION</span></div>
|
||
<div class="line"><a name="l22741"></a><span class="lineno">22741</span> <span class="preprocessor">#undef NLOHMANN_BASIC_JSON_TPL</span></div>
|
||
<div class="line"><a name="l22742"></a><span class="lineno">22742</span>  </div>
|
||
<div class="line"><a name="l22743"></a><span class="lineno">22743</span> <span class="comment">// #include <nlohmann/thirdparty/hedley/hedley_undef.hpp></span></div>
|
||
<div class="line"><a name="l22744"></a><span class="lineno">22744</span> <span class="preprocessor">#undef JSON_HEDLEY_ALWAYS_INLINE</span></div>
|
||
<div class="line"><a name="l22745"></a><span class="lineno">22745</span> <span class="preprocessor">#undef JSON_HEDLEY_ARM_VERSION</span></div>
|
||
<div class="line"><a name="l22746"></a><span class="lineno">22746</span> <span class="preprocessor">#undef JSON_HEDLEY_ARM_VERSION_CHECK</span></div>
|
||
<div class="line"><a name="l22747"></a><span class="lineno">22747</span> <span class="preprocessor">#undef JSON_HEDLEY_ARRAY_PARAM</span></div>
|
||
<div class="line"><a name="l22748"></a><span class="lineno">22748</span> <span class="preprocessor">#undef JSON_HEDLEY_ASSUME</span></div>
|
||
<div class="line"><a name="l22749"></a><span class="lineno">22749</span> <span class="preprocessor">#undef JSON_HEDLEY_BEGIN_C_DECLS</span></div>
|
||
<div class="line"><a name="l22750"></a><span class="lineno">22750</span> <span class="preprocessor">#undef JSON_HEDLEY_C_DECL</span></div>
|
||
<div class="line"><a name="l22751"></a><span class="lineno">22751</span> <span class="preprocessor">#undef JSON_HEDLEY_CLANG_HAS_ATTRIBUTE</span></div>
|
||
<div class="line"><a name="l22752"></a><span class="lineno">22752</span> <span class="preprocessor">#undef JSON_HEDLEY_CLANG_HAS_BUILTIN</span></div>
|
||
<div class="line"><a name="l22753"></a><span class="lineno">22753</span> <span class="preprocessor">#undef JSON_HEDLEY_CLANG_HAS_CPP_ATTRIBUTE</span></div>
|
||
<div class="line"><a name="l22754"></a><span class="lineno">22754</span> <span class="preprocessor">#undef JSON_HEDLEY_CLANG_HAS_DECLSPEC_DECLSPEC_ATTRIBUTE</span></div>
|
||
<div class="line"><a name="l22755"></a><span class="lineno">22755</span> <span class="preprocessor">#undef JSON_HEDLEY_CLANG_HAS_EXTENSION</span></div>
|
||
<div class="line"><a name="l22756"></a><span class="lineno">22756</span> <span class="preprocessor">#undef JSON_HEDLEY_CLANG_HAS_FEATURE</span></div>
|
||
<div class="line"><a name="l22757"></a><span class="lineno">22757</span> <span class="preprocessor">#undef JSON_HEDLEY_CLANG_HAS_WARNING</span></div>
|
||
<div class="line"><a name="l22758"></a><span class="lineno">22758</span> <span class="preprocessor">#undef JSON_HEDLEY_COMPCERT_VERSION</span></div>
|
||
<div class="line"><a name="l22759"></a><span class="lineno">22759</span> <span class="preprocessor">#undef JSON_HEDLEY_COMPCERT_VERSION_CHECK</span></div>
|
||
<div class="line"><a name="l22760"></a><span class="lineno">22760</span> <span class="preprocessor">#undef JSON_HEDLEY_CONCAT</span></div>
|
||
<div class="line"><a name="l22761"></a><span class="lineno">22761</span> <span class="preprocessor">#undef JSON_HEDLEY_CONCAT_EX</span></div>
|
||
<div class="line"><a name="l22762"></a><span class="lineno">22762</span> <span class="preprocessor">#undef JSON_HEDLEY_CONST</span></div>
|
||
<div class="line"><a name="l22763"></a><span class="lineno">22763</span> <span class="preprocessor">#undef JSON_HEDLEY_CONST_CAST</span></div>
|
||
<div class="line"><a name="l22764"></a><span class="lineno">22764</span> <span class="preprocessor">#undef JSON_HEDLEY_CONSTEXPR</span></div>
|
||
<div class="line"><a name="l22765"></a><span class="lineno">22765</span> <span class="preprocessor">#undef JSON_HEDLEY_CPP_CAST</span></div>
|
||
<div class="line"><a name="l22766"></a><span class="lineno">22766</span> <span class="preprocessor">#undef JSON_HEDLEY_CRAY_VERSION</span></div>
|
||
<div class="line"><a name="l22767"></a><span class="lineno">22767</span> <span class="preprocessor">#undef JSON_HEDLEY_CRAY_VERSION_CHECK</span></div>
|
||
<div class="line"><a name="l22768"></a><span class="lineno">22768</span> <span class="preprocessor">#undef JSON_HEDLEY_DEPRECATED</span></div>
|
||
<div class="line"><a name="l22769"></a><span class="lineno">22769</span> <span class="preprocessor">#undef JSON_HEDLEY_DEPRECATED_FOR</span></div>
|
||
<div class="line"><a name="l22770"></a><span class="lineno">22770</span> <span class="preprocessor">#undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL</span></div>
|
||
<div class="line"><a name="l22771"></a><span class="lineno">22771</span> <span class="preprocessor">#undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_</span></div>
|
||
<div class="line"><a name="l22772"></a><span class="lineno">22772</span> <span class="preprocessor">#undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED</span></div>
|
||
<div class="line"><a name="l22773"></a><span class="lineno">22773</span> <span class="preprocessor">#undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES</span></div>
|
||
<div class="line"><a name="l22774"></a><span class="lineno">22774</span> <span class="preprocessor">#undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS</span></div>
|
||
<div class="line"><a name="l22775"></a><span class="lineno">22775</span> <span class="preprocessor">#undef JSON_HEDLEY_DIAGNOSTIC_POP</span></div>
|
||
<div class="line"><a name="l22776"></a><span class="lineno">22776</span> <span class="preprocessor">#undef JSON_HEDLEY_DIAGNOSTIC_PUSH</span></div>
|
||
<div class="line"><a name="l22777"></a><span class="lineno">22777</span> <span class="preprocessor">#undef JSON_HEDLEY_DMC_VERSION</span></div>
|
||
<div class="line"><a name="l22778"></a><span class="lineno">22778</span> <span class="preprocessor">#undef JSON_HEDLEY_DMC_VERSION_CHECK</span></div>
|
||
<div class="line"><a name="l22779"></a><span class="lineno">22779</span> <span class="preprocessor">#undef JSON_HEDLEY_EMPTY_BASES</span></div>
|
||
<div class="line"><a name="l22780"></a><span class="lineno">22780</span> <span class="preprocessor">#undef JSON_HEDLEY_EMSCRIPTEN_VERSION</span></div>
|
||
<div class="line"><a name="l22781"></a><span class="lineno">22781</span> <span class="preprocessor">#undef JSON_HEDLEY_EMSCRIPTEN_VERSION_CHECK</span></div>
|
||
<div class="line"><a name="l22782"></a><span class="lineno">22782</span> <span class="preprocessor">#undef JSON_HEDLEY_END_C_DECLS</span></div>
|
||
<div class="line"><a name="l22783"></a><span class="lineno">22783</span> <span class="preprocessor">#undef JSON_HEDLEY_FALL_THROUGH</span></div>
|
||
<div class="line"><a name="l22784"></a><span class="lineno">22784</span> <span class="preprocessor">#undef JSON_HEDLEY_FLAGS</span></div>
|
||
<div class="line"><a name="l22785"></a><span class="lineno">22785</span> <span class="preprocessor">#undef JSON_HEDLEY_FLAGS_CAST</span></div>
|
||
<div class="line"><a name="l22786"></a><span class="lineno">22786</span> <span class="preprocessor">#undef JSON_HEDLEY_GCC_HAS_ATTRIBUTE</span></div>
|
||
<div class="line"><a name="l22787"></a><span class="lineno">22787</span> <span class="preprocessor">#undef JSON_HEDLEY_GCC_HAS_BUILTIN</span></div>
|
||
<div class="line"><a name="l22788"></a><span class="lineno">22788</span> <span class="preprocessor">#undef JSON_HEDLEY_GCC_HAS_CPP_ATTRIBUTE</span></div>
|
||
<div class="line"><a name="l22789"></a><span class="lineno">22789</span> <span class="preprocessor">#undef JSON_HEDLEY_GCC_HAS_DECLSPEC_ATTRIBUTE</span></div>
|
||
<div class="line"><a name="l22790"></a><span class="lineno">22790</span> <span class="preprocessor">#undef JSON_HEDLEY_GCC_HAS_EXTENSION</span></div>
|
||
<div class="line"><a name="l22791"></a><span class="lineno">22791</span> <span class="preprocessor">#undef JSON_HEDLEY_GCC_HAS_FEATURE</span></div>
|
||
<div class="line"><a name="l22792"></a><span class="lineno">22792</span> <span class="preprocessor">#undef JSON_HEDLEY_GCC_HAS_WARNING</span></div>
|
||
<div class="line"><a name="l22793"></a><span class="lineno">22793</span> <span class="preprocessor">#undef JSON_HEDLEY_GCC_NOT_CLANG_VERSION_CHECK</span></div>
|
||
<div class="line"><a name="l22794"></a><span class="lineno">22794</span> <span class="preprocessor">#undef JSON_HEDLEY_GCC_VERSION</span></div>
|
||
<div class="line"><a name="l22795"></a><span class="lineno">22795</span> <span class="preprocessor">#undef JSON_HEDLEY_GCC_VERSION_CHECK</span></div>
|
||
<div class="line"><a name="l22796"></a><span class="lineno">22796</span> <span class="preprocessor">#undef JSON_HEDLEY_GNUC_HAS_ATTRIBUTE</span></div>
|
||
<div class="line"><a name="l22797"></a><span class="lineno">22797</span> <span class="preprocessor">#undef JSON_HEDLEY_GNUC_HAS_BUILTIN</span></div>
|
||
<div class="line"><a name="l22798"></a><span class="lineno">22798</span> <span class="preprocessor">#undef JSON_HEDLEY_GNUC_HAS_CPP_ATTRIBUTE</span></div>
|
||
<div class="line"><a name="l22799"></a><span class="lineno">22799</span> <span class="preprocessor">#undef JSON_HEDLEY_GNUC_HAS_DECLSPEC_ATTRIBUTE</span></div>
|
||
<div class="line"><a name="l22800"></a><span class="lineno">22800</span> <span class="preprocessor">#undef JSON_HEDLEY_GNUC_HAS_EXTENSION</span></div>
|
||
<div class="line"><a name="l22801"></a><span class="lineno">22801</span> <span class="preprocessor">#undef JSON_HEDLEY_GNUC_HAS_FEATURE</span></div>
|
||
<div class="line"><a name="l22802"></a><span class="lineno">22802</span> <span class="preprocessor">#undef JSON_HEDLEY_GNUC_HAS_WARNING</span></div>
|
||
<div class="line"><a name="l22803"></a><span class="lineno">22803</span> <span class="preprocessor">#undef JSON_HEDLEY_GNUC_VERSION</span></div>
|
||
<div class="line"><a name="l22804"></a><span class="lineno">22804</span> <span class="preprocessor">#undef JSON_HEDLEY_GNUC_VERSION_CHECK</span></div>
|
||
<div class="line"><a name="l22805"></a><span class="lineno">22805</span> <span class="preprocessor">#undef JSON_HEDLEY_HAS_ATTRIBUTE</span></div>
|
||
<div class="line"><a name="l22806"></a><span class="lineno">22806</span> <span class="preprocessor">#undef JSON_HEDLEY_HAS_BUILTIN</span></div>
|
||
<div class="line"><a name="l22807"></a><span class="lineno">22807</span> <span class="preprocessor">#undef JSON_HEDLEY_HAS_CPP_ATTRIBUTE</span></div>
|
||
<div class="line"><a name="l22808"></a><span class="lineno">22808</span> <span class="preprocessor">#undef JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS</span></div>
|
||
<div class="line"><a name="l22809"></a><span class="lineno">22809</span> <span class="preprocessor">#undef JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE</span></div>
|
||
<div class="line"><a name="l22810"></a><span class="lineno">22810</span> <span class="preprocessor">#undef JSON_HEDLEY_HAS_EXTENSION</span></div>
|
||
<div class="line"><a name="l22811"></a><span class="lineno">22811</span> <span class="preprocessor">#undef JSON_HEDLEY_HAS_FEATURE</span></div>
|
||
<div class="line"><a name="l22812"></a><span class="lineno">22812</span> <span class="preprocessor">#undef JSON_HEDLEY_HAS_WARNING</span></div>
|
||
<div class="line"><a name="l22813"></a><span class="lineno">22813</span> <span class="preprocessor">#undef JSON_HEDLEY_IAR_VERSION</span></div>
|
||
<div class="line"><a name="l22814"></a><span class="lineno">22814</span> <span class="preprocessor">#undef JSON_HEDLEY_IAR_VERSION_CHECK</span></div>
|
||
<div class="line"><a name="l22815"></a><span class="lineno">22815</span> <span class="preprocessor">#undef JSON_HEDLEY_IBM_VERSION</span></div>
|
||
<div class="line"><a name="l22816"></a><span class="lineno">22816</span> <span class="preprocessor">#undef JSON_HEDLEY_IBM_VERSION_CHECK</span></div>
|
||
<div class="line"><a name="l22817"></a><span class="lineno">22817</span> <span class="preprocessor">#undef JSON_HEDLEY_IMPORT</span></div>
|
||
<div class="line"><a name="l22818"></a><span class="lineno">22818</span> <span class="preprocessor">#undef JSON_HEDLEY_INLINE</span></div>
|
||
<div class="line"><a name="l22819"></a><span class="lineno">22819</span> <span class="preprocessor">#undef JSON_HEDLEY_INTEL_VERSION</span></div>
|
||
<div class="line"><a name="l22820"></a><span class="lineno">22820</span> <span class="preprocessor">#undef JSON_HEDLEY_INTEL_VERSION_CHECK</span></div>
|
||
<div class="line"><a name="l22821"></a><span class="lineno">22821</span> <span class="preprocessor">#undef JSON_HEDLEY_IS_CONSTANT</span></div>
|
||
<div class="line"><a name="l22822"></a><span class="lineno">22822</span> <span class="preprocessor">#undef JSON_HEDLEY_IS_CONSTEXPR_</span></div>
|
||
<div class="line"><a name="l22823"></a><span class="lineno">22823</span> <span class="preprocessor">#undef JSON_HEDLEY_LIKELY</span></div>
|
||
<div class="line"><a name="l22824"></a><span class="lineno">22824</span> <span class="preprocessor">#undef JSON_HEDLEY_MALLOC</span></div>
|
||
<div class="line"><a name="l22825"></a><span class="lineno">22825</span> <span class="preprocessor">#undef JSON_HEDLEY_MESSAGE</span></div>
|
||
<div class="line"><a name="l22826"></a><span class="lineno">22826</span> <span class="preprocessor">#undef JSON_HEDLEY_MSVC_VERSION</span></div>
|
||
<div class="line"><a name="l22827"></a><span class="lineno">22827</span> <span class="preprocessor">#undef JSON_HEDLEY_MSVC_VERSION_CHECK</span></div>
|
||
<div class="line"><a name="l22828"></a><span class="lineno">22828</span> <span class="preprocessor">#undef JSON_HEDLEY_NEVER_INLINE</span></div>
|
||
<div class="line"><a name="l22829"></a><span class="lineno">22829</span> <span class="preprocessor">#undef JSON_HEDLEY_NO_ESCAPE</span></div>
|
||
<div class="line"><a name="l22830"></a><span class="lineno">22830</span> <span class="preprocessor">#undef JSON_HEDLEY_NON_NULL</span></div>
|
||
<div class="line"><a name="l22831"></a><span class="lineno">22831</span> <span class="preprocessor">#undef JSON_HEDLEY_NO_RETURN</span></div>
|
||
<div class="line"><a name="l22832"></a><span class="lineno">22832</span> <span class="preprocessor">#undef JSON_HEDLEY_NO_THROW</span></div>
|
||
<div class="line"><a name="l22833"></a><span class="lineno">22833</span> <span class="preprocessor">#undef JSON_HEDLEY_NULL</span></div>
|
||
<div class="line"><a name="l22834"></a><span class="lineno">22834</span> <span class="preprocessor">#undef JSON_HEDLEY_PELLES_VERSION</span></div>
|
||
<div class="line"><a name="l22835"></a><span class="lineno">22835</span> <span class="preprocessor">#undef JSON_HEDLEY_PELLES_VERSION_CHECK</span></div>
|
||
<div class="line"><a name="l22836"></a><span class="lineno">22836</span> <span class="preprocessor">#undef JSON_HEDLEY_PGI_VERSION</span></div>
|
||
<div class="line"><a name="l22837"></a><span class="lineno">22837</span> <span class="preprocessor">#undef JSON_HEDLEY_PGI_VERSION_CHECK</span></div>
|
||
<div class="line"><a name="l22838"></a><span class="lineno">22838</span> <span class="preprocessor">#undef JSON_HEDLEY_PREDICT</span></div>
|
||
<div class="line"><a name="l22839"></a><span class="lineno">22839</span> <span class="preprocessor">#undef JSON_HEDLEY_PRINTF_FORMAT</span></div>
|
||
<div class="line"><a name="l22840"></a><span class="lineno">22840</span> <span class="preprocessor">#undef JSON_HEDLEY_PRIVATE</span></div>
|
||
<div class="line"><a name="l22841"></a><span class="lineno">22841</span> <span class="preprocessor">#undef JSON_HEDLEY_PUBLIC</span></div>
|
||
<div class="line"><a name="l22842"></a><span class="lineno">22842</span> <span class="preprocessor">#undef JSON_HEDLEY_PURE</span></div>
|
||
<div class="line"><a name="l22843"></a><span class="lineno">22843</span> <span class="preprocessor">#undef JSON_HEDLEY_REINTERPRET_CAST</span></div>
|
||
<div class="line"><a name="l22844"></a><span class="lineno">22844</span> <span class="preprocessor">#undef JSON_HEDLEY_REQUIRE</span></div>
|
||
<div class="line"><a name="l22845"></a><span class="lineno">22845</span> <span class="preprocessor">#undef JSON_HEDLEY_REQUIRE_CONSTEXPR</span></div>
|
||
<div class="line"><a name="l22846"></a><span class="lineno">22846</span> <span class="preprocessor">#undef JSON_HEDLEY_REQUIRE_MSG</span></div>
|
||
<div class="line"><a name="l22847"></a><span class="lineno">22847</span> <span class="preprocessor">#undef JSON_HEDLEY_RESTRICT</span></div>
|
||
<div class="line"><a name="l22848"></a><span class="lineno">22848</span> <span class="preprocessor">#undef JSON_HEDLEY_RETURNS_NON_NULL</span></div>
|
||
<div class="line"><a name="l22849"></a><span class="lineno">22849</span> <span class="preprocessor">#undef JSON_HEDLEY_SENTINEL</span></div>
|
||
<div class="line"><a name="l22850"></a><span class="lineno">22850</span> <span class="preprocessor">#undef JSON_HEDLEY_STATIC_ASSERT</span></div>
|
||
<div class="line"><a name="l22851"></a><span class="lineno">22851</span> <span class="preprocessor">#undef JSON_HEDLEY_STATIC_CAST</span></div>
|
||
<div class="line"><a name="l22852"></a><span class="lineno">22852</span> <span class="preprocessor">#undef JSON_HEDLEY_STRINGIFY</span></div>
|
||
<div class="line"><a name="l22853"></a><span class="lineno">22853</span> <span class="preprocessor">#undef JSON_HEDLEY_STRINGIFY_EX</span></div>
|
||
<div class="line"><a name="l22854"></a><span class="lineno">22854</span> <span class="preprocessor">#undef JSON_HEDLEY_SUNPRO_VERSION</span></div>
|
||
<div class="line"><a name="l22855"></a><span class="lineno">22855</span> <span class="preprocessor">#undef JSON_HEDLEY_SUNPRO_VERSION_CHECK</span></div>
|
||
<div class="line"><a name="l22856"></a><span class="lineno">22856</span> <span class="preprocessor">#undef JSON_HEDLEY_TINYC_VERSION</span></div>
|
||
<div class="line"><a name="l22857"></a><span class="lineno">22857</span> <span class="preprocessor">#undef JSON_HEDLEY_TINYC_VERSION_CHECK</span></div>
|
||
<div class="line"><a name="l22858"></a><span class="lineno">22858</span> <span class="preprocessor">#undef JSON_HEDLEY_TI_VERSION</span></div>
|
||
<div class="line"><a name="l22859"></a><span class="lineno">22859</span> <span class="preprocessor">#undef JSON_HEDLEY_TI_VERSION_CHECK</span></div>
|
||
<div class="line"><a name="l22860"></a><span class="lineno">22860</span> <span class="preprocessor">#undef JSON_HEDLEY_UNAVAILABLE</span></div>
|
||
<div class="line"><a name="l22861"></a><span class="lineno">22861</span> <span class="preprocessor">#undef JSON_HEDLEY_UNLIKELY</span></div>
|
||
<div class="line"><a name="l22862"></a><span class="lineno">22862</span> <span class="preprocessor">#undef JSON_HEDLEY_UNPREDICTABLE</span></div>
|
||
<div class="line"><a name="l22863"></a><span class="lineno">22863</span> <span class="preprocessor">#undef JSON_HEDLEY_UNREACHABLE</span></div>
|
||
<div class="line"><a name="l22864"></a><span class="lineno">22864</span> <span class="preprocessor">#undef JSON_HEDLEY_UNREACHABLE_RETURN</span></div>
|
||
<div class="line"><a name="l22865"></a><span class="lineno">22865</span> <span class="preprocessor">#undef JSON_HEDLEY_VERSION</span></div>
|
||
<div class="line"><a name="l22866"></a><span class="lineno">22866</span> <span class="preprocessor">#undef JSON_HEDLEY_VERSION_DECODE_MAJOR</span></div>
|
||
<div class="line"><a name="l22867"></a><span class="lineno">22867</span> <span class="preprocessor">#undef JSON_HEDLEY_VERSION_DECODE_MINOR</span></div>
|
||
<div class="line"><a name="l22868"></a><span class="lineno">22868</span> <span class="preprocessor">#undef JSON_HEDLEY_VERSION_DECODE_REVISION</span></div>
|
||
<div class="line"><a name="l22869"></a><span class="lineno">22869</span> <span class="preprocessor">#undef JSON_HEDLEY_VERSION_ENCODE</span></div>
|
||
<div class="line"><a name="l22870"></a><span class="lineno">22870</span> <span class="preprocessor">#undef JSON_HEDLEY_WARNING</span></div>
|
||
<div class="line"><a name="l22871"></a><span class="lineno">22871</span> <span class="preprocessor">#undef JSON_HEDLEY_WARN_UNUSED_RESULT</span></div>
|
||
<div class="line"><a name="l22872"></a><span class="lineno">22872</span>  </div>
|
||
<div class="line"><a name="l22873"></a><span class="lineno">22873</span>  </div>
|
||
<div class="line"><a name="l22874"></a><span class="lineno">22874</span>  </div>
|
||
<div class="line"><a name="l22875"></a><span class="lineno">22875</span> <span class="preprocessor">#endif // INCLUDE_NLOHMANN_JSON_HPP_</span></div>
|
||
</div><!-- fragment --></div><!-- contents -->
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__reverse__iterator_html"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__reverse__iterator.html">nlohmann::detail::json_reverse_iterator</a></div><div class="ttdoc">a template for a reverse iterator class</div><div class="ttdef"><b>Definition:</b> json.hpp:9982</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1iter__impl_html_a49bf3e708a9c1c88c415011735962d06"><div class="ttname"><a href="classnlohmann_1_1detail_1_1iter__impl.html#a49bf3e708a9c1c88c415011735962d06">nlohmann::detail::iter_impl::operator-</a></div><div class="ttdeci">difference_type operator-(const iter_impl &other) const</div><div class="ttdoc">return difference</div><div class="ttdef"><b>Definition:</b> json.hpp:9864</div></div>
|
||
<div class="ttc" id="anamespacenlohmann_1_1detail_html_a3c45286b0a2f15ea0a756cb87a76cf9b"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#a3c45286b0a2f15ea0a756cb87a76cf9b">nlohmann::detail::int_to_string</a></div><div class="ttdeci">void int_to_string(string_type &target, std::size_t value)</div><div class="ttdef"><b>Definition:</b> json.hpp:3293</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1iteration__proxy_html_a379f86709d340c4ab1995539b8af623d"><div class="ttname"><a href="classnlohmann_1_1detail_1_1iteration__proxy.html#a379f86709d340c4ab1995539b8af623d">nlohmann::detail::iteration_proxy::begin</a></div><div class="ttdeci">iteration_proxy_value< IteratorType > begin() noexcept</div><div class="ttdoc">return iterator begin (needed for range-based for)</div><div class="ttdef"><b>Definition:</b> json.hpp:3397</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1primitive__iterator__t_html_aee01535df0b3b40137d9241029a9a203"><div class="ttname"><a href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#aee01535df0b3b40137d9241029a9a203">nlohmann::detail::primitive_iterator_t::operator+=</a></div><div class="ttdeci">primitive_iterator_t & operator+=(difference_type n) noexcept</div><div class="ttdef"><b>Definition:</b> json.hpp:9261</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1adl__serializer_html_a01b867bd5dce5249d4f7433b8f27def6"><div class="ttname"><a href="structnlohmann_1_1adl__serializer.html#a01b867bd5dce5249d4f7433b8f27def6">nlohmann::adl_serializer::to_json</a></div><div class="ttdeci">static auto to_json(BasicJsonType &j, ValueType &&val) noexcept(noexcept(::nlohmann::to_json(j, std::forward< ValueType >(val)))) -> decltype(::nlohmann::to_json(j, std::forward< ValueType >(val)), void())</div><div class="ttdoc">convert any value type to a JSON value</div><div class="ttdef"><b>Definition:</b> json.hpp:3827</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a1b0a4e60d56f1fe80501ed941e122892"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a1b0a4e60d56f1fe80501ed941e122892">nlohmann::basic_json::insert</a></div><div class="ttdeci">void insert(const_iterator first, const_iterator last)</div><div class="ttdoc">inserts elements</div><div class="ttdef"><b>Definition:</b> json.hpp:19910</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__dom__callback__parser_html_aac6d706967b2ecc2510e172577d8550b"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#aac6d706967b2ecc2510e172577d8550b">nlohmann::detail::json_sax_dom_callback_parser::parse_event_t</a></div><div class="ttdeci">typename BasicJsonType::parse_event_t parse_event_t</div><div class="ttdef"><b>Definition:</b> json.hpp:4644</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a068a16e76be178e83da6a192916923ed"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a068a16e76be178e83da6a192916923ed">nlohmann::basic_json::erase</a></div><div class="ttdeci">IteratorType erase(IteratorType pos)</div><div class="ttdoc">remove element given an iterator</div><div class="ttdef"><b>Definition:</b> json.hpp:18240</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_ab9d91cc9c3b62782b38d8f2158269937"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#ab9d91cc9c3b62782b38d8f2158269937">nlohmann::basic_json::get_to</a></div><div class="ttdeci">Array get_to(T(&v)[N]) const noexcept(noexcept(JSONSerializer< Array >::from_json(std::declval< const basic_json_t & >(), v)))</div><div class="ttdef"><b>Definition:</b> json.hpp:17283</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a88d6103cb3620410b35200ee8e313d97"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a88d6103cb3620410b35200ee8e313d97">nlohmann::basic_json::number_float_t</a></div><div class="ttdeci">NumberFloatType number_float_t</div><div class="ttdoc">a type for a number (floating-point)</div><div class="ttdef"><b>Definition:</b> json.hpp:15362</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1input__buffer__adapter_html_ae9e195b04f3551fafb0925aafba00124"><div class="ttname"><a href="classnlohmann_1_1detail_1_1input__buffer__adapter.html#ae9e195b04f3551fafb0925aafba00124">nlohmann::detail::input_buffer_adapter::get_character</a></div><div class="ttdeci">std::char_traits< char >::int_type get_character() noexcept override</div><div class="ttdoc">get a character [0,255] or std::char_traits<char>::eof().</div><div class="ttdef"><b>Definition:</b> json.hpp:4008</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1type__error_html"><div class="ttname"><a href="classnlohmann_1_1detail_1_1type__error.html">nlohmann::detail::type_error</a></div><div class="ttdoc">exception indicating executing a member function with a wrong type</div><div class="ttdef"><b>Definition:</b> json.hpp:2075</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a9d55e3e63b05e03a2b70cea3761f84cb"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a9d55e3e63b05e03a2b70cea3761f84cb">nlohmann::basic_json::operator[]</a></div><div class="ttdeci">const_reference operator[](const json_pointer &ptr) const</div><div class="ttdoc">access specified element via JSON Pointer</div><div class="ttdef"><b>Definition:</b> json.hpp:21899</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1primitive__iterator__t_html_ad26511012fc88f3ec5d9e1cb708732fd"><div class="ttname"><a href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#ad26511012fc88f3ec5d9e1cb708732fd">nlohmann::detail::primitive_iterator_t::operator++</a></div><div class="ttdeci">primitive_iterator_t & operator++() noexcept</div><div class="ttdef"><b>Definition:</b> json.hpp:9235</div></div>
|
||
<div class="ttc" id="anamespacenlohmann_1_1detail_html_a3603b59a17d1c5e15050743b847992f2"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#a3603b59a17d1c5e15050743b847992f2">nlohmann::detail::difference_type_t</a></div><div class="ttdeci">typename T::difference_type difference_type_t</div><div class="ttdef"><b>Definition:</b> json.hpp:2495</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp_html_a03682754b06ed4f30b263119eecc2d52"><div class="ttname"><a href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#a03682754b06ed4f30b263119eecc2d52">nlohmann::detail::dtoa_impl::diyfp::kPrecision</a></div><div class="ttdeci">static constexpr int kPrecision</div><div class="ttdef"><b>Definition:</b> json.hpp:12701</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1iteration__proxy__value_html_ada6b4e6d55d8ed7ac79e49a03e9d1fe2"><div class="ttname"><a href="classnlohmann_1_1detail_1_1iteration__proxy__value.html#ada6b4e6d55d8ed7ac79e49a03e9d1fe2">nlohmann::detail::iteration_proxy_value::difference_type</a></div><div class="ttdeci">std::ptrdiff_t difference_type</div><div class="ttdef"><b>Definition:</b> json.hpp:3300</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1input__stream__adapter_html_ae0760af923583de6354725e901d1869d"><div class="ttname"><a href="classnlohmann_1_1detail_1_1input__stream__adapter.html#ae0760af923583de6354725e901d1869d">nlohmann::detail::input_stream_adapter::get_character</a></div><div class="ttdeci">std::char_traits< char >::int_type get_character() override</div><div class="ttdoc">get a character [0,255] or std::char_traits<char>::eof().</div><div class="ttdef"><b>Definition:</b> json.hpp:3976</div></div>
|
||
<div class="ttc" id="ajson_8hpp_html_a0643bd74c2dc6f0e4e420b8190ea8f0f"><div class="ttname"><a href="json_8hpp.html#a0643bd74c2dc6f0e4e420b8190ea8f0f">NLOHMANN_BASIC_JSON_TPL_DECLARATION</a></div><div class="ttdeci">#define NLOHMANN_BASIC_JSON_TPL_DECLARATION</div><div class="ttdef"><b>Definition:</b> json.hpp:1814</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1binary__writer_html_aa0ab8d27fd88a33a2f801413ac4c7fbc"><div class="ttname"><a href="classnlohmann_1_1detail_1_1binary__writer.html#aa0ab8d27fd88a33a2f801413ac4c7fbc">nlohmann::detail::binary_writer::write_cbor</a></div><div class="ttdeci">void write_cbor(const BasicJsonType &j)</div><div class="ttdef"><b>Definition:</b> json.hpp:11357</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__ref_html_ae1adf5bcee8b6fa0c358710604fb1938"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__ref.html#ae1adf5bcee8b6fa0c358710604fb1938">nlohmann::detail::json_ref::json_ref</a></div><div class="ttdeci">json_ref(value_type &&value)</div><div class="ttdef"><b>Definition:</b> json.hpp:11106</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1iterator__types_3_01It_00_01void__t_3_01typename_01It_1_1difference_d2be8685966c97e00e99d4fd2366dc0b_html_aaaafbcd0573ec9cfc5d19411950dc1ac"><div class="ttname"><a href="structnlohmann_1_1detail_1_1iterator__types_3_01It_00_01void__t_3_01typename_01It_1_1difference_d2be8685966c97e00e99d4fd2366dc0b.html#aaaafbcd0573ec9cfc5d19411950dc1ac">nlohmann::detail::iterator_types< It, void_t< typename It::difference_type, typename It::value_type, typename It::pointer, typename It::reference, typename It::iterator_category > >::iterator_category</a></div><div class="ttdeci">typename It::iterator_category iterator_category</div><div class="ttdef"><b>Definition:</b> json.hpp:2291</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_ae797958b922732bf5fc01053d0659c1f"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#ae797958b922732bf5fc01053d0659c1f">nlohmann::basic_json::accept</a></div><div class="ttdeci">static bool accept(IteratorType first, IteratorType last)</div><div class="ttdef"><b>Definition:</b> json.hpp:20890</div></div>
|
||
<div class="ttc" id="ajson_8hpp_html_aeedd50a52e1ea565ceab84bb596ec07f"><div class="ttname"><a href="json_8hpp.html#aeedd50a52e1ea565ceab84bb596ec07f">JSON_HEDLEY_DIAGNOSTIC_POP</a></div><div class="ttdeci">#define JSON_HEDLEY_DIAGNOSTIC_POP</div><div class="ttdef"><b>Definition:</b> json.hpp:736</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1adl__serializer_html_a2c544585b8b1828a0f1eecd831d0496e"><div class="ttname"><a href="structnlohmann_1_1adl__serializer.html#a2c544585b8b1828a0f1eecd831d0496e">nlohmann::adl_serializer::from_json</a></div><div class="ttdeci">static auto from_json(BasicJsonType &&j, ValueType &val) noexcept(noexcept(::nlohmann::from_json(std::forward< BasicJsonType >(j), val))) -> decltype(::nlohmann::from_json(std::forward< BasicJsonType >(j), val), void())</div><div class="ttdoc">convert a JSON value to any value type</div><div class="ttdef"><b>Definition:</b> json.hpp:3810</div></div>
|
||
<div class="ttc" id="anamespacenlohmann_1_1detail_1_1dtoa__impl_html_a22b6e37654ac93c6d0d9c06ec1bf5ded"><div class="ttname"><a href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#a22b6e37654ac93c6d0d9c06ec1bf5ded">nlohmann::detail::dtoa_impl::compute_boundaries</a></div><div class="ttdeci">boundaries compute_boundaries(FloatType value)</div><div class="ttdef"><b>Definition:</b> json.hpp:12831</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1iter__impl_html_a6da3d2b34528aff328f3dcb513076dec"><div class="ttname"><a href="classnlohmann_1_1detail_1_1iter__impl.html#a6da3d2b34528aff328f3dcb513076dec">nlohmann::detail::iter_impl::operator-></a></div><div class="ttdeci">pointer operator->() const</div><div class="ttdoc">dereference the iterator</div><div class="ttdef"><b>Definition:</b> json.hpp:9583</div></div>
|
||
<div class="ttc" id="anamespacenlohmann_1_1detail_html_a80273cecc45765d7b2826ec931fbffdd"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#a80273cecc45765d7b2826ec931fbffdd">nlohmann::detail::start_array_function_t</a></div><div class="ttdeci">decltype(std::declval< T & >().start_array(std::declval< std::size_t >())) start_array_function_t</div><div class="ttdef"><b>Definition:</b> json.hpp:5066</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__dom__callback__parser_html_ad94e912a67c7b96158937236805b8b47"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#ad94e912a67c7b96158937236805b8b47">nlohmann::detail::json_sax_dom_callback_parser::string</a></div><div class="ttdeci">bool string(string_t &val)</div><div class="ttdef"><b>Definition:</b> json.hpp:4691</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1binary__writer_html_a2c2b2132ce56b3b45593374b622baa67"><div class="ttname"><a href="classnlohmann_1_1detail_1_1binary__writer.html#a2c2b2132ce56b3b45593374b622baa67">nlohmann::detail::binary_writer::to_char_type</a></div><div class="ttdeci">static constexpr CharType to_char_type(InputCharType x) noexcept</div><div class="ttdef"><b>Definition:</b> json.hpp:12614</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__ref_html_a98956ba676b1ae16b62346f9c4fb752e"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__ref.html#a98956ba676b1ae16b62346f9c4fb752e">nlohmann::detail::json_ref::operator=</a></div><div class="ttdeci">json_ref & operator=(const json_ref &)=delete</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1iteration__proxy__value_html_ab8e33bd01c285a1a80b737a1905ceb97"><div class="ttname"><a href="classnlohmann_1_1detail_1_1iteration__proxy__value.html#ab8e33bd01c285a1a80b737a1905ceb97">nlohmann::detail::iteration_proxy_value::value</a></div><div class="ttdeci">IteratorType::reference value() const</div><div class="ttdoc">return value of the iterator</div><div class="ttdef"><b>Definition:</b> json.hpp:3378</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1lexer_html_a3f313cdbe187cababfc5e06f0b69b098a9a9ffd53b6869d4eca271b1ed5b57fe8"><div class="ttname"><a href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098a9a9ffd53b6869d4eca271b1ed5b57fe8">nlohmann::detail::lexer::token_type::begin_object</a></div><div class="ttdeci">@ begin_object</div><div class="ttdoc">the character for object begin {</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a30a7cc24f2931c20ecae37ec4a5e901f"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a30a7cc24f2931c20ecae37ec4a5e901f">nlohmann::basic_json::insert</a></div><div class="ttdeci">iterator insert(const_iterator pos, size_type cnt, const basic_json &val)</div><div class="ttdoc">inserts elements</div><div class="ttdef"><b>Definition:</b> json.hpp:19768</div></div>
|
||
<div class="ttc" id="anamespacenlohmann_1_1detail_html_a85955b9c6dd31846e4b8e891f78614b6"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#a85955b9c6dd31846e4b8e891f78614b6">nlohmann::detail::get_arithmetic_value</a></div><div class="ttdeci">void get_arithmetic_value(const BasicJsonType &j, ArithmeticType &val)</div><div class="ttdef"><b>Definition:</b> json.hpp:2912</div></div>
|
||
<div class="ttc" id="anamespacenlohmann_html_a6ce645a0b8717757e096a5b5773b7a16"><div class="ttname"><a href="namespacenlohmann.html#a6ce645a0b8717757e096a5b5773b7a16">nlohmann::to_string</a></div><div class="ttdeci">NLOHMANN_BASIC_JSON_TPL_DECLARATION std::string to_string(const NLOHMANN_BASIC_JSON_TPL &j)</div><div class="ttdoc">user-defined to_string function for JSON values</div><div class="ttdef"><b>Definition:</b> json.hpp:22620</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__dom__parser_html_a851d965082d20a726138f5d0330dc7d8"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#a851d965082d20a726138f5d0330dc7d8">nlohmann::detail::json_sax_dom_parser::string</a></div><div class="ttdeci">bool string(string_t &val)</div><div class="ttdef"><b>Definition:</b> json.hpp:4508</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__ref_html_ae39e523218bf05cac3fb5b5b1cd5efb6"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__ref.html#ae39e523218bf05cac3fb5b5b1cd5efb6">nlohmann::detail::json_ref::moved_or_copied</a></div><div class="ttdeci">value_type moved_or_copied() const</div><div class="ttdef"><b>Definition:</b> json.hpp:11132</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1exception_html"><div class="ttname"><a href="classnlohmann_1_1detail_1_1exception.html">nlohmann::detail::exception</a></div><div class="ttdoc">general exception of the basic_json class</div><div class="ttdef"><b>Definition:</b> json.hpp:1864</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1is__sax__static__asserts_html"><div class="ttname"><a href="structnlohmann_1_1detail_1_1is__sax__static__asserts.html">nlohmann::detail::is_sax_static_asserts</a></div><div class="ttdef"><b>Definition:</b> json.hpp:5109</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1json__pointer_html_a649252bda4a2e75a0915b11a25d8bcc3"><div class="ttname"><a href="classnlohmann_1_1json__pointer.html#a649252bda4a2e75a0915b11a25d8bcc3">nlohmann::json_pointer::empty</a></div><div class="ttdeci">bool empty() const noexcept</div><div class="ttdoc">return whether pointer points to the root document</div><div class="ttdef"><b>Definition:</b> json.hpp:10391</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1has__from__json_html"><div class="ttname"><a href="structnlohmann_1_1detail_1_1has__from__json.html">nlohmann::detail::has_from_json</a></div><div class="ttdef"><b>Definition:</b> json.hpp:2520</div></div>
|
||
<div class="ttc" id="anamespacenlohmann_1_1detail_html_a1ed8fc6239da25abcaf681d30ace4985"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985">nlohmann::detail::value_t</a></div><div class="ttdeci">value_t</div><div class="ttdoc">the JSON type enumeration</div><div class="ttdef"><b>Definition:</b> json.hpp:2854</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1parser_html_a37ac88c864dda495f72cb62776b0bebea2063c1608d6e0baf80249c42e2be5804"><div class="ttname"><a href="classnlohmann_1_1detail_1_1parser.html#a37ac88c864dda495f72cb62776b0bebea2063c1608d6e0baf80249c42e2be5804">nlohmann::detail::parser::parse_event_t::value</a></div><div class="ttdeci">@ value</div><div class="ttdoc">the parser finished reading a JSON value</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_ab157adb4de8475b452da9ebf04f2de15"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#ab157adb4de8475b452da9ebf04f2de15">nlohmann::basic_json::at</a></div><div class="ttdeci">const_reference at(size_type idx) const</div><div class="ttdoc">access specified array element with bounds checking</div><div class="ttdef"><b>Definition:</b> json.hpp:17566</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_abac8af76067f1e8fdca9052882c74428"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#abac8af76067f1e8fdca9052882c74428">nlohmann::basic_json::is_number_integer</a></div><div class="ttdeci">constexpr bool is_number_integer() const noexcept</div><div class="ttdoc">return whether value is an integer number</div><div class="ttdef"><b>Definition:</b> json.hpp:16772</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1iter__impl_html_a867f7eb55091be31b013adb3e46816d3"><div class="ttname"><a href="classnlohmann_1_1detail_1_1iter__impl.html#a867f7eb55091be31b013adb3e46816d3">nlohmann::detail::iter_impl::iter_impl</a></div><div class="ttdeci">iter_impl(const iter_impl< typename std::remove_const< BasicJsonType >::type > &other) noexcept</div><div class="ttdoc">converting constructor</div><div class="ttdef"><b>Definition:</b> json.hpp:9456</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1iter__impl_html_a84e689fb581d651d130039f7cb81494a"><div class="ttname"><a href="classnlohmann_1_1detail_1_1iter__impl.html#a84e689fb581d651d130039f7cb81494a">nlohmann::detail::iter_impl::operator--</a></div><div class="ttdeci">iter_impl & operator--()</div><div class="ttdoc">pre-decrement (–it)</div><div class="ttdef"><b>Definition:</b> json.hpp:9671</div></div>
|
||
<div class="ttc" id="aclassstd_1_1tuple__element_3_01N_00_01_1_1nlohmann_1_1detail_1_1iteration__proxy__value_3_01IteratorType_01_4_01_4_html_ace1dfdb74841c2f58c064a50598188fd"><div class="ttname"><a href="classstd_1_1tuple__element_3_01N_00_01_1_1nlohmann_1_1detail_1_1iteration__proxy__value_3_01IteratorType_01_4_01_4.html#ace1dfdb74841c2f58c064a50598188fd">std::tuple_element< N, ::nlohmann::detail::iteration_proxy_value< IteratorType > >::type</a></div><div class="ttdeci">decltype(get< N >(std::declval< ::nlohmann::detail::iteration_proxy_value< IteratorType > >())) type</div><div class="ttdef"><b>Definition:</b> json.hpp:3448</div></div>
|
||
<div class="ttc" id="anamespacenlohmann_1_1detail_html_a5fff1e6dcaabd367d9b1109a5682f9d4"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#a5fff1e6dcaabd367d9b1109a5682f9d4">nlohmann::detail::start_object_function_t</a></div><div class="ttdeci">decltype(std::declval< T & >().start_object(std::declval< std::size_t >())) start_object_function_t</div><div class="ttdef"><b>Definition:</b> json.hpp:5055</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a3acba9c6ceb7214e565fe08c3ba5b352"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a3acba9c6ceb7214e565fe08c3ba5b352">nlohmann::basic_json::front</a></div><div class="ttdeci">reference front()</div><div class="ttdoc">access the first element</div><div class="ttdef"><b>Definition:</b> json.hpp:18129</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1iter__impl_html_a60f3b0a96cc0bff9a7e6ab84ca538a45"><div class="ttname"><a href="classnlohmann_1_1detail_1_1iter__impl.html#a60f3b0a96cc0bff9a7e6ab84ca538a45">nlohmann::detail::iter_impl::operator++</a></div><div class="ttdeci">const iter_impl operator++(int)</div><div class="ttdoc">post-increment (it++)</div><div class="ttdef"><b>Definition:</b> json.hpp:9617</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1iter__impl_html_a9a5cd7864a8f848ef107d3f5a330f5e7"><div class="ttname"><a href="classnlohmann_1_1detail_1_1iter__impl.html#a9a5cd7864a8f848ef107d3f5a330f5e7">nlohmann::detail::iter_impl::operator=</a></div><div class="ttdeci">iter_impl & operator=(const iter_impl< const BasicJsonType > &other) noexcept</div><div class="ttdoc">converting assignment</div><div class="ttdef"><b>Definition:</b> json.hpp:9444</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1iterator__traits_3_01T_01_5_00_01enable__if__t_3_01std_1_1is__object_3_01T_01_4_1_1value_01_4_01_4_html_a33ee9a1beb8ee099f989fd4af15178a5"><div class="ttname"><a href="structnlohmann_1_1detail_1_1iterator__traits_3_01T_01_5_00_01enable__if__t_3_01std_1_1is__object_3_01T_01_4_1_1value_01_4_01_4.html#a33ee9a1beb8ee099f989fd4af15178a5">nlohmann::detail::iterator_traits< T *, enable_if_t< std::is_object< T >::value > >::pointer</a></div><div class="ttdeci">T * pointer</div><div class="ttdef"><b>Definition:</b> json.hpp:2313</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_aeb988f5b2148875ed1c9cb32bec156c6"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#aeb988f5b2148875ed1c9cb32bec156c6">nlohmann::basic_json::to_bson</a></div><div class="ttdeci">static void to_bson(const basic_json &j, detail::output_adapter< char > o)</div><div class="ttdoc">Serializes the given JSON object j to BSON and forwards the corresponding BSON-representation to the ...</div><div class="ttdef"><b>Definition:</b> json.hpp:21411</div></div>
|
||
<div class="ttc" id="anamespacenlohmann_1_1detail_html_a5a76b60b26dc8c47256a996d18d967dfa567bc1d268f135496de3d5b946b691f3"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#a5a76b60b26dc8c47256a996d18d967dfa567bc1d268f135496de3d5b946b691f3">nlohmann::detail::error_handler_t::ignore</a></div><div class="ttdeci">@ ignore</div><div class="ttdoc">ignore invalid UTF-8 sequences</div></div>
|
||
<div class="ttc" id="anamespacenlohmann_1_1detail_html_a45ec87326503b8884b664a9ef23a6c99"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#a45ec87326503b8884b664a9ef23a6c99">nlohmann::detail::boolean_function_t</a></div><div class="ttdeci">decltype(std::declval< T & >().boolean(std::declval< bool >())) boolean_function_t</div><div class="ttdef"><b>Definition:</b> json.hpp:5035</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1array_01_4_html_a110f50fd5378da876d9a6d6a8d945e37"><div class="ttname"><a href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1array_01_4.html#a110f50fd5378da876d9a6d6a8d945e37">nlohmann::detail::external_constructor< value_t::array >::construct</a></div><div class="ttdeci">static void construct(BasicJsonType &j, const CompatibleArrayType &arr)</div><div class="ttdef"><b>Definition:</b> json.hpp:3572</div></div>
|
||
<div class="ttc" id="anamespacenlohmann_1_1detail_1_1dtoa__impl_html_a5bc841e0bee12fd6489d49cf7bd07bb4"><div class="ttname"><a href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#a5bc841e0bee12fd6489d49cf7bd07bb4">nlohmann::detail::dtoa_impl::grisu2_round</a></div><div class="ttdeci">void grisu2_round(char *buf, int len, std::uint64_t dist, std::uint64_t delta, std::uint64_t rest, std::uint64_t ten_k)</div><div class="ttdef"><b>Definition:</b> json.hpp:13190</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_ae095578e03df97c5b3991787f1056374"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#ae095578e03df97c5b3991787f1056374">nlohmann::basic_json::array_t</a></div><div class="ttdeci">ArrayType< basic_json, AllocatorType< basic_json > > array_t</div><div class="ttdoc">a type for an array</div><div class="ttdef"><b>Definition:</b> json.hpp:15072</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__dom__callback__parser_html_a0cc4a5192fe9b803276edb831b6099fa"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a0cc4a5192fe9b803276edb831b6099fa">nlohmann::detail::json_sax_dom_callback_parser::key</a></div><div class="ttdeci">bool key(string_t &val)</div><div class="ttdef"><b>Definition:</b> json.hpp:4715</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_ab5dfd9a2b2663b219641cb7fe59b6da2"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#ab5dfd9a2b2663b219641cb7fe59b6da2">nlohmann::basic_json::basic_json</a></div><div class="ttdeci">basic_json(initializer_list_t init, bool type_deduction=true, value_t manual_type=value_t::array)</div><div class="ttdoc">create a container (array or object) from an initializer list</div><div class="ttdef"><b>Definition:</b> json.hpp:15999</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1output__string__adapter_html_a2d76cc6c88ddbc196a63fcfcac9ee7d1"><div class="ttname"><a href="classnlohmann_1_1detail_1_1output__string__adapter.html#a2d76cc6c88ddbc196a63fcfcac9ee7d1">nlohmann::detail::output_string_adapter::write_character</a></div><div class="ttdeci">void write_character(CharType c) override</div><div class="ttdef"><b>Definition:</b> json.hpp:11266</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1detector_3_01Default_00_01void__t_3_01Op_3_01Args_8_8_8_01_4_01_4_00_01Op_00_01Args_8_8_8_01_4_html_a5afd6a40e94dde21d120ac646468c495"><div class="ttname"><a href="structnlohmann_1_1detail_1_1detector_3_01Default_00_01void__t_3_01Op_3_01Args_8_8_8_01_4_01_4_00_01Op_00_01Args_8_8_8_01_4.html#a5afd6a40e94dde21d120ac646468c495">nlohmann::detail::detector< Default, void_t< Op< Args... > >, Op, Args... >::type</a></div><div class="ttdeci">Op< Args... > type</div><div class="ttdef"><b>Definition:</b> json.hpp:2360</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_ab0e886db6e9fa91ff9fd853333fed05b"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#ab0e886db6e9fa91ff9fd853333fed05b">nlohmann::basic_json::operator!=</a></div><div class="ttdeci">friend bool operator!=(const ScalarType lhs, const_reference rhs) noexcept</div><div class="ttdoc">comparison: not equal</div><div class="ttdef"><b>Definition:</b> json.hpp:20341</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1input__stream__adapter_html_a2d71eb469267abd864f765481d1e823f"><div class="ttname"><a href="classnlohmann_1_1detail_1_1input__stream__adapter.html#a2d71eb469267abd864f765481d1e823f">nlohmann::detail::input_stream_adapter::~input_stream_adapter</a></div><div class="ttdeci">~input_stream_adapter() override</div><div class="ttdef"><b>Definition:</b> json.hpp:3956</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__acceptor_html_a919645fd1827a561a994d70a435e3f19"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#a919645fd1827a561a994d70a435e3f19">nlohmann::detail::json_sax_acceptor::end_object</a></div><div class="ttdeci">bool end_object()</div><div class="ttdef"><b>Definition:</b> json.hpp:4988</div></div>
|
||
<div class="ttc" id="anamespacenlohmann_1_1detail_html_a6cca370ac6c99294dbe4fe24716a57dd"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#a6cca370ac6c99294dbe4fe24716a57dd">nlohmann::detail::to_chars</a></div><div class="ttdeci">JSON_HEDLEY_RETURNS_NON_NULL char * to_chars(char *first, const char *last, FloatType value)</div><div class="ttdoc">generates a decimal representation of the floating-point number value in [first, last).</div><div class="ttdef"><b>Definition:</b> json.hpp:13709</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1json__sax_html_a32028cc056ae0f43aaae331cdbbbf856"><div class="ttname"><a href="structnlohmann_1_1json__sax.html#a32028cc056ae0f43aaae331cdbbbf856">nlohmann::json_sax::number_unsigned_t</a></div><div class="ttdeci">typename BasicJsonType::number_unsigned_t number_unsigned_t</div><div class="ttdoc">type for unsigned integers</div><div class="ttdef"><b>Definition:</b> json.hpp:4338</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__dom__callback__parser_html_a5255b98ba8282e3625968f91cff9d3d0"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a5255b98ba8282e3625968f91cff9d3d0">nlohmann::detail::json_sax_dom_callback_parser::start_array</a></div><div class="ttdeci">bool start_array(std::size_t len)</div><div class="ttdef"><b>Definition:</b> json.hpp:4761</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a7999ee3a69a4979d92e98ab1e88c8759"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a7999ee3a69a4979d92e98ab1e88c8759">nlohmann::basic_json::operator<</a></div><div class="ttdeci">friend bool operator<(const_reference lhs, const ScalarType rhs) noexcept</div><div class="ttdoc">comparison: less than</div><div class="ttdef"><b>Definition:</b> json.hpp:20448</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1conjunction_html"><div class="ttname"><a href="structnlohmann_1_1detail_1_1conjunction.html">nlohmann::detail::conjunction</a></div><div class="ttdef"><b>Definition:</b> json.hpp:2799</div></div>
|
||
<div class="ttc" id="anamespacenlohmann_1_1detail_html_a5a76b60b26dc8c47256a996d18d967dfa9dde360102c103867bd2f45872f1129c"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#a5a76b60b26dc8c47256a996d18d967dfa9dde360102c103867bd2f45872f1129c">nlohmann::detail::error_handler_t::replace</a></div><div class="ttdeci">@ replace</div><div class="ttdoc">replace invalid UTF-8 sequences with U+FFFD</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1lexer_html_a3f313cdbe187cababfc5e06f0b69b098a85cc1a37b0aaa52de40e72f0ed4e0c0d"><div class="ttname"><a href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098a85cc1a37b0aaa52de40e72f0ed4e0c0d">nlohmann::detail::lexer::token_type::literal_true</a></div><div class="ttdeci">@ literal_true</div><div class="ttdoc">the true literal</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1iter__impl_html_a2b592605b63ae7f5401996ffa3b14393"><div class="ttname"><a href="classnlohmann_1_1detail_1_1iter__impl.html#a2b592605b63ae7f5401996ffa3b14393">nlohmann::detail::iter_impl::operator==</a></div><div class="ttdeci">bool operator==(const iter_impl &other) const</div><div class="ttdoc">comparison: equal</div><div class="ttdef"><b>Definition:</b> json.hpp:9703</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1has__from__json_3_01BasicJsonType_00_01T_00_01enable__if__t_3_01not_5e786a91cad76ed1c14f425887b41640_html_ab17cea1be422b8985fc19942809560ed"><div class="ttname"><a href="structnlohmann_1_1detail_1_1has__from__json_3_01BasicJsonType_00_01T_00_01enable__if__t_3_01not_5e786a91cad76ed1c14f425887b41640.html#ab17cea1be422b8985fc19942809560ed">nlohmann::detail::has_from_json< BasicJsonType, T, enable_if_t< not is_basic_json< T >::value > >::serializer</a></div><div class="ttdeci">typename BasicJsonType::template json_serializer< T, void > serializer</div><div class="ttdef"><b>Definition:</b> json.hpp:2526</div></div>
|
||
<div class="ttc" id="anamespacenlohmann_1_1detail_html_a9c1795c148875722f8482d39e0eb9364"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#a9c1795c148875722f8482d39e0eb9364">nlohmann::detail::mapped_type_t</a></div><div class="ttdeci">typename T::mapped_type mapped_type_t</div><div class="ttdef"><b>Definition:</b> json.hpp:2486</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1make__void_html_a8961e24ae3b2cb65ec47d1ce805d94e4"><div class="ttname"><a href="structnlohmann_1_1detail_1_1make__void.html#a8961e24ae3b2cb65ec47d1ce805d94e4">nlohmann::detail::make_void::type</a></div><div class="ttdeci">void type</div><div class="ttdef"><b>Definition:</b> json.hpp:2265</div></div>
|
||
<div class="ttc" id="ajson_8hpp_html_af5c84b7d1a43361bdc14cc6941078000"><div class="ttname"><a href="json_8hpp.html#af5c84b7d1a43361bdc14cc6941078000">JSON_HEDLEY_PURE</a></div><div class="ttdeci">#define JSON_HEDLEY_PURE</div><div class="ttdef"><b>Definition:</b> json.hpp:1170</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__acceptor_html_a822bbca11a9fea0aa337018e351755f5"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#a822bbca11a9fea0aa337018e351755f5">nlohmann::detail::json_sax_acceptor::start_object</a></div><div class="ttdeci">bool start_object(std::size_t=std::size_t(-1))</div><div class="ttdef"><b>Definition:</b> json.hpp:4978</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__ref_html_aa3100e41472dba02ab78ccc1607e44ab"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__ref.html#aa3100e41472dba02ab78ccc1607e44ab">nlohmann::detail::json_ref::operator*</a></div><div class="ttdeci">value_type const & operator*() const</div><div class="ttdef"><b>Definition:</b> json.hpp:11141</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1json__sax_html_a60287e3bd85f489e04c83f7e3b76e613"><div class="ttname"><a href="structnlohmann_1_1json__sax.html#a60287e3bd85f489e04c83f7e3b76e613">nlohmann::json_sax::parse_error</a></div><div class="ttdeci">virtual bool parse_error(std::size_t position, const std::string &last_token, const detail::exception &ex)=0</div><div class="ttdoc">a parse error occurred</div></div>
|
||
<div class="ttc" id="ajson_8hpp_html_a8df7de76ab3c9445f46f6994ec205bcd"><div class="ttname"><a href="json_8hpp.html#a8df7de76ab3c9445f46f6994ec205bcd">JSON_HEDLEY_UNLIKELY</a></div><div class="ttdeci">#define JSON_HEDLEY_UNLIKELY(expr)</div><div class="ttdef"><b>Definition:</b> json.hpp:1124</div></div>
|
||
<div class="ttc" id="anamespacenlohmann_1_1detail_html_a1ed8fc6239da25abcaf681d30ace4985a37a6259cc0c1dae299a7866489dff0bd"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a37a6259cc0c1dae299a7866489dff0bd">nlohmann::detail::value_t::null</a></div><div class="ttdeci">@ null</div><div class="ttdoc">null value</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1object_01_4_html_a1e044961affbd6417386d6e9f1d545e9"><div class="ttname"><a href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1object_01_4.html#a1e044961affbd6417386d6e9f1d545e9">nlohmann::detail::external_constructor< value_t::object >::construct</a></div><div class="ttdeci">static void construct(BasicJsonType &j, typename BasicJsonType::object_t &&obj)</div><div class="ttdef"><b>Definition:</b> json.hpp:3621</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1json__sax_html_ad9b253083e0509923ba195136f49face"><div class="ttname"><a href="structnlohmann_1_1json__sax.html#ad9b253083e0509923ba195136f49face">nlohmann::json_sax::number_unsigned</a></div><div class="ttdeci">virtual bool number_unsigned(number_unsigned_t val)=0</div><div class="ttdoc">an unsigned integer number was read</div></div>
|
||
<div class="ttc" id="anamespacenlohmann_1_1detail_1_1dtoa__impl_html_ab441f2761e33839ca48bc2225e14a2a9"><div class="ttname"><a href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#ab441f2761e33839ca48bc2225e14a2a9">nlohmann::detail::dtoa_impl::format_buffer</a></div><div class="ttdeci">JSON_HEDLEY_RETURNS_NON_NULL char * format_buffer(char *buf, int len, int decimal_exponent, int min_exp, int max_exp)</div><div class="ttdoc">prettify v = buf * 10^decimal_exponent</div><div class="ttdef"><b>Definition:</b> json.hpp:13624</div></div>
|
||
<div class="ttc" id="anamespacenlohmann_1_1detail_1_1dtoa__impl_html_a9b899c72b0e1e3dd46d75c2b4e6bcdfb"><div class="ttname"><a href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#a9b899c72b0e1e3dd46d75c2b4e6bcdfb">nlohmann::detail::dtoa_impl::grisu2_digit_gen</a></div><div class="ttdeci">void grisu2_digit_gen(char *buffer, int &length, int &decimal_exponent, diyfp M_minus, diyfp w, diyfp M_plus)</div><div class="ttdef"><b>Definition:</b> json.hpp:13231</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp_html"><div class="ttname"><a href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html">nlohmann::detail::dtoa_impl::diyfp</a></div><div class="ttdef"><b>Definition:</b> json.hpp:12699</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1wide__string__input__adapter_html_abb62b34cf77e557ce5321b7f2490c3b0"><div class="ttname"><a href="classnlohmann_1_1detail_1_1wide__string__input__adapter.html#abb62b34cf77e557ce5321b7f2490c3b0">nlohmann::detail::wide_string_input_adapter::get_character</a></div><div class="ttdeci">std::char_traits< char >::int_type get_character() noexcept override</div><div class="ttdoc">get a character [0,255] or std::char_traits<char>::eof().</div><div class="ttdef"><b>Definition:</b> json.hpp:4158</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__reverse__iterator_html_aabf172b436988e2edde22f13f27caaed"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#aabf172b436988e2edde22f13f27caaed">nlohmann::detail::json_reverse_iterator::operator+</a></div><div class="ttdeci">json_reverse_iterator operator+(difference_type i) const</div><div class="ttdoc">add to iterator</div><div class="ttdef"><b>Definition:</b> json.hpp:10029</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1lexer_html_a3f313cdbe187cababfc5e06f0b69b098a456e19aeafa334241c7ff3f589547f9d"><div class="ttname"><a href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098a456e19aeafa334241c7ff3f589547f9d">nlohmann::detail::lexer::token_type::parse_error</a></div><div class="ttdeci">@ parse_error</div><div class="ttdoc">indicating a parse error</div></div>
|
||
<div class="ttc" id="anamespacenlohmann_1_1detail_html_a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985aa8cfde6331bd59eb2ac96f8911c4b666">nlohmann::detail::value_t::object</a></div><div class="ttdeci">@ object</div><div class="ttdoc">object (unordered set of name/value pairs)</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__dom__parser_html_afc50fee0a92ce84afb84041ebbdfba80"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#afc50fee0a92ce84afb84041ebbdfba80">nlohmann::detail::json_sax_dom_parser::json_sax_dom_parser</a></div><div class="ttdeci">json_sax_dom_parser(BasicJsonType &r, const bool allow_exceptions_=true)</div><div class="ttdef"><b>Definition:</b> json.hpp:4467</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__dom__parser_html_ad8da3aad0147b18b3cb76868480300fe"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#ad8da3aad0147b18b3cb76868480300fe">nlohmann::detail::json_sax_dom_parser::number_float_t</a></div><div class="ttdeci">typename BasicJsonType::number_float_t number_float_t</div><div class="ttdef"><b>Definition:</b> json.hpp:4459</div></div>
|
||
<div class="ttc" id="anamespacenlohmann_1_1detail_html_aa554fc6a11519e4f347deb25a9f0db40a0b6879b186bfb2b1ec65d2460e4eccd4"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a0b6879b186bfb2b1ec65d2460e4eccd4">nlohmann::detail::input_format_t::bson</a></div><div class="ttdeci">@ bson</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1lexer_html_a4aef7e72e539be04e139c34872421f2a"><div class="ttname"><a href="classnlohmann_1_1detail_1_1lexer.html#a4aef7e72e539be04e139c34872421f2a">nlohmann::detail::lexer::get_token_string</a></div><div class="ttdeci">std::string get_token_string() const</div><div class="ttdef"><b>Definition:</b> json.hpp:8488</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a31f84ee15c4690ff705bed74736d04c6"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a31f84ee15c4690ff705bed74736d04c6">nlohmann::basic_json::object</a></div><div class="ttdeci">static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json object(initializer_list_t init={})</div><div class="ttdoc">explicitly create an object from an initializer list</div><div class="ttdef"><b>Definition:</b> json.hpp:16133</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__dom__parser_html_afd4d961ab2a6b01cbe6e840f7fb90cdc"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#afd4d961ab2a6b01cbe6e840f7fb90cdc">nlohmann::detail::json_sax_dom_parser::string_t</a></div><div class="ttdeci">typename BasicJsonType::string_t string_t</div><div class="ttdef"><b>Definition:</b> json.hpp:4460</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1file__input__adapter_html_af96552e4560be08b201e62a36e6b6189"><div class="ttname"><a href="classnlohmann_1_1detail_1_1file__input__adapter.html#af96552e4560be08b201e62a36e6b6189">nlohmann::detail::file_input_adapter::~file_input_adapter</a></div><div class="ttdeci">~file_input_adapter() override=default</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1detector_3_01Default_00_01void__t_3_01Op_3_01Args_8_8_8_01_4_01_4_00_01Op_00_01Args_8_8_8_01_4_html_ab748f9f00bb31bee4978a033589f8c85"><div class="ttname"><a href="structnlohmann_1_1detail_1_1detector_3_01Default_00_01void__t_3_01Op_3_01Args_8_8_8_01_4_01_4_00_01Op_00_01Args_8_8_8_01_4.html#ab748f9f00bb31bee4978a033589f8c85">nlohmann::detail::detector< Default, void_t< Op< Args... > >, Op, Args... >::value_t</a></div><div class="ttdeci">std::true_type value_t</div><div class="ttdef"><b>Definition:</b> json.hpp:2359</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1position__t_html"><div class="ttname"><a href="structnlohmann_1_1detail_1_1position__t.html">nlohmann::detail::position_t</a></div><div class="ttdoc">struct to capture the start position of the current token</div><div class="ttdef"><b>Definition:</b> json.hpp:89</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1serializer_html_a95460ebd1a535a543e5a0ec52e00f48b"><div class="ttname"><a href="classnlohmann_1_1detail_1_1serializer.html#a95460ebd1a535a543e5a0ec52e00f48b">nlohmann::detail::serializer::dump</a></div><div class="ttdeci">void dump(const BasicJsonType &val, const bool pretty_print, const bool ensure_ascii, const unsigned int indent_step, const unsigned int current_indent=0)</div><div class="ttdoc">internal implementation of the serialization function</div><div class="ttdef"><b>Definition:</b> json.hpp:13837</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1dtoa__impl_1_1boundaries_html_ad1668c60aeade5f2557fafed8b8aee1a"><div class="ttname"><a href="structnlohmann_1_1detail_1_1dtoa__impl_1_1boundaries.html#ad1668c60aeade5f2557fafed8b8aee1a">nlohmann::detail::dtoa_impl::boundaries::w</a></div><div class="ttdeci">diyfp w</div><div class="ttdef"><b>Definition:</b> json.hpp:12819</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1is__complete__type_html"><div class="ttname"><a href="structnlohmann_1_1detail_1_1is__complete__type.html">nlohmann::detail::is_complete_type</a></div><div class="ttdef"><b>Definition:</b> json.hpp:2589</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1binary__writer_html_ab77aa48692bd4e64e4f051ce6aeb6d2d"><div class="ttname"><a href="classnlohmann_1_1detail_1_1binary__writer.html#ab77aa48692bd4e64e4f051ce6aeb6d2d">nlohmann::detail::binary_writer::to_char_type</a></div><div class="ttdeci">static constexpr CharType to_char_type(std::uint8_t x) noexcept</div><div class="ttdef"><b>Definition:</b> json.hpp:12585</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1priority__tag_html"><div class="ttname"><a href="structnlohmann_1_1detail_1_1priority__tag.html">nlohmann::detail::priority_tag</a></div><div class="ttdef"><b>Definition:</b> json.hpp:2228</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a09ca1dc273d226afe0ca83a9d7438d9c"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a09ca1dc273d226afe0ca83a9d7438d9c">nlohmann::basic_json::to_msgpack</a></div><div class="ttdeci">static std::vector< uint8_t > to_msgpack(const basic_json &j)</div><div class="ttdoc">create a MessagePack serialization of a given JSON value</div><div class="ttdef"><b>Definition:</b> json.hpp:21214</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_ac6946dffeb3be5aa173645f0467a44b3"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#ac6946dffeb3be5aa173645f0467a44b3">nlohmann::basic_json::operator[]</a></div><div class="ttdeci">reference operator[](const json_pointer &ptr)</div><div class="ttdoc">access specified element via JSON Pointer</div><div class="ttdef"><b>Definition:</b> json.hpp:21871</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_ae625a0647486edf2bb38c849ca67f934"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#ae625a0647486edf2bb38c849ca67f934">nlohmann::basic_json::find</a></div><div class="ttdeci">const_iterator find(KeyT &&key) const</div><div class="ttdoc">find an element in a JSON object</div><div class="ttdef"><b>Definition:</b> json.hpp:18537</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1other__error_html_a87e8ab894e8c85c0d97a0919782d3683"><div class="ttname"><a href="classnlohmann_1_1detail_1_1other__error.html#a87e8ab894e8c85c0d97a0919782d3683">nlohmann::detail::other_error::create</a></div><div class="ttdeci">static other_error create(int id_, const std::string &what_arg)</div><div class="ttdef"><b>Definition:</b> json.hpp:2163</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1json__pointer_html_a7f32d7c62841f0c4a6784cf741a6e4f8"><div class="ttname"><a href="classnlohmann_1_1json__pointer.html#a7f32d7c62841f0c4a6784cf741a6e4f8">nlohmann::json_pointer::json_pointer</a></div><div class="ttdeci">json_pointer(const std::string &s="")</div><div class="ttdoc">create JSON pointer</div><div class="ttdef"><b>Definition:</b> json.hpp:10120</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a9a06d1efd50a00f4889f831f851ce124"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a9a06d1efd50a00f4889f831f851ce124">nlohmann::basic_json::basic_json</a></div><div class="ttdeci">basic_json(basic_json &&other) noexcept</div><div class="ttdoc">move constructor</div><div class="ttdef"><b>Definition:</b> json.hpp:16432</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1input__buffer__adapter_html_a0871125057d993684ba8e45fb2b8a76b"><div class="ttname"><a href="classnlohmann_1_1detail_1_1input__buffer__adapter.html#a0871125057d993684ba8e45fb2b8a76b">nlohmann::detail::input_buffer_adapter::operator=</a></div><div class="ttdeci">input_buffer_adapter & operator=(input_buffer_adapter &)=delete</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a0d74bfcf65662f1d66d14c34b0027098"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a0d74bfcf65662f1d66d14c34b0027098">nlohmann::basic_json::count</a></div><div class="ttdeci">size_type count(KeyT &&key) const</div><div class="ttdoc">returns the number of occurrences of a key in a JSON object</div><div class="ttdef"><b>Definition:</b> json.hpp:18571</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a8dba7b7d2f38e6b0c614030aa43983f6"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a8dba7b7d2f38e6b0c614030aa43983f6">nlohmann::basic_json::cend</a></div><div class="ttdeci">const_iterator cend() const noexcept</div><div class="ttdoc">returns a const iterator to one past the last element</div><div class="ttdef"><b>Definition:</b> json.hpp:18785</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_af245c2b6714d76ed99a2d02f2596d596"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#af245c2b6714d76ed99a2d02f2596d596">nlohmann::basic_json::operator+=</a></div><div class="ttdeci">reference operator+=(initializer_list_t init)</div><div class="ttdoc">add an object to an object</div><div class="ttdef"><b>Definition:</b> json.hpp:19566</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a4f0f5dd42b2987ff20306ed78bd31d1d"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a4f0f5dd42b2987ff20306ed78bd31d1d">nlohmann::basic_json::begin</a></div><div class="ttdeci">const_iterator begin() const noexcept</div><div class="ttdoc">returns a const iterator to the first element</div><div class="ttdef"><b>Definition:</b> json.hpp:18684</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a8faa039ca82427ed29c486ffd00600c3"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a8faa039ca82427ed29c486ffd00600c3">nlohmann::basic_json::is_null</a></div><div class="ttdeci">constexpr bool is_null() const noexcept</div><div class="ttdoc">return whether value is null</div><div class="ttdef"><b>Definition:</b> json.hpp:16691</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1lexer_html_abf5143501435f9f79898c1ff238c2622"><div class="ttname"><a href="classnlohmann_1_1detail_1_1lexer.html#abf5143501435f9f79898c1ff238c2622">nlohmann::detail::lexer::get_position</a></div><div class="ttdeci">constexpr position_t get_position() const noexcept</div><div class="ttdoc">return position of last read token</div><div class="ttdef"><b>Definition:</b> json.hpp:8480</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__acceptor_html_a41876b17c0e8bdb55580eaf5e4e2ded8"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#a41876b17c0e8bdb55580eaf5e4e2ded8">nlohmann::detail::json_sax_acceptor::number_integer_t</a></div><div class="ttdeci">typename BasicJsonType::number_integer_t number_integer_t</div><div class="ttdef"><b>Definition:</b> json.hpp:4943</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1out__of__range_html"><div class="ttname"><a href="classnlohmann_1_1detail_1_1out__of__range.html">nlohmann::detail::out_of_range</a></div><div class="ttdoc">exception indicating access out of the defined range</div><div class="ttdef"><b>Definition:</b> json.hpp:2122</div></div>
|
||
<div class="ttc" id="anamespacenlohmann_1_1detail_html_a7ac5b8ef0363101275a2827b3b117dcf"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#a7ac5b8ef0363101275a2827b3b117dcf">nlohmann::detail::detected_or_t</a></div><div class="ttdeci">typename detected_or< Default, Op, Args... >::type detected_or_t</div><div class="ttdef"><b>Definition:</b> json.hpp:2373</div></div>
|
||
<div class="ttc" id="ajson_8hpp_html_a6954bec49ed2a2dfb938c1131c82740a"><div class="ttname"><a href="json_8hpp.html#a6954bec49ed2a2dfb938c1131c82740a">JSON_CATCH</a></div><div class="ttdeci">#define JSON_CATCH(exception)</div><div class="ttdef"><b>Definition:</b> json.hpp:1756</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a7479d686148c26e252781bb32aa5d5c9"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a7479d686148c26e252781bb32aa5d5c9">nlohmann::basic_json::at</a></div><div class="ttdeci">const_reference at(const json_pointer &ptr) const</div><div class="ttdoc">access specified element via JSON Pointer</div><div class="ttdef"><b>Definition:</b> json.hpp:21985</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1detector_html_a5a132aab543d1706e2439268faf8d487"><div class="ttname"><a href="structnlohmann_1_1detail_1_1detector.html#a5a132aab543d1706e2439268faf8d487">nlohmann::detail::detector::value_t</a></div><div class="ttdeci">std::false_type value_t</div><div class="ttdef"><b>Definition:</b> json.hpp:2352</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1array_01_4_html_a50474d6624957a630a1d398cac1e7bfa"><div class="ttname"><a href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1array_01_4.html#a50474d6624957a630a1d398cac1e7bfa">nlohmann::detail::external_constructor< value_t::array >::construct</a></div><div class="ttdeci">static void construct(BasicJsonType &j, typename BasicJsonType::array_t &&arr)</div><div class="ttdef"><b>Definition:</b> json.hpp:3562</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__dom__parser_html_a7d3bf1f361ebb817c694ba45b3814fa6"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#a7d3bf1f361ebb817c694ba45b3814fa6">nlohmann::detail::json_sax_dom_parser::parse_error</a></div><div class="ttdeci">bool parse_error(std::size_t, const std::string &, const detail::exception &ex)</div><div class="ttdef"><b>Definition:</b> json.hpp:4559</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1invalid__iterator_html"><div class="ttname"><a href="classnlohmann_1_1detail_1_1invalid__iterator.html">nlohmann::detail::invalid_iterator</a></div><div class="ttdoc">exception indicating errors with iterators</div><div class="ttdef"><b>Definition:</b> json.hpp:2021</div></div>
|
||
<div class="ttc" id="ajson_8hpp_html_a5478b7564e65634cc69432ed3cb6490e"><div class="ttname"><a href="json_8hpp.html#a5478b7564e65634cc69432ed3cb6490e">JSON_INTERNAL_CATCH</a></div><div class="ttdeci">#define JSON_INTERNAL_CATCH(exception)</div><div class="ttdef"><b>Definition:</b> json.hpp:1757</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a8c9d932353e1ab98a7dc2fc27e002031"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a8c9d932353e1ab98a7dc2fc27e002031">nlohmann::basic_json::swap</a></div><div class="ttdeci">void swap(reference other) noexcept(std::is_nothrow_move_constructible< value_t >::value and std::is_nothrow_move_assignable< value_t >::value and std::is_nothrow_move_constructible< json_value >::value and std::is_nothrow_move_assignable< json_value >::value)</div><div class="ttdoc">exchanges the values</div><div class="ttdef"><b>Definition:</b> json.hpp:20054</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__dom__callback__parser_html_a00e7d95d82d5d8a43421526a42a8eabc"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a00e7d95d82d5d8a43421526a42a8eabc">nlohmann::detail::json_sax_dom_callback_parser::string_t</a></div><div class="ttdeci">typename BasicJsonType::string_t string_t</div><div class="ttdef"><b>Definition:</b> json.hpp:4642</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_ac223d5560c2b05a208c88de67376c5f2"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#ac223d5560c2b05a208c88de67376c5f2">nlohmann::basic_json::reverse_iterator</a></div><div class="ttdeci">json_reverse_iterator< typename basic_json::iterator > reverse_iterator</div><div class="ttdoc">a reverse iterator for a basic_json container</div><div class="ttdef"><b>Definition:</b> json.hpp:14824</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1input__adapter__protocol_html_a92dac74def4ac5adacd0684088bd4082"><div class="ttname"><a href="structnlohmann_1_1detail_1_1input__adapter__protocol.html#a92dac74def4ac5adacd0684088bd4082">nlohmann::detail::input_adapter_protocol::~input_adapter_protocol</a></div><div class="ttdeci">virtual ~input_adapter_protocol()=default</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1input__stream__adapter_html"><div class="ttname"><a href="classnlohmann_1_1detail_1_1input__stream__adapter.html">nlohmann::detail::input_stream_adapter</a></div><div class="ttdef"><b>Definition:</b> json.hpp:3953</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a2f8484d69c55d8f2a9697a7bec29362a"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a2f8484d69c55d8f2a9697a7bec29362a">nlohmann::basic_json::erase</a></div><div class="ttdeci">size_type erase(const typename object_t::key_type &key)</div><div class="ttdoc">remove element from a JSON object given a key</div><div class="ttdef"><b>Definition:</b> json.hpp:18432</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1exception_html_abf41a7e9178356314082284e6cfea278"><div class="ttname"><a href="classnlohmann_1_1detail_1_1exception.html#abf41a7e9178356314082284e6cfea278">nlohmann::detail::exception::name</a></div><div class="ttdeci">static std::string name(const std::string &ename, int id_)</div><div class="ttdef"><b>Definition:</b> json.hpp:1881</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1out__of__range_html_a3f6d82a6f967c4728a1ec735a7867073"><div class="ttname"><a href="classnlohmann_1_1detail_1_1out__of__range.html#a3f6d82a6f967c4728a1ec735a7867073">nlohmann::detail::out_of_range::create</a></div><div class="ttdeci">static out_of_range create(int id_, const std::string &what_arg)</div><div class="ttdef"><b>Definition:</b> json.hpp:2125</div></div>
|
||
<div class="ttc" id="anamespacenlohmann_1_1detail_html_aa554fc6a11519e4f347deb25a9f0db40aaf9de350d652f0c9055ddab514bd23ea"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40aaf9de350d652f0c9055ddab514bd23ea">nlohmann::detail::input_format_t::cbor</a></div><div class="ttdeci">@ cbor</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1is__constructible__string__type__impl_html"><div class="ttname"><a href="structnlohmann_1_1detail_1_1is__constructible__string__type__impl.html">nlohmann::detail::is_constructible_string_type_impl</a></div><div class="ttdef"><b>Definition:</b> json.hpp:2672</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a1ed52b463d2ef14c85ed076467168c72"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a1ed52b463d2ef14c85ed076467168c72">nlohmann::basic_json::from_ubjson</a></div><div class="ttdeci">static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json from_ubjson(detail::input_adapter &&i, const bool strict=true, const bool allow_exceptions=true)</div><div class="ttdoc">create a JSON value from an input in UBJSON format</div><div class="ttdef"><b>Definition:</b> json.hpp:21714</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1position__t_html_a74df94563dd32102152ceb8c6d9041d8"><div class="ttname"><a href="structnlohmann_1_1detail_1_1position__t.html#a74df94563dd32102152ceb8c6d9041d8">nlohmann::detail::position_t::chars_read_current_line</a></div><div class="ttdeci">std::size_t chars_read_current_line</div><div class="ttdoc">the number of characters read in the current line</div><div class="ttdef"><b>Definition:</b> json.hpp:94</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1input__buffer__adapter_html_ad9b912fabdcb53de255e8c444d625ac3"><div class="ttname"><a href="classnlohmann_1_1detail_1_1input__buffer__adapter.html#ad9b912fabdcb53de255e8c444d625ac3">nlohmann::detail::input_buffer_adapter::input_buffer_adapter</a></div><div class="ttdeci">input_buffer_adapter(const char *b, const std::size_t l) noexcept</div><div class="ttdef"><b>Definition:</b> json.hpp:3997</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1file__input__adapter_html_a0d4ff48617c8f63c30babdfd09482329"><div class="ttname"><a href="classnlohmann_1_1detail_1_1file__input__adapter.html#a0d4ff48617c8f63c30babdfd09482329">nlohmann::detail::file_input_adapter::get_character</a></div><div class="ttdeci">std::char_traits< char >::int_type get_character() noexcept override</div><div class="ttdoc">get a character [0,255] or std::char_traits<char>::eof().</div><div class="ttdef"><b>Definition:</b> json.hpp:3933</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1is__constructible__object__type__impl_3_01BasicJsonType_00_01Construb7f96efbcfd2606ccb5c84a830a60036_html_a6f458a63276ef62d60f4b93de03aa020"><div class="ttname"><a href="structnlohmann_1_1detail_1_1is__constructible__object__type__impl_3_01BasicJsonType_00_01Construb7f96efbcfd2606ccb5c84a830a60036.html#a6f458a63276ef62d60f4b93de03aa020">nlohmann::detail::is_constructible_object_type_impl< BasicJsonType, ConstructibleObjectType, enable_if_t< is_detected< mapped_type_t, ConstructibleObjectType >::value and is_detected< key_type_t, ConstructibleObjectType >::value > >::object_t</a></div><div class="ttdeci">typename BasicJsonType::object_t object_t</div><div class="ttdef"><b>Definition:</b> json.hpp:2629</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a6defa7ec3d3ace8f713f001f720182d7"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a6defa7ec3d3ace8f713f001f720182d7">nlohmann::basic_json::to_cbor</a></div><div class="ttdeci">static void to_cbor(const basic_json &j, detail::output_adapter< char > o)</div><div class="ttdef"><b>Definition:</b> json.hpp:21130</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1json__pointer_html_a90a11fe6c7f37b1746a3ff9cb24b0d53"><div class="ttname"><a href="classnlohmann_1_1json__pointer.html#a90a11fe6c7f37b1746a3ff9cb24b0d53">nlohmann::json_pointer::operator/</a></div><div class="ttdeci">friend json_pointer operator/(const json_pointer &lhs, const json_pointer &rhs)</div><div class="ttdoc">create a new JSON pointer by appending the right JSON pointer at the end of the left JSON pointer</div><div class="ttdef"><b>Definition:</b> json.hpp:10236</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__dom__parser_html_a98448bf2cbc15d15e2eddc5a09a40a42"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#a98448bf2cbc15d15e2eddc5a09a40a42">nlohmann::detail::json_sax_dom_parser::operator=</a></div><div class="ttdeci">json_sax_dom_parser & operator=(const json_sax_dom_parser &)=delete</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a65753c68f06639eda0d355f919564e01"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a65753c68f06639eda0d355f919564e01">nlohmann::basic_json::get_to</a></div><div class="ttdeci">ValueType & get_to(ValueType &v) const noexcept(noexcept(JSONSerializer< ValueType >::from_json(std::declval< const basic_json_t & >(), v)))</div><div class="ttdoc">get a value (explicit)</div><div class="ttdef"><b>Definition:</b> json.hpp:17271</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1priority__tag_3_010_01_4_html"><div class="ttname"><a href="structnlohmann_1_1detail_1_1priority__tag_3_010_01_4.html">nlohmann::detail::priority_tag< 0 ></a></div><div class="ttdef"><b>Definition:</b> json.hpp:2229</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1internal__iterator_html_a8cb0af3498061426c1d0a65ad6220408"><div class="ttname"><a href="structnlohmann_1_1detail_1_1internal__iterator.html#a8cb0af3498061426c1d0a65ad6220408">nlohmann::detail::internal_iterator::object_iterator</a></div><div class="ttdeci">BasicJsonType::object_t::iterator object_iterator</div><div class="ttdoc">iterator for JSON objects</div><div class="ttdef"><b>Definition:</b> json.hpp:9290</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1make__void_html"><div class="ttname"><a href="structnlohmann_1_1detail_1_1make__void.html">nlohmann::detail::make_void</a></div><div class="ttdef"><b>Definition:</b> json.hpp:2263</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_ac871e3b03fb2eeca9a8de4db2bea760f"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#ac871e3b03fb2eeca9a8de4db2bea760f">nlohmann::basic_json::operator[]</a></div><div class="ttdeci">reference operator[](size_type idx)</div><div class="ttdoc">access specified array element</div><div class="ttdef"><b>Definition:</b> json.hpp:17714</div></div>
|
||
<div class="ttc" id="anamespacenlohmann_1_1detail_html_a02bcbc878bee413f25b985ada771aa9c"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#a02bcbc878bee413f25b985ada771aa9c">nlohmann::detail::enable_if_t</a></div><div class="ttdeci">typename std::enable_if< B, T >::type enable_if_t</div><div class="ttdef"><b>Definition:</b> json.hpp:2191</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1binary__writer_html_ae4e0852b64102ce4b07d99f08f828b7c"><div class="ttname"><a href="classnlohmann_1_1detail_1_1binary__writer.html#ae4e0852b64102ce4b07d99f08f828b7c">nlohmann::detail::binary_writer::write_msgpack</a></div><div class="ttdeci">void write_msgpack(const BasicJsonType &j)</div><div class="ttdef"><b>Definition:</b> json.hpp:11601</div></div>
|
||
<div class="ttc" id="anamespacenlohmann_1_1detail_html_a1f0395aad0fe853a4539288749d3a603"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#a1f0395aad0fe853a4539288749d3a603">nlohmann::detail::from_json</a></div><div class="ttdeci">void from_json(const BasicJsonType &j, typename std::nullptr_t &n)</div><div class="ttdef"><b>Definition:</b> json.hpp:2898</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a39f2cd0b58106097e0e67bf185cc519b"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a39f2cd0b58106097e0e67bf185cc519b">nlohmann::basic_json::size_type</a></div><div class="ttdeci">std::size_t size_type</div><div class="ttdoc">a type to represent container sizes</div><div class="ttdef"><b>Definition:</b> json.hpp:14809</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1nonesuch_html_a6fe87da966856c6cb06617940d90f010"><div class="ttname"><a href="structnlohmann_1_1detail_1_1nonesuch.html#a6fe87da966856c6cb06617940d90f010">nlohmann::detail::nonesuch::nonesuch</a></div><div class="ttdeci">nonesuch()=delete</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1binary__writer_html_a0f6c65053d859269f88eb4ebb0cd7060"><div class="ttname"><a href="classnlohmann_1_1detail_1_1binary__writer.html#a0f6c65053d859269f88eb4ebb0cd7060">nlohmann::detail::binary_writer::write_ubjson</a></div><div class="ttdeci">void write_ubjson(const BasicJsonType &j, const bool use_count, const bool use_type, const bool add_prefix=true)</div><div class="ttdef"><b>Definition:</b> json.hpp:11843</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1to__json__fn_html"><div class="ttname"><a href="structnlohmann_1_1detail_1_1to__json__fn.html">nlohmann::detail::to_json_fn</a></div><div class="ttdef"><b>Definition:</b> json.hpp:3775</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_aa6602bb24022183ab989439e19345d08"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#aa6602bb24022183ab989439e19345d08">nlohmann::basic_json::get</a></div><div class="ttdeci">ValueType get() const noexcept(noexcept(JSONSerializer< ValueType >::from_json(std::declval< const basic_json_t & >(), std::declval< ValueType & >())))</div><div class="ttdoc">get a value (explicit)</div><div class="ttdef"><b>Definition:</b> json.hpp:17174</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__dom__parser_html_a9929b4cc92d471c49bd0a92802629f90"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#a9929b4cc92d471c49bd0a92802629f90">nlohmann::detail::json_sax_dom_parser::start_object</a></div><div class="ttdeci">bool start_object(std::size_t len)</div><div class="ttdef"><b>Definition:</b> json.hpp:4514</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__dom__callback__parser_html_a5c9603e79a71713f5e8cf12cba837dbb"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a5c9603e79a71713f5e8cf12cba837dbb">nlohmann::detail::json_sax_dom_callback_parser::operator=</a></div><div class="ttdeci">json_sax_dom_callback_parser & operator=(const json_sax_dom_callback_parser &)=delete</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__reverse__iterator_html_adc648a641e8e9a1072c5abd56ad06401"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#adc648a641e8e9a1072c5abd56ad06401">nlohmann::detail::json_reverse_iterator::key</a></div><div class="ttdeci">auto key() const -> decltype(std::declval< Base >().key())</div><div class="ttdoc">return the key of an object iterator</div><div class="ttdef"><b>Definition:</b> json.hpp:10053</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_abe197e9f3184487805cfb5bba6fd5938"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#abe197e9f3184487805cfb5bba6fd5938">nlohmann::basic_json::basic_json</a></div><div class="ttdeci">basic_json(InputIT first, InputIT last)</div><div class="ttdoc">construct a JSON container given an iterator range</div><div class="ttdef"><b>Definition:</b> json.hpp:16225</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1wide__string__input__adapter_html_a85c8bddae20bc00d64dd7a2c87109357"><div class="ttname"><a href="classnlohmann_1_1detail_1_1wide__string__input__adapter.html#a85c8bddae20bc00d64dd7a2c87109357">nlohmann::detail::wide_string_input_adapter::wide_string_input_adapter</a></div><div class="ttdeci">wide_string_input_adapter(const WideStringType &w) noexcept</div><div class="ttdef"><b>Definition:</b> json.hpp:4154</div></div>
|
||
<div class="ttc" id="anamespacenlohmann_html"><div class="ttname"><a href="namespacenlohmann.html">nlohmann</a></div><div class="ttdoc">namespace for Niels Lohmann</div><div class="ttdef"><b>Definition:</b> json.hpp:84</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1binary__writer_html"><div class="ttname"><a href="classnlohmann_1_1detail_1_1binary__writer.html">nlohmann::detail::binary_writer</a></div><div class="ttdoc">serialization to CBOR and MessagePack values</div><div class="ttdef"><b>Definition:</b> json.hpp:11318</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a8a7d537fc297bbc5b845f92fe0445e3b"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a8a7d537fc297bbc5b845f92fe0445e3b">nlohmann::basic_json::array</a></div><div class="ttdeci">static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json array(initializer_list_t init={})</div><div class="ttdoc">explicitly create an array from an initializer list</div><div class="ttdef"><b>Definition:</b> json.hpp:16089</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__dom__parser_html_a3d5cd67d179aa7422ce90e54984a441e"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#a3d5cd67d179aa7422ce90e54984a441e">nlohmann::detail::json_sax_dom_parser::number_integer_t</a></div><div class="ttdeci">typename BasicJsonType::number_integer_t number_integer_t</div><div class="ttdef"><b>Definition:</b> json.hpp:4457</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a6c829df57e924f88cecb702a60af8f17"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a6c829df57e924f88cecb702a60af8f17">nlohmann::basic_json::get</a></div><div class="ttdeci">ValueType get() const noexcept(noexcept(JSONSerializer< ValueType >::from_json(std::declval< const basic_json_t & >())))</div><div class="ttdoc">get a value (explicit); special case</div><div class="ttdef"><b>Definition:</b> json.hpp:17225</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1primitive__iterator__t_html_ad26a823483846a12d890c3feed3097eb"><div class="ttname"><a href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#ad26a823483846a12d890c3feed3097eb">nlohmann::detail::primitive_iterator_t::set_end</a></div><div class="ttdeci">void set_end() noexcept</div><div class="ttdoc">set iterator to a defined past the end</div><div class="ttdef"><b>Definition:</b> json.hpp:9196</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp_html_a6b6665e467ebabe0c0f7418d3fe4b118"><div class="ttname"><a href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#a6b6665e467ebabe0c0f7418d3fe4b118">nlohmann::detail::dtoa_impl::diyfp::normalize_to</a></div><div class="ttdeci">static diyfp normalize_to(const diyfp &x, const int target_exponent) noexcept</div><div class="ttdoc">normalize x such that the result has the exponent E</div><div class="ttdef"><b>Definition:</b> json.hpp:12806</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1is__compatible__string__type_html"><div class="ttname"><a href="structnlohmann_1_1detail_1_1is__compatible__string__type.html">nlohmann::detail::is_compatible_string_type</a></div><div class="ttdef"><b>Definition:</b> json.hpp:2667</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_ac31f12587d2f1a3be5ffc394aa9d72a4"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#ac31f12587d2f1a3be5ffc394aa9d72a4">nlohmann::basic_json::swap</a></div><div class="ttdeci">void swap(object_t &other)</div><div class="ttdoc">exchanges the values</div><div class="ttdef"><b>Definition:</b> json.hpp:20119</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a849368ca71af3a93d576939d486f61c7"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a849368ca71af3a93d576939d486f61c7">nlohmann::basic_json::operator=</a></div><div class="ttdeci">basic_json & operator=(basic_json other) noexcept(std::is_nothrow_move_constructible< value_t >::value and std::is_nothrow_move_assignable< value_t >::value and std::is_nothrow_move_constructible< json_value >::value and std::is_nothrow_move_assignable< json_value >::value)</div><div class="ttdoc">copy assignment</div><div class="ttdef"><b>Definition:</b> json.hpp:16469</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__reverse__iterator_html_a0246de16ece16293f2917dfa5d96e278"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#a0246de16ece16293f2917dfa5d96e278">nlohmann::detail::json_reverse_iterator::json_reverse_iterator</a></div><div class="ttdeci">json_reverse_iterator(const typename base_iterator::iterator_type &it) noexcept</div><div class="ttdoc">create reverse iterator from iterator</div><div class="ttdef"><b>Definition:</b> json.hpp:9992</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__dom__callback__parser_html_ae21f7872c334c77d03ae033cb0749b1c"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#ae21f7872c334c77d03ae033cb0749b1c">nlohmann::detail::json_sax_dom_callback_parser::number_float</a></div><div class="ttdeci">bool number_float(number_float_t val, const string_t &)</div><div class="ttdef"><b>Definition:</b> json.hpp:4685</div></div>
|
||
<div class="ttc" id="ajson_8hpp_html_a1850f57fcda72becebc7033a2e10e77b"><div class="ttname"><a href="json_8hpp.html#a1850f57fcda72becebc7033a2e10e77b">JSON_HEDLEY_DIAGNOSTIC_PUSH</a></div><div class="ttdeci">#define JSON_HEDLEY_DIAGNOSTIC_PUSH</div><div class="ttdef"><b>Definition:</b> json.hpp:735</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a6362b88718eb5c6d4fed6a61eed44b95"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a6362b88718eb5c6d4fed6a61eed44b95">nlohmann::basic_json::is_primitive</a></div><div class="ttdeci">constexpr bool is_primitive() const noexcept</div><div class="ttdoc">return whether type is primitive</div><div class="ttdef"><b>Definition:</b> json.hpp:16642</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1primitive__iterator__t_html_ae952990886ca1756229f916661a8af81"><div class="ttname"><a href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#ae952990886ca1756229f916661a8af81">nlohmann::detail::primitive_iterator_t::get_value</a></div><div class="ttdeci">constexpr difference_type get_value() const noexcept</div><div class="ttdef"><b>Definition:</b> json.hpp:9184</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1number__integer_01_4_html_a7c3949672ddb45095cc2527635feef0b"><div class="ttname"><a href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1number__integer_01_4.html#a7c3949672ddb45095cc2527635feef0b">nlohmann::detail::external_constructor< value_t::number_integer >::construct</a></div><div class="ttdeci">static void construct(BasicJsonType &j, typename BasicJsonType::number_integer_t val) noexcept</div><div class="ttdef"><b>Definition:</b> json.hpp:3542</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1primitive__iterator__t_html_a45a7e301c23b5b90417baf2277f40b1d"><div class="ttname"><a href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#a45a7e301c23b5b90417baf2277f40b1d">nlohmann::detail::primitive_iterator_t::is_end</a></div><div class="ttdeci">constexpr bool is_end() const noexcept</div><div class="ttdoc">return whether the iterator is at end</div><div class="ttdef"><b>Definition:</b> json.hpp:9208</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1lexer_html_a3f313cdbe187cababfc5e06f0b69b098aaf1f040fcd2f674d2e5893d7a731078f"><div class="ttname"><a href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098aaf1f040fcd2f674d2e5893d7a731078f">nlohmann::detail::lexer::token_type::value_unsigned</a></div><div class="ttdeci">@ value_unsigned</div><div class="ttdoc">an unsigned integer – use get_number_unsigned() for actual value</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a7c43ed2a3004c1fa9543913f37b9fca9"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a7c43ed2a3004c1fa9543913f37b9fca9">nlohmann::basic_json::merge_patch</a></div><div class="ttdeci">void merge_patch(const basic_json &apply_patch)</div><div class="ttdoc">applies a JSON Merge Patch</div><div class="ttdef"><b>Definition:</b> json.hpp:22581</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__dom__parser_html"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html">nlohmann::detail::json_sax_dom_parser</a></div><div class="ttdoc">SAX implementation to create a JSON value from SAX events.</div><div class="ttdef"><b>Definition:</b> json.hpp:4454</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1index__sequence_html_a2eca43d08fc1eb68bd5fa75b6714d21d"><div class="ttname"><a href="structnlohmann_1_1detail_1_1index__sequence.html#a2eca43d08fc1eb68bd5fa75b6714d21d">nlohmann::detail::index_sequence< I1...,(sizeof...(I1)+I2)... >::value_type</a></div><div class="ttdeci">std::size_t value_type</div><div class="ttdef"><b>Definition:</b> json.hpp:2202</div></div>
|
||
<div class="ttc" id="anamespacenlohmann_1_1detail_html_a1ed8fc6239da25abcaf681d30ace4985ad9966ecb59667235a57b4b999a649eef"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ad9966ecb59667235a57b4b999a649eef">nlohmann::detail::value_t::number_float</a></div><div class="ttdeci">@ number_float</div><div class="ttdoc">number value (floating-point)</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a89eb3928f57903677051c80534be9cb1"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a89eb3928f57903677051c80534be9cb1">nlohmann::basic_json::find</a></div><div class="ttdeci">iterator find(KeyT &&key)</div><div class="ttdoc">find an element in a JSON object</div><div class="ttdef"><b>Definition:</b> json.hpp:18520</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1primitive__iterator__t_html_abecbf0c73c7fe963a699738065177bc3"><div class="ttname"><a href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#abecbf0c73c7fe963a699738065177bc3">nlohmann::detail::primitive_iterator_t::operator--</a></div><div class="ttdeci">primitive_iterator_t & operator--() noexcept</div><div class="ttdef"><b>Definition:</b> json.hpp:9248</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1index__sequence_html_a7ac529419787d775f52408135304b337"><div class="ttname"><a href="structnlohmann_1_1detail_1_1index__sequence.html#a7ac529419787d775f52408135304b337">nlohmann::detail::index_sequence::size</a></div><div class="ttdeci">static constexpr std::size_t size() noexcept</div><div class="ttdef"><b>Definition:</b> json.hpp:2203</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1json__pointer_html"><div class="ttname"><a href="classnlohmann_1_1json__pointer.html">nlohmann::json_pointer</a></div><div class="ttdoc">JSON Pointer.</div><div class="ttdef"><b>Definition:</b> json.hpp:2435</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1json__pointer_html_afdaacce1edb7145e0434e014f0e8685a"><div class="ttname"><a href="classnlohmann_1_1json__pointer.html#afdaacce1edb7145e0434e014f0e8685a">nlohmann::json_pointer::parent_pointer</a></div><div class="ttdeci">json_pointer parent_pointer() const</div><div class="ttdoc">returns the parent of this JSON pointer</div><div class="ttdef"><b>Definition:</b> json.hpp:10295</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1lexer_html_a3f313cdbe187cababfc5e06f0b69b098"><div class="ttname"><a href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098">nlohmann::detail::lexer::token_type</a></div><div class="ttdeci">token_type</div><div class="ttdoc">token types for the parser</div><div class="ttdef"><b>Definition:</b> json.hpp:7170</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__dom__parser_html_aff77f861ba336df48c9786a993941397"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#aff77f861ba336df48c9786a993941397">nlohmann::detail::json_sax_dom_parser::number_integer</a></div><div class="ttdeci">bool number_integer(number_integer_t val)</div><div class="ttdef"><b>Definition:</b> json.hpp:4490</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1other__error_html"><div class="ttname"><a href="classnlohmann_1_1detail_1_1other__error.html">nlohmann::detail::other_error</a></div><div class="ttdoc">exception indicating other library errors</div><div class="ttdef"><b>Definition:</b> json.hpp:2160</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1parser_html_a14e34931965064b26e118eb72cbd5e25"><div class="ttname"><a href="classnlohmann_1_1detail_1_1parser.html#a14e34931965064b26e118eb72cbd5e25">nlohmann::detail::parser::sax_parse</a></div><div class="ttdeci">bool sax_parse(SAX *sax, const bool strict=true)</div><div class="ttdef"><b>Definition:</b> json.hpp:8802</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1input__buffer__adapter_html"><div class="ttname"><a href="classnlohmann_1_1detail_1_1input__buffer__adapter.html">nlohmann::detail::input_buffer_adapter</a></div><div class="ttdoc">input adapter for buffer input</div><div class="ttdef"><b>Definition:</b> json.hpp:3994</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1iteration__proxy__value_html_a10accadf05a172fdc69a016bec201e81"><div class="ttname"><a href="classnlohmann_1_1detail_1_1iteration__proxy__value.html#a10accadf05a172fdc69a016bec201e81">nlohmann::detail::iteration_proxy_value::operator*</a></div><div class="ttdeci">iteration_proxy_value & operator*()</div><div class="ttdoc">dereference operator (needed for range-based for)</div><div class="ttdef"><b>Definition:</b> json.hpp:3323</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__reverse__iterator_html_a4e5d0a3bee433104ef87366e00536e01"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#a4e5d0a3bee433104ef87366e00536e01">nlohmann::detail::json_reverse_iterator::operator+=</a></div><div class="ttdeci">json_reverse_iterator & operator+=(difference_type i)</div><div class="ttdoc">add to iterator</div><div class="ttdef"><b>Definition:</b> json.hpp:10023</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1input__adapter_html_aa2392138bf8307df1994dc7eb22d51ce"><div class="ttname"><a href="classnlohmann_1_1detail_1_1input__adapter.html#aa2392138bf8307df1994dc7eb22d51ce">nlohmann::detail::input_adapter::input_adapter</a></div><div class="ttdeci">input_adapter(T(&array)[N])</div><div class="ttdoc">input adapter for array</div><div class="ttdef"><b>Definition:</b> json.hpp:4284</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1parser_html_a37ac88c864dda495f72cb62776b0bebeaf63e2a2468a37aa4f394fcc3bcb8249c"><div class="ttname"><a href="classnlohmann_1_1detail_1_1parser.html#a37ac88c864dda495f72cb62776b0bebeaf63e2a2468a37aa4f394fcc3bcb8249c">nlohmann::detail::parser::parse_event_t::object_end</a></div><div class="ttdeci">@ object_end</div><div class="ttdoc">the parser read } and finished processing a JSON object</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1iterator__types_html"><div class="ttname"><a href="structnlohmann_1_1detail_1_1iterator__types.html">nlohmann::detail::iterator_types</a></div><div class="ttdef"><b>Definition:</b> json.hpp:2279</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__acceptor_html_a59e1ea5e9c8d25346a564bf9287a5c2a"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#a59e1ea5e9c8d25346a564bf9287a5c2a">nlohmann::detail::json_sax_acceptor::key</a></div><div class="ttdeci">bool key(string_t &)</div><div class="ttdef"><b>Definition:</b> json.hpp:4983</div></div>
|
||
<div class="ttc" id="anamespacenlohmann_1_1detail_html_aef5c8ea108f4d2b03fb4a635617510de"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#aef5c8ea108f4d2b03fb4a635617510de">nlohmann::detail::from_json</a></div><div class="ttdeci">void from_json(const BasicJsonType &j, std::unordered_map< Key, Value, Hash, KeyEqual, Allocator > &m)</div><div class="ttdef"><b>Definition:</b> json.hpp:3224</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a4c919102a9b4fe0d588af64801436082"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a4c919102a9b4fe0d588af64801436082">nlohmann::basic_json::boolean_t</a></div><div class="ttdeci">BooleanType boolean_t</div><div class="ttdoc">a type for a boolean</div><div class="ttdef"><b>Definition:</b> json.hpp:15151</div></div>
|
||
<div class="ttc" id="anamespacenlohmann_1_1detail_1_1dtoa__impl_html_adbf329a18c5cf854a3477327afd2200b"><div class="ttname"><a href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#adbf329a18c5cf854a3477327afd2200b">nlohmann::detail::dtoa_impl::get_cached_power_for_binary_exponent</a></div><div class="ttdeci">cached_power get_cached_power_for_binary_exponent(int e)</div><div class="ttdef"><b>Definition:</b> json.hpp:12970</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1json__sax_html_a07eab82f6c82d606787eee9ad73d2bda"><div class="ttname"><a href="structnlohmann_1_1json__sax.html#a07eab82f6c82d606787eee9ad73d2bda">nlohmann::json_sax::string</a></div><div class="ttdeci">virtual bool string(string_t &val)=0</div><div class="ttdoc">a string was read</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a022b65246f82c87526940248dc9df6f5"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a022b65246f82c87526940248dc9df6f5">nlohmann::basic_json::from_msgpack</a></div><div class="ttdeci">static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json from_msgpack(A1 &&a1, A2 &&a2, const bool strict=true, const bool allow_exceptions=true)</div><div class="ttdoc">create a JSON value from an input in MessagePack format</div><div class="ttdef"><b>Definition:</b> json.hpp:21642</div></div>
|
||
<div class="ttc" id="anamespacenlohmann_1_1detail_html_a1ed8fc6239da25abcaf681d30ace4985a5763da164f8659d94a56e29df64b4bcc"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a5763da164f8659d94a56e29df64b4bcc">nlohmann::detail::value_t::number_integer</a></div><div class="ttdeci">@ number_integer</div><div class="ttdoc">number value (signed integer)</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a1cfa9ae5e7c2434cab4cfe69bffffe11"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a1cfa9ae5e7c2434cab4cfe69bffffe11">nlohmann::basic_json::update</a></div><div class="ttdeci">void update(const_reference j)</div><div class="ttdoc">updates a JSON object from another object, overwriting existing keys</div><div class="ttdef"><b>Definition:</b> json.hpp:19952</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1detector_html"><div class="ttname"><a href="structnlohmann_1_1detail_1_1detector.html">nlohmann::detail::detector</a></div><div class="ttdef"><b>Definition:</b> json.hpp:2350</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__dom__callback__parser_html_a4f636086fa8e7cf26c35c8afd50903ce"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a4f636086fa8e7cf26c35c8afd50903ce">nlohmann::detail::json_sax_dom_callback_parser::parser_callback_t</a></div><div class="ttdeci">typename BasicJsonType::parser_callback_t parser_callback_t</div><div class="ttdef"><b>Definition:</b> json.hpp:4643</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1input__adapter_html_a32f5ddd06562edce43ee86f5b5c2031b"><div class="ttname"><a href="classnlohmann_1_1detail_1_1input__adapter.html#a32f5ddd06562edce43ee86f5b5c2031b">nlohmann::detail::input_adapter::input_adapter</a></div><div class="ttdeci">input_adapter(const std::wstring &ws)</div><div class="ttdef"><b>Definition:</b> json.hpp:4212</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1is__constructible__tuple_html"><div class="ttname"><a href="structnlohmann_1_1detail_1_1is__constructible__tuple.html">nlohmann::detail::is_constructible_tuple</a></div><div class="ttdef"><b>Definition:</b> json.hpp:2806</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__dom__callback__parser_html_afec9434e54590f10df51b062973d4daf"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#afec9434e54590f10df51b062973d4daf">nlohmann::detail::json_sax_dom_callback_parser::json_sax_dom_callback_parser</a></div><div class="ttdeci">json_sax_dom_callback_parser(BasicJsonType &r, const parser_callback_t cb, const bool allow_exceptions_=true)</div><div class="ttdef"><b>Definition:</b> json.hpp:4646</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1output__vector__adapter_html_a9c4fbf88fda356837038ec30a264cd3e"><div class="ttname"><a href="classnlohmann_1_1detail_1_1output__vector__adapter.html#a9c4fbf88fda356837038ec30a264cd3e">nlohmann::detail::output_vector_adapter::output_vector_adapter</a></div><div class="ttdeci">output_vector_adapter(std::vector< CharType > &vec) noexcept</div><div class="ttdef"><b>Definition:</b> json.hpp:11214</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1iter__impl_html_a0dd9c415b94a02ff2aa25da75e52da30"><div class="ttname"><a href="classnlohmann_1_1detail_1_1iter__impl.html#a0dd9c415b94a02ff2aa25da75e52da30">nlohmann::detail::iter_impl::operator-</a></div><div class="ttdeci">iter_impl operator-(difference_type i) const</div><div class="ttdoc">subtract from iterator</div><div class="ttdef"><b>Definition:</b> json.hpp:9853</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1iteration__proxy__value_html_a1ab8c44e3772c03651b5ad07216043cf"><div class="ttname"><a href="classnlohmann_1_1detail_1_1iteration__proxy__value.html#a1ab8c44e3772c03651b5ad07216043cf">nlohmann::detail::iteration_proxy_value::iterator_category</a></div><div class="ttdeci">std::input_iterator_tag iterator_category</div><div class="ttdef"><b>Definition:</b> json.hpp:3304</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a5c8bb5200f5eac10d31e26be46e5b1ac"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a5c8bb5200f5eac10d31e26be46e5b1ac">nlohmann::basic_json::operator<=</a></div><div class="ttdeci">friend bool operator<=(const_reference lhs, const_reference rhs) noexcept</div><div class="ttdoc">comparison: less than or equal</div><div class="ttdef"><b>Definition:</b> json.hpp:20483</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a27921dafadb3bbefd180235ec763e3ea"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a27921dafadb3bbefd180235ec763e3ea">nlohmann::basic_json::update</a></div><div class="ttdeci">void update(const_iterator first, const_iterator last)</div><div class="ttdoc">updates a JSON object from another object, overwriting existing keys</div><div class="ttdef"><b>Definition:</b> json.hpp:20003</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a943e8cb182d0f2365c76d64b42eaa6fd"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a943e8cb182d0f2365c76d64b42eaa6fd">nlohmann::basic_json::is_boolean</a></div><div class="ttdeci">constexpr bool is_boolean() const noexcept</div><div class="ttdoc">return whether value is a boolean</div><div class="ttdef"><b>Definition:</b> json.hpp:16713</div></div>
|
||
<div class="ttc" id="ajson_8hpp_html_a28d7e3b2d26bd5b8a3806da3db7dea03"><div class="ttname"><a href="json_8hpp.html#a28d7e3b2d26bd5b8a3806da3db7dea03">JSON_HEDLEY_WARN_UNUSED_RESULT</a></div><div class="ttdeci">#define JSON_HEDLEY_WARN_UNUSED_RESULT</div><div class="ttdef"><b>Definition:</b> json.hpp:893</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1json__pointer_html_a3d4b15d32d096e3776c5d2c773b524f5"><div class="ttname"><a href="classnlohmann_1_1json__pointer.html#a3d4b15d32d096e3776c5d2c773b524f5">nlohmann::json_pointer::to_string</a></div><div class="ttdeci">std::string to_string() const</div><div class="ttdoc">return a string representation of the JSON pointer</div><div class="ttdef"><b>Definition:</b> json.hpp:10138</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__acceptor_html_aaa69255e757a6ecc4403a2aa4931fc60"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#aaa69255e757a6ecc4403a2aa4931fc60">nlohmann::detail::json_sax_acceptor::string</a></div><div class="ttdeci">bool string(string_t &)</div><div class="ttdef"><b>Definition:</b> json.hpp:4973</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1parser_html_ad250ad4f2b4af4a497e727c963162ff1"><div class="ttname"><a href="classnlohmann_1_1detail_1_1parser.html#ad250ad4f2b4af4a497e727c963162ff1">nlohmann::detail::parser::parser_callback_t</a></div><div class="ttdeci">std::function< bool(int depth, parse_event_t event, BasicJsonType &parsed)> parser_callback_t</div><div class="ttdef"><b>Definition:</b> json.hpp:8711</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a71dd7adfca43660c10e6624f4b5c290c"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a71dd7adfca43660c10e6624f4b5c290c">nlohmann::basic_json::items</a></div><div class="ttdeci">iteration_proxy< const_iterator > items() const noexcept</div><div class="ttdoc">helper to access iterator member functions in range-based for</div><div class="ttdef"><b>Definition:</b> json.hpp:19067</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a0ff28dac23f2bdecee9564d07f51dcdc"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a0ff28dac23f2bdecee9564d07f51dcdc">nlohmann::basic_json::begin</a></div><div class="ttdeci">iterator begin() noexcept</div><div class="ttdoc">returns an iterator to the first element</div><div class="ttdef"><b>Definition:</b> json.hpp:18674</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1iteration__proxy__value_html_a1fc63b88a585fa39942007aab69a74e6"><div class="ttname"><a href="classnlohmann_1_1detail_1_1iteration__proxy__value.html#a1fc63b88a585fa39942007aab69a74e6">nlohmann::detail::iteration_proxy_value::string_type</a></div><div class="ttdeci">typename std::remove_cv< typename std::remove_reference< decltype(std::declval< IteratorType >().key()) >::type >::type string_type</div><div class="ttdef"><b>Definition:</b> json.hpp:3305</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__dom__parser_html_af7cb5e5fe06ea908b0ce4ed762919759"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#af7cb5e5fe06ea908b0ce4ed762919759">nlohmann::detail::json_sax_dom_parser::end_array</a></div><div class="ttdeci">bool end_array()</div><div class="ttdef"><b>Definition:</b> json.hpp:4553</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_ab4384af330b79de0e5f279576803a2c7"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#ab4384af330b79de0e5f279576803a2c7">nlohmann::basic_json::push_back</a></div><div class="ttdeci">void push_back(const basic_json &val)</div><div class="ttdoc">add an object to an array</div><div class="ttdef"><b>Definition:</b> json.hpp:19443</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1wide__string__input__helper_3_01WideStringType_00_012_01_4_html_a7ede7749f186f1a6a46c08abb607fd5c"><div class="ttname"><a href="structnlohmann_1_1detail_1_1wide__string__input__helper_3_01WideStringType_00_012_01_4.html#a7ede7749f186f1a6a46c08abb607fd5c">nlohmann::detail::wide_string_input_helper< WideStringType, 2 >::fill_buffer</a></div><div class="ttdeci">static void fill_buffer(const WideStringType &str, size_t &current_wchar, std::array< std::char_traits< char >::int_type, 4 > &utf8_bytes, size_t &utf8_bytes_index, size_t &utf8_bytes_filled)</div><div class="ttdef"><b>Definition:</b> json.hpp:4089</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1output__string__adapter_html_af3a49ecd0d23fe56ac21e13d8752abc7"><div class="ttname"><a href="classnlohmann_1_1detail_1_1output__string__adapter.html#af3a49ecd0d23fe56ac21e13d8752abc7">nlohmann::detail::output_string_adapter::output_string_adapter</a></div><div class="ttdeci">output_string_adapter(StringType &s) noexcept</div><div class="ttdef"><b>Definition:</b> json.hpp:11262</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1is__compatible__type__impl_html"><div class="ttname"><a href="structnlohmann_1_1detail_1_1is__compatible__type__impl.html">nlohmann::detail::is_compatible_type_impl</a></div><div class="ttdef"><b>Definition:</b> json.hpp:2783</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a5d9a89ac7ed08171a22dc6d65d033c09"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a5d9a89ac7ed08171a22dc6d65d033c09">nlohmann::basic_json::to_cbor</a></div><div class="ttdeci">static void to_cbor(const basic_json &j, detail::output_adapter< uint8_t > o)</div><div class="ttdef"><b>Definition:</b> json.hpp:21125</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1is__constructible__array__type_html"><div class="ttname"><a href="structnlohmann_1_1detail_1_1is__constructible__array__type.html">nlohmann::detail::is_constructible_array_type</a></div><div class="ttdef"><b>Definition:</b> json.hpp:2752</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1iterator__traits_3_01T_01_5_00_01enable__if__t_3_01std_1_1is__object_3_01T_01_4_1_1value_01_4_01_4_html_a0809c5949d22f08a993231d2fdf285f0"><div class="ttname"><a href="structnlohmann_1_1detail_1_1iterator__traits_3_01T_01_5_00_01enable__if__t_3_01std_1_1is__object_3_01T_01_4_1_1value_01_4_01_4.html#a0809c5949d22f08a993231d2fdf285f0">nlohmann::detail::iterator_traits< T *, enable_if_t< std::is_object< T >::value > >::reference</a></div><div class="ttdeci">T & reference</div><div class="ttdef"><b>Definition:</b> json.hpp:2314</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1primitive__iterator__t_html_a88e38c8e60ba9769b334c192b830047b"><div class="ttname"><a href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#a88e38c8e60ba9769b334c192b830047b">nlohmann::detail::primitive_iterator_t::operator++</a></div><div class="ttdeci">const primitive_iterator_t operator++(int) noexcept</div><div class="ttdef"><b>Definition:</b> json.hpp:9241</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1parser_html_a37ac88c864dda495f72cb62776b0bebea3c6e0b8a9c15224a8228b9a98ca1531d"><div class="ttname"><a href="classnlohmann_1_1detail_1_1parser.html#a37ac88c864dda495f72cb62776b0bebea3c6e0b8a9c15224a8228b9a98ca1531d">nlohmann::detail::parser::parse_event_t::key</a></div><div class="ttdeci">@ key</div><div class="ttdoc">the parser read a key of a value in an object</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_afe7c1303357e19cea9527af4e9a31d8f"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#afe7c1303357e19cea9527af4e9a31d8f">nlohmann::basic_json::difference_type</a></div><div class="ttdeci">std::ptrdiff_t difference_type</div><div class="ttdoc">a type to represent differences between iterators</div><div class="ttdef"><b>Definition:</b> json.hpp:14807</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1iter__impl_html_ad9e091f5c70b34b5b1abc1ab15fd9106"><div class="ttname"><a href="classnlohmann_1_1detail_1_1iter__impl.html#ad9e091f5c70b34b5b1abc1ab15fd9106">nlohmann::detail::iter_impl::iterator_category</a></div><div class="ttdeci">std::bidirectional_iterator_tag iterator_category</div><div class="ttdef"><b>Definition:</b> json.hpp:9367</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__dom__callback__parser_html_aa64e7a650952174037d32028de582c12"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#aa64e7a650952174037d32028de582c12">nlohmann::detail::json_sax_dom_callback_parser::end_array</a></div><div class="ttdeci">bool end_array()</div><div class="ttdef"><b>Definition:</b> json.hpp:4778</div></div>
|
||
<div class="ttc" id="anamespacenlohmann_1_1detail_html_ac1b4e524746bf8b790b2b776048b93c4"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#ac1b4e524746bf8b790b2b776048b93c4">nlohmann::detail::null_function_t</a></div><div class="ttdeci">decltype(std::declval< T & >().null()) null_function_t</div><div class="ttdef"><b>Definition:</b> json.hpp:5031</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a4f73d4cee67ea328d785979c22af0ae1"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a4f73d4cee67ea328d785979c22af0ae1">nlohmann::basic_json::rend</a></div><div class="ttdeci">const_reverse_iterator rend() const noexcept</div><div class="ttdoc">returns a const reverse iterator to one before the first</div><div class="ttdef"><b>Definition:</b> json.hpp:18860</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a1a86d444bfeaa9518d2421aedd74444a"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a1a86d444bfeaa9518d2421aedd74444a">nlohmann::basic_json::empty</a></div><div class="ttdeci">bool empty() const noexcept</div><div class="ttdoc">checks whether the container is empty.</div><div class="ttdef"><b>Definition:</b> json.hpp:19123</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1json__pointer_html_a926c9065dbed1bedc17857a813f7a46f"><div class="ttname"><a href="classnlohmann_1_1json__pointer.html#a926c9065dbed1bedc17857a813f7a46f">nlohmann::json_pointer::operator/</a></div><div class="ttdeci">friend json_pointer operator/(const json_pointer &ptr, std::string token)</div><div class="ttdoc">create a new JSON pointer by appending the unescaped token at the end of the JSON pointer</div><div class="ttdef"><b>Definition:</b> json.hpp:10257</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1lexer_html"><div class="ttname"><a href="classnlohmann_1_1detail_1_1lexer.html">nlohmann::detail::lexer</a></div><div class="ttdoc">lexical analysis</div><div class="ttdef"><b>Definition:</b> json.hpp:7161</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__ref_html_adfba2db547283a7c6a5df9a32e72efc5"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__ref.html#adfba2db547283a7c6a5df9a32e72efc5">nlohmann::detail::json_ref::json_ref</a></div><div class="ttdeci">json_ref(std::initializer_list< json_ref > init)</div><div class="ttdef"><b>Definition:</b> json.hpp:11114</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1iterator__traits_3_01T_01_5_00_01enable__if__t_3_01std_1_1is__object_3_01T_01_4_1_1value_01_4_01_4_html_a9b043cfe0fdfb3e9665428fb2be9cea1"><div class="ttname"><a href="structnlohmann_1_1detail_1_1iterator__traits_3_01T_01_5_00_01enable__if__t_3_01std_1_1is__object_3_01T_01_4_1_1value_01_4_01_4.html#a9b043cfe0fdfb3e9665428fb2be9cea1">nlohmann::detail::iterator_traits< T *, enable_if_t< std::is_object< T >::value > >::iterator_category</a></div><div class="ttdeci">std::random_access_iterator_tag iterator_category</div><div class="ttdef"><b>Definition:</b> json.hpp:2310</div></div>
|
||
<div class="ttc" id="anamespacenlohmann_1_1detail_html_a510dfa15b01e9a8afe31600a27b28199"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#a510dfa15b01e9a8afe31600a27b28199">nlohmann::detail::to_json_tuple_impl</a></div><div class="ttdeci">void to_json_tuple_impl(BasicJsonType &j, const Tuple &t, index_sequence< Idx... >)</div><div class="ttdef"><b>Definition:</b> json.hpp:3764</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__dom__parser_html_ad427febda4997cbd8345a2596af66649"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#ad427febda4997cbd8345a2596af66649">nlohmann::detail::json_sax_dom_parser::key</a></div><div class="ttdeci">bool key(string_t &val)</div><div class="ttdef"><b>Definition:</b> json.hpp:4527</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1json__sax_html_a82ed080814fa656191a537284bb0c575"><div class="ttname"><a href="structnlohmann_1_1json__sax.html#a82ed080814fa656191a537284bb0c575">nlohmann::json_sax::boolean</a></div><div class="ttdeci">virtual bool boolean(bool val)=0</div><div class="ttdoc">a boolean value was read</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1array_01_4_html_abfb2a6eec0bc21e8a7438546aebc55d8"><div class="ttname"><a href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1array_01_4.html#abfb2a6eec0bc21e8a7438546aebc55d8">nlohmann::detail::external_constructor< value_t::array >::construct</a></div><div class="ttdeci">static void construct(BasicJsonType &j, const typename BasicJsonType::array_t &arr)</div><div class="ttdef"><b>Definition:</b> json.hpp:3554</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__reverse__iterator_html_ae22803d442d483041d17239615f83b58"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#ae22803d442d483041d17239615f83b58">nlohmann::detail::json_reverse_iterator::value</a></div><div class="ttdeci">reference value() const</div><div class="ttdoc">return the value of an iterator</div><div class="ttdef"><b>Definition:</b> json.hpp:10060</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1primitive__iterator__t_html_a00ce828d0fe58046c10e0445504df7bf"><div class="ttname"><a href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#a00ce828d0fe58046c10e0445504df7bf">nlohmann::detail::primitive_iterator_t::operator+</a></div><div class="ttdeci">primitive_iterator_t operator+(difference_type n) noexcept</div><div class="ttdef"><b>Definition:</b> json.hpp:9223</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__dom__parser_html_a476c4634b93546a1a555725e551c2b33"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#a476c4634b93546a1a555725e551c2b33">nlohmann::detail::json_sax_dom_parser::boolean</a></div><div class="ttdeci">bool boolean(bool val)</div><div class="ttdef"><b>Definition:</b> json.hpp:4484</div></div>
|
||
<div class="ttc" id="ajson_8hpp_html_a80b7254e63f199a1f656f07ae551f632"><div class="ttname"><a href="json_8hpp.html#a80b7254e63f199a1f656f07ae551f632">NLOHMANN_BASIC_JSON_TPL</a></div><div class="ttdeci">#define NLOHMANN_BASIC_JSON_TPL</div><div class="ttdef"><b>Definition:</b> json.hpp:1822</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1parse__error_html_a9505aaa1ca943be927eec7cc579592ff"><div class="ttname"><a href="classnlohmann_1_1detail_1_1parse__error.html#a9505aaa1ca943be927eec7cc579592ff">nlohmann::detail::parse_error::byte</a></div><div class="ttdeci">const std::size_t byte</div><div class="ttdoc">byte index of the parse error</div><div class="ttdef"><b>Definition:</b> json.hpp:1971</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1lexer_html_a3f313cdbe187cababfc5e06f0b69b098a5064b6655d88a50ae16665cf7751c0ee"><div class="ttname"><a href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098a5064b6655d88a50ae16665cf7751c0ee">nlohmann::detail::lexer::token_type::value_integer</a></div><div class="ttdeci">@ value_integer</div><div class="ttdoc">a signed integer – use get_number_integer() for actual value</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a30ff63a4d671eb14f652356cd934320c"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a30ff63a4d671eb14f652356cd934320c">nlohmann::basic_json::get</a></div><div class="ttdeci">BasicJsonType get() const</div><div class="ttdoc">get special-case overload</div><div class="ttdef"><b>Definition:</b> json.hpp:17124</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__dom__parser_html_a2b4ff5146ed46993527e4a67d99c1355"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#a2b4ff5146ed46993527e4a67d99c1355">nlohmann::detail::json_sax_dom_parser::number_unsigned</a></div><div class="ttdeci">bool number_unsigned(number_unsigned_t val)</div><div class="ttdef"><b>Definition:</b> json.hpp:4496</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1is__compatible__object__type__impl_3_01BasicJsonType_00_01Compatible0bd988932da161d60568f9b7198a50d2_html_a551e9ee372c1b24b632e6b668c231a62"><div class="ttname"><a href="structnlohmann_1_1detail_1_1is__compatible__object__type__impl_3_01BasicJsonType_00_01Compatible0bd988932da161d60568f9b7198a50d2.html#a551e9ee372c1b24b632e6b668c231a62">nlohmann::detail::is_compatible_object_type_impl< BasicJsonType, CompatibleObjectType, enable_if_t< is_detected< mapped_type_t, CompatibleObjectType >::value and is_detected< key_type_t, CompatibleObjectType >::value > >::object_t</a></div><div class="ttdeci">typename BasicJsonType::object_t object_t</div><div class="ttdef"><b>Definition:</b> json.hpp:2605</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1output__stream__adapter_html_ae44ed343cb1a716248547f48dd045b6a"><div class="ttname"><a href="classnlohmann_1_1detail_1_1output__stream__adapter.html#ae44ed343cb1a716248547f48dd045b6a">nlohmann::detail::output_stream_adapter::output_stream_adapter</a></div><div class="ttdeci">output_stream_adapter(std::basic_ostream< CharType > &s) noexcept</div><div class="ttdef"><b>Definition:</b> json.hpp:11238</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1iter__impl_html_aeab0e2b5da70b3bdebecd5b1a6ee66a6"><div class="ttname"><a href="classnlohmann_1_1detail_1_1iter__impl.html#aeab0e2b5da70b3bdebecd5b1a6ee66a6">nlohmann::detail::iter_impl::operator!=</a></div><div class="ttdeci">bool operator!=(const iter_impl &other) const</div><div class="ttdoc">comparison: not equal</div><div class="ttdef"><b>Definition:</b> json.hpp:9730</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1is__constructible__string__type_html"><div class="ttname"><a href="structnlohmann_1_1detail_1_1is__constructible__string__type.html">nlohmann::detail::is_constructible_string_type</a></div><div class="ttdef"><b>Definition:</b> json.hpp:2686</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1primitive__iterator__t_html_a9d9b005906106e12aed738f97d7fee42"><div class="ttname"><a href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#a9d9b005906106e12aed738f97d7fee42">nlohmann::detail::primitive_iterator_t::set_begin</a></div><div class="ttdeci">void set_begin() noexcept</div><div class="ttdoc">set iterator to a defined beginning</div><div class="ttdef"><b>Definition:</b> json.hpp:9190</div></div>
|
||
<div class="ttc" id="ajson_8hpp_html_a307e0238ebc35e99ea45c68823eb83eb"><div class="ttname"><a href="json_8hpp.html#a307e0238ebc35e99ea45c68823eb83eb">NLOHMANN_JSON_VERSION_PATCH</a></div><div class="ttdeci">#define NLOHMANN_JSON_VERSION_PATCH</div><div class="ttdef"><b>Definition:</b> json.hpp:35</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp_html_aeb26771af54ad73598c1a0430d65d884"><div class="ttname"><a href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#aeb26771af54ad73598c1a0430d65d884">nlohmann::detail::dtoa_impl::diyfp::sub</a></div><div class="ttdeci">static diyfp sub(const diyfp &x, const diyfp &y) noexcept</div><div class="ttdoc">returns x - y</div><div class="ttdef"><b>Definition:</b> json.hpp:12712</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__ref_html_a8a31d6c588d6c3c06b62008fd5d36c6c"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__ref.html#a8a31d6c588d6c3c06b62008fd5d36c6c">nlohmann::detail::json_ref::json_ref</a></div><div class="ttdeci">json_ref(Args &&... args)</div><div class="ttdef"><b>Definition:</b> json.hpp:11121</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a5e48a7893520e1314bf0c9723e26ea2a"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a5e48a7893520e1314bf0c9723e26ea2a">nlohmann::basic_json::object_t</a></div><div class="ttdeci">ObjectType< StringType, basic_json, object_comparator_t, AllocatorType< std::pair< const StringType, basic_json > >> object_t</div><div class="ttdoc">a type for an object</div><div class="ttdef"><b>Definition:</b> json.hpp:15026</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1output__adapter_html_a43b3ba852e6a2c3f4d312543bb04c00d"><div class="ttname"><a href="classnlohmann_1_1detail_1_1output__adapter.html#a43b3ba852e6a2c3f4d312543bb04c00d">nlohmann::detail::output_adapter::output_adapter</a></div><div class="ttdeci">output_adapter(std::basic_ostream< CharType > &s)</div><div class="ttdef"><b>Definition:</b> json.hpp:11288</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1json__pointer_html_a213bc67c32a30c68ac6bf06f5195d482"><div class="ttname"><a href="classnlohmann_1_1json__pointer.html#a213bc67c32a30c68ac6bf06f5195d482">nlohmann::json_pointer::back</a></div><div class="ttdeci">const std::string & back() const</div><div class="ttdoc">return last reference token</div><div class="ttdef"><b>Definition:</b> json.hpp:10344</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1lexer_html_aac3041cd2b9291e64fee38db422863c9"><div class="ttname"><a href="classnlohmann_1_1detail_1_1lexer.html#aac3041cd2b9291e64fee38db422863c9">nlohmann::detail::lexer::scan</a></div><div class="ttdeci">token_type scan()</div><div class="ttdef"><b>Definition:</b> json.hpp:8540</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__ref_html"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__ref.html">nlohmann::detail::json_ref</a></div><div class="ttdef"><b>Definition:</b> json.hpp:11101</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__acceptor_html_a8238e8090cbb4ed8a22cbc97bfb833a5"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#a8238e8090cbb4ed8a22cbc97bfb833a5">nlohmann::detail::json_sax_acceptor::start_array</a></div><div class="ttdeci">bool start_array(std::size_t=std::size_t(-1))</div><div class="ttdef"><b>Definition:</b> json.hpp:4993</div></div>
|
||
<div class="ttc" id="anamespacenlohmann_1_1detail_html_ab4d22cdb6521ee3508db496dea66711e"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#ab4d22cdb6521ee3508db496dea66711e">nlohmann::detail::get_template_function</a></div><div class="ttdeci">decltype(std::declval< T >().template get< U >()) get_template_function</div><div class="ttdef"><b>Definition:</b> json.hpp:2516</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a7639e0834df2bc719a04ffea89b31abc"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a7639e0834df2bc719a04ffea89b31abc">nlohmann::basic_json::basic_json</a></div><div class="ttdeci">basic_json(CompatibleType &&val) noexcept(noexcept(JSONSerializer< U >::to_json(std::declval< basic_json_t & >(), std::forward< CompatibleType >(val))))</div><div class="ttdoc">create a JSON value</div><div class="ttdef"><b>Definition:</b> json.hpp:15843</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1has__non__default__from__json_html"><div class="ttname"><a href="structnlohmann_1_1detail_1_1has__non__default__from__json.html">nlohmann::detail::has_non_default_from_json</a></div><div class="ttdef"><b>Definition:</b> json.hpp:2536</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__dom__parser_html_ad1b9f3681fadbbb2e0127f5c8a99c662"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#ad1b9f3681fadbbb2e0127f5c8a99c662">nlohmann::detail::json_sax_dom_parser::is_errored</a></div><div class="ttdeci">constexpr bool is_errored() const</div><div class="ttdef"><b>Definition:</b> json.hpp:4587</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1input__stream__adapter_html_af487152e4606d013eb4ec6a90eaf82ea"><div class="ttname"><a href="classnlohmann_1_1detail_1_1input__stream__adapter.html#af487152e4606d013eb4ec6a90eaf82ea">nlohmann::detail::input_stream_adapter::input_stream_adapter</a></div><div class="ttdeci">input_stream_adapter(std::istream &i)</div><div class="ttdef"><b>Definition:</b> json.hpp:3963</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1parse__error_html"><div class="ttname"><a href="classnlohmann_1_1detail_1_1parse__error.html">nlohmann::detail::parse_error</a></div><div class="ttdoc">exception indicating a parse error</div><div class="ttdef"><b>Definition:</b> json.hpp:1935</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1wide__string__input__adapter_html"><div class="ttname"><a href="classnlohmann_1_1detail_1_1wide__string__input__adapter.html">nlohmann::detail::wide_string_input_adapter</a></div><div class="ttdef"><b>Definition:</b> json.hpp:4151</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1primitive__iterator__t_html_a8d1a7d46b3fcd06edd034f04ededb5e4"><div class="ttname"><a href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#a8d1a7d46b3fcd06edd034f04ededb5e4">nlohmann::detail::primitive_iterator_t::is_begin</a></div><div class="ttdeci">constexpr bool is_begin() const noexcept</div><div class="ttdoc">return whether the iterator can be dereferenced</div><div class="ttdef"><b>Definition:</b> json.hpp:9202</div></div>
|
||
<div class="ttc" id="anamespacenlohmann_1_1detail_html_aec53c029383b34a72182210e58fadb79"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#aec53c029383b34a72182210e58fadb79">nlohmann::detail::end_array_function_t</a></div><div class="ttdeci">decltype(std::declval< T & >().end_array()) end_array_function_t</div><div class="ttdef"><b>Definition:</b> json.hpp:5069</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a122640e7e2db1814fc7bbb3c122ec76e"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a122640e7e2db1814fc7bbb3c122ec76e">nlohmann::basic_json::operator==</a></div><div class="ttdeci">friend bool operator==(const_reference lhs, const_reference rhs) noexcept</div><div class="ttdoc">comparison: equal</div><div class="ttdef"><b>Definition:</b> json.hpp:20214</div></div>
|
||
<div class="ttc" id="anamespacenlohmann_1_1detail_html_ae132f8cd5bb24c5e9b40ad0eafedf1c2"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#ae132f8cd5bb24c5e9b40ad0eafedf1c2">nlohmann::detail::input_adapter_t</a></div><div class="ttdeci">std::shared_ptr< input_adapter_protocol > input_adapter_t</div><div class="ttdoc">a type to simplify interfaces</div><div class="ttdef"><b>Definition:</b> json.hpp:3912</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a124c319566198d9f092c5bebea46ce77"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a124c319566198d9f092c5bebea46ce77">nlohmann::basic_json::operator></a></div><div class="ttdeci">friend bool operator>(const ScalarType lhs, const_reference rhs) noexcept</div><div class="ttdoc">comparison: greater than</div><div class="ttdef"><b>Definition:</b> json.hpp:20551</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1output__vector__adapter_html"><div class="ttname"><a href="classnlohmann_1_1detail_1_1output__vector__adapter.html">nlohmann::detail::output_vector_adapter</a></div><div class="ttdoc">output adapter for byte vectors</div><div class="ttdef"><b>Definition:</b> json.hpp:11211</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1iterator__traits_3_01T_01_5_00_01enable__if__t_3_01std_1_1is__object_3_01T_01_4_1_1value_01_4_01_4_html_a443e6a62f5fb2c545fc71c751b98ca8d"><div class="ttname"><a href="structnlohmann_1_1detail_1_1iterator__traits_3_01T_01_5_00_01enable__if__t_3_01std_1_1is__object_3_01T_01_4_1_1value_01_4_01_4.html#a443e6a62f5fb2c545fc71c751b98ca8d">nlohmann::detail::iterator_traits< T *, enable_if_t< std::is_object< T >::value > >::value_type</a></div><div class="ttdeci">T value_type</div><div class="ttdef"><b>Definition:</b> json.hpp:2311</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1iter__impl_html"><div class="ttname"><a href="classnlohmann_1_1detail_1_1iter__impl.html">nlohmann::detail::iter_impl</a></div><div class="ttdoc">a template for a bidirectional iterator for the basic_json class This class implements a both iterato...</div><div class="ttdef"><b>Definition:</b> json.hpp:9346</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1internal__iterator_html_a8294a6e6f01b58e1cce8fbae66a50b5d"><div class="ttname"><a href="structnlohmann_1_1detail_1_1internal__iterator.html#a8294a6e6f01b58e1cce8fbae66a50b5d">nlohmann::detail::internal_iterator::array_iterator</a></div><div class="ttdeci">BasicJsonType::array_t::iterator array_iterator</div><div class="ttdoc">iterator for JSON arrays</div><div class="ttdef"><b>Definition:</b> json.hpp:9292</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1string_01_4_html_a8822d43f0e20c5a28be329f9ca7de6c4"><div class="ttname"><a href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1string_01_4.html#a8822d43f0e20c5a28be329f9ca7de6c4">nlohmann::detail::external_constructor< value_t::string >::construct</a></div><div class="ttdeci">static void construct(BasicJsonType &j, const CompatibleStringType &str)</div><div class="ttdef"><b>Definition:</b> json.hpp:3506</div></div>
|
||
<div class="ttc" id="anamespacenlohmann_1_1detail_html_a1ed8fc6239da25abcaf681d30ace4985ab45cffe084dd3d20d928bee85e7b0f21"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985ab45cffe084dd3d20d928bee85e7b0f21">nlohmann::detail::value_t::string</a></div><div class="ttdeci">@ string</div><div class="ttdoc">string value</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1iter__impl_html_a5be8001be099c6b82310f4d387b953ce"><div class="ttname"><a href="classnlohmann_1_1detail_1_1iter__impl.html#a5be8001be099c6b82310f4d387b953ce">nlohmann::detail::iter_impl::reference</a></div><div class="ttdeci">typename std::conditional< std::is_const< BasicJsonType >::value, typename BasicJsonType::const_reference, typename BasicJsonType::reference >::type reference</div><div class="ttdoc">defines a reference to the type iterated over (value_type)</div><div class="ttdef"><b>Definition:</b> json.hpp:9381</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1parser_html_a20997b42262856935b60fc91bf05bf3f"><div class="ttname"><a href="classnlohmann_1_1detail_1_1parser.html#a20997b42262856935b60fc91bf05bf3f">nlohmann::detail::parser::accept</a></div><div class="ttdeci">bool accept(const bool strict=true)</div><div class="ttdoc">public accept interface</div><div class="ttdef"><b>Definition:</b> json.hpp:8794</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a8a3dd150c2d1f0df3502d937de0871db"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a8a3dd150c2d1f0df3502d937de0871db">nlohmann::basic_json::sax_parse</a></div><div class="ttdeci">static bool sax_parse(detail::input_adapter &&i, SAX *sax, input_format_t format=input_format_t::json, const bool strict=true)</div><div class="ttdoc">generate SAX events</div><div class="ttdef"><b>Definition:</b> json.hpp:20814</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a69b596a4a6683b362095c9a139637396"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a69b596a4a6683b362095c9a139637396">nlohmann::basic_json::is_string</a></div><div class="ttdeci">constexpr bool is_string() const noexcept</div><div class="ttdoc">return whether value is a string</div><div class="ttdef"><b>Definition:</b> json.hpp:16894</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1parse__error_html_a9fd60ad6bce80fd99686ad332faefd37"><div class="ttname"><a href="classnlohmann_1_1detail_1_1parse__error.html#a9fd60ad6bce80fd99686ad332faefd37">nlohmann::detail::parse_error::create</a></div><div class="ttdeci">static parse_error create(int id_, std::size_t byte_, const std::string &what_arg)</div><div class="ttdef"><b>Definition:</b> json.hpp:1954</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp_html_aa5f250d12ce89c81fdb08900c6a823e8"><div class="ttname"><a href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#aa5f250d12ce89c81fdb08900c6a823e8">nlohmann::detail::dtoa_impl::diyfp::mul</a></div><div class="ttdeci">static diyfp mul(const diyfp &x, const diyfp &y) noexcept</div><div class="ttdoc">returns x * y</div><div class="ttdef"><b>Definition:</b> json.hpp:12724</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__reverse__iterator_html_a8ed9e445e03c49c46612eb7f7d55bb61"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#a8ed9e445e03c49c46612eb7f7d55bb61">nlohmann::detail::json_reverse_iterator::operator[]</a></div><div class="ttdeci">reference operator[](difference_type n) const</div><div class="ttdoc">access to successor</div><div class="ttdef"><b>Definition:</b> json.hpp:10047</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1adl__serializer_html"><div class="ttname"><a href="structnlohmann_1_1adl__serializer.html">nlohmann::adl_serializer</a></div><div class="ttdoc">default JSONSerializer template argument</div><div class="ttdef"><b>Definition:</b> json.hpp:2409</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1is__constructible__object__type_html"><div class="ttname"><a href="structnlohmann_1_1detail_1_1is__constructible__object__type.html">nlohmann::detail::is_constructible_object_type</a></div><div class="ttdef"><b>Definition:</b> json.hpp:2648</div></div>
|
||
<div class="ttc" id="anamespacenlohmann_1_1detail_html_a92a167c49c6697b6ffe4f79492c705e5"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#a92a167c49c6697b6ffe4f79492c705e5">nlohmann::detail::void_t</a></div><div class="ttdeci">typename make_void< Ts... >::type void_t</div><div class="ttdef"><b>Definition:</b> json.hpp:2267</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a4ef190107be36fea6b6c63d71d439c99"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a4ef190107be36fea6b6c63d71d439c99">nlohmann::basic_json::to_msgpack</a></div><div class="ttdeci">static void to_msgpack(const basic_json &j, detail::output_adapter< uint8_t > o)</div><div class="ttdef"><b>Definition:</b> json.hpp:21221</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1merge__and__renumber_html"><div class="ttname"><a href="structnlohmann_1_1detail_1_1merge__and__renumber.html">nlohmann::detail::merge_and_renumber</a></div><div class="ttdef"><b>Definition:</b> json.hpp:2210</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1json__sax_html_a0cef30121f02b7fee85e9708148ea0aa"><div class="ttname"><a href="structnlohmann_1_1json__sax.html#a0cef30121f02b7fee85e9708148ea0aa">nlohmann::json_sax::number_integer_t</a></div><div class="ttdeci">typename BasicJsonType::number_integer_t number_integer_t</div><div class="ttdoc">type for (signed) integers</div><div class="ttdef"><b>Definition:</b> json.hpp:4336</div></div>
|
||
<div class="ttc" id="anamespacenlohmann_1_1detail_html_a5a76b60b26dc8c47256a996d18d967df"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#a5a76b60b26dc8c47256a996d18d967df">nlohmann::detail::error_handler_t</a></div><div class="ttdeci">error_handler_t</div><div class="ttdoc">how to treat decoding errors</div><div class="ttdef"><b>Definition:</b> json.hpp:13779</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a6b187a22994c12c8cae0dd5ee99dc85e"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a6b187a22994c12c8cae0dd5ee99dc85e">nlohmann::basic_json::get</a></div><div class="ttdeci">basic_json get() const</div><div class="ttdoc">get special-case overload</div><div class="ttdef"><b>Definition:</b> json.hpp:17101</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1dtoa__impl_1_1cached__power_html_a21ae81f515f5b08d5bf423775ee56074"><div class="ttname"><a href="structnlohmann_1_1detail_1_1dtoa__impl_1_1cached__power.html#a21ae81f515f5b08d5bf423775ee56074">nlohmann::detail::dtoa_impl::cached_power::f</a></div><div class="ttdeci">std::uint64_t f</div><div class="ttdef"><b>Definition:</b> json.hpp:12958</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_aabe623bc8304c2ba92d96d91f390fab4"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#aabe623bc8304c2ba92d96d91f390fab4">nlohmann::basic_json::is_discarded</a></div><div class="ttdeci">constexpr bool is_discarded() const noexcept</div><div class="ttdoc">return whether value is discarded</div><div class="ttdef"><b>Definition:</b> json.hpp:16921</div></div>
|
||
<div class="ttc" id="ajson_8hpp_html_a0d17bf1a54fc45a04ced6d3aa86a96e3"><div class="ttname"><a href="json_8hpp.html#a0d17bf1a54fc45a04ced6d3aa86a96e3">JSON_HEDLEY_CONST</a></div><div class="ttdeci">#define JSON_HEDLEY_CONST</div><div class="ttdef"><b>Definition:</b> json.hpp:1191</div></div>
|
||
<div class="ttc" id="anamespacenlohmann_1_1detail_html_a9ff93db146174305bce1bc4c54703e11"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#a9ff93db146174305bce1bc4c54703e11">nlohmann::detail::iterator_t</a></div><div class="ttdeci">typename T::iterator iterator_t</div><div class="ttdef"><b>Definition:</b> json.hpp:2507</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1wide__string__input__helper_html_ae82d79118fa319a97e4a40568186a922"><div class="ttname"><a href="structnlohmann_1_1detail_1_1wide__string__input__helper.html#ae82d79118fa319a97e4a40568186a922">nlohmann::detail::wide_string_input_helper::fill_buffer</a></div><div class="ttdeci">static void fill_buffer(const WideStringType &str, size_t &current_wchar, std::array< std::char_traits< char >::int_type, 4 > &utf8_bytes, size_t &utf8_bytes_index, size_t &utf8_bytes_filled)</div><div class="ttdef"><b>Definition:</b> json.hpp:4030</div></div>
|
||
<div class="ttc" id="anamespacenlohmann_1_1detail_1_1dtoa__impl_html_a1c5d30eb51e5e994a3f48bde104d2ce8"><div class="ttname"><a href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#a1c5d30eb51e5e994a3f48bde104d2ce8">nlohmann::detail::dtoa_impl::reinterpret_bits</a></div><div class="ttdeci">Target reinterpret_bits(const Source source)</div><div class="ttdef"><b>Definition:</b> json.hpp:12690</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_af5de621bcf646c332343f9c1e011126c"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#af5de621bcf646c332343f9c1e011126c">nlohmann::basic_json::basic_json</a></div><div class="ttdeci">basic_json(const basic_json &other)</div><div class="ttdoc">copy constructor</div><div class="ttdef"><b>Definition:</b> json.hpp:16349</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a33b4bf898b857c962e798fc7f6e86e70"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a33b4bf898b857c962e798fc7f6e86e70">nlohmann::basic_json::is_number_float</a></div><div class="ttdeci">constexpr bool is_number_float() const noexcept</div><div class="ttdoc">return whether value is a floating-point number</div><div class="ttdef"><b>Definition:</b> json.hpp:16828</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1json__pointer_html_a9f6bc6f4d4668b4e9a19d8b8ac29da4f"><div class="ttname"><a href="classnlohmann_1_1json__pointer.html#a9f6bc6f4d4668b4e9a19d8b8ac29da4f">nlohmann::json_pointer::operator/</a></div><div class="ttdeci">friend json_pointer operator/(const json_pointer &ptr, std::size_t array_index)</div><div class="ttdoc">create a new JSON pointer by appending the array-index-token at the end of the JSON pointer</div><div class="ttdef"><b>Definition:</b> json.hpp:10277</div></div>
|
||
<div class="ttc" id="anamespacenlohmann_1_1detail_html_af91beae90c2fb0f931079b3d50a343bc"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#af91beae90c2fb0f931079b3d50a343bc">nlohmann::detail::value_type_t</a></div><div class="ttdeci">typename T::value_type value_type_t</div><div class="ttdef"><b>Definition:</b> json.hpp:2492</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_ad73f88f70fe5acfa521750a8cd710026"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#ad73f88f70fe5acfa521750a8cd710026">nlohmann::basic_json::operator<=</a></div><div class="ttdeci">friend bool operator<=(const ScalarType lhs, const_reference rhs) noexcept</div><div class="ttdoc">comparison: less than or equal</div><div class="ttdef"><b>Definition:</b> json.hpp:20505</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a9f68a0af820c3ced7f9d17851ce4c22d"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a9f68a0af820c3ced7f9d17851ce4c22d">nlohmann::basic_json::is_structured</a></div><div class="ttdeci">constexpr bool is_structured() const noexcept</div><div class="ttdoc">return whether type is structured</div><div class="ttdef"><b>Definition:</b> json.hpp:16669</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a87db51b6b936fb2ea293cdbc8702dcb8"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a87db51b6b936fb2ea293cdbc8702dcb8">nlohmann::basic_json::operator></a></div><div class="ttdeci">friend bool operator>(const_reference lhs, const_reference rhs) noexcept</div><div class="ttdoc">comparison: greater than</div><div class="ttdef"><b>Definition:</b> json.hpp:20529</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1is__compatible__integer__type__impl_3_01RealIntegerType_00_01Compati3a04243716e8bda67d1ff2aead18da88_html_a002983b5c7c0f72b89d2151a6b39627d"><div class="ttname"><a href="structnlohmann_1_1detail_1_1is__compatible__integer__type__impl_3_01RealIntegerType_00_01Compati3a04243716e8bda67d1ff2aead18da88.html#a002983b5c7c0f72b89d2151a6b39627d">nlohmann::detail::is_compatible_integer_type_impl< RealIntegerType, CompatibleNumberIntegerType, enable_if_t< std::is_integral< RealIntegerType >::value and std::is_integral< CompatibleNumberIntegerType >::value and not std::is_same< bool, CompatibleNumberIntegerType >::value > >::CompatibleLimits</a></div><div class="ttdeci">std::numeric_limits< CompatibleNumberIntegerType > CompatibleLimits</div><div class="ttdef"><b>Definition:</b> json.hpp:2768</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a5795b029dbf28e0cb2c7a439ec5d0a88"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a5795b029dbf28e0cb2c7a439ec5d0a88">nlohmann::basic_json::crend</a></div><div class="ttdeci">const_reverse_iterator crend() const noexcept</div><div class="ttdoc">returns a const reverse iterator to one before the first</div><div class="ttdef"><b>Definition:</b> json.hpp:18918</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a412895af9a582869a4d369a64fb1b6d6"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a412895af9a582869a4d369a64fb1b6d6">nlohmann::basic_json::operator></a></div><div class="ttdeci">friend bool operator>(const_reference lhs, const ScalarType rhs) noexcept</div><div class="ttdoc">comparison: greater than</div><div class="ttdef"><b>Definition:</b> json.hpp:20540</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_abfeba47810ca72f2176419942c4e1952"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#abfeba47810ca72f2176419942c4e1952">nlohmann::basic_json::clear</a></div><div class="ttdeci">void clear() noexcept</div><div class="ttdoc">clears the contents</div><div class="ttdef"><b>Definition:</b> json.hpp:19335</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1json__sax_html_ae01977a9f3c5b3667b7a2929ed91061e"><div class="ttname"><a href="structnlohmann_1_1json__sax.html#ae01977a9f3c5b3667b7a2929ed91061e">nlohmann::json_sax::string_t</a></div><div class="ttdeci">typename BasicJsonType::string_t string_t</div><div class="ttdoc">type for strings</div><div class="ttdef"><b>Definition:</b> json.hpp:4342</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_af4ac14224fbdd29d3547fcb11bb55c8f"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#af4ac14224fbdd29d3547fcb11bb55c8f">nlohmann::basic_json::get_allocator</a></div><div class="ttdeci">static allocator_type get_allocator()</div><div class="ttdoc">returns the allocator associated with the container</div><div class="ttdef"><b>Definition:</b> json.hpp:14834</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1is__compatible__integer__type__impl_html"><div class="ttname"><a href="structnlohmann_1_1detail_1_1is__compatible__integer__type__impl.html">nlohmann::detail::is_compatible_integer_type_impl</a></div><div class="ttdef"><b>Definition:</b> json.hpp:2757</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1binary__writer_html_a5e46f0dd3550901b15cf85265808d1ec"><div class="ttname"><a href="classnlohmann_1_1detail_1_1binary__writer.html#a5e46f0dd3550901b15cf85265808d1ec">nlohmann::detail::binary_writer::to_char_type</a></div><div class="ttdeci">static CharType to_char_type(std::uint8_t x) noexcept</div><div class="ttdef"><b>Definition:</b> json.hpp:12592</div></div>
|
||
<div class="ttc" id="anamespacenlohmann_1_1detail_1_1dtoa__impl_html_a05b681dcb8569b9784c6dccfadb01633"><div class="ttname"><a href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#a05b681dcb8569b9784c6dccfadb01633">nlohmann::detail::dtoa_impl::grisu2</a></div><div class="ttdeci">void grisu2(char *buf, int &len, int &decimal_exponent, diyfp m_minus, diyfp v, diyfp m_plus)</div><div class="ttdef"><b>Definition:</b> json.hpp:13472</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_aaf363408931d76472ded14017e59c9e8"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#aaf363408931d76472ded14017e59c9e8">nlohmann::basic_json::operator>></a></div><div class="ttdeci">friend std::istream & operator>>(std::istream &i, basic_json &j)</div><div class="ttdoc">deserialize from stream</div><div class="ttdef"><b>Definition:</b> json.hpp:20944</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1from__json__fn_html_a6d14a74e1043072c77892534572d2973"><div class="ttname"><a href="structnlohmann_1_1detail_1_1from__json__fn.html#a6d14a74e1043072c77892534572d2973">nlohmann::detail::from_json_fn::operator()</a></div><div class="ttdeci">auto operator()(const BasicJsonType &j, T &val) const noexcept(noexcept(from_json(j, val))) -> decltype(from_json(j, val), void())</div><div class="ttdef"><b>Definition:</b> json.hpp:3244</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a515e7618392317dbf4b72d3e18bf2ab2"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a515e7618392317dbf4b72d3e18bf2ab2">nlohmann::basic_json::rbegin</a></div><div class="ttdeci">const_reverse_iterator rbegin() const noexcept</div><div class="ttdoc">returns a const reverse iterator to the last element</div><div class="ttdef"><b>Definition:</b> json.hpp:18823</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1number__unsigned_01_4_html_a17969b14852f43e04353858c87b0f539"><div class="ttname"><a href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1number__unsigned_01_4.html#a17969b14852f43e04353858c87b0f539">nlohmann::detail::external_constructor< value_t::number_unsigned >::construct</a></div><div class="ttdeci">static void construct(BasicJsonType &j, typename BasicJsonType::number_unsigned_t val) noexcept</div><div class="ttdef"><b>Definition:</b> json.hpp:3530</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__reverse__iterator_html_a9ab55987c05ec6427ad36082e351cc45"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#a9ab55987c05ec6427ad36082e351cc45">nlohmann::detail::json_reverse_iterator::difference_type</a></div><div class="ttdeci">std::ptrdiff_t difference_type</div><div class="ttdef"><b>Definition:</b> json.hpp:9985</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1binary__reader_html_a1e31dbfcf9567c8c2d4f0e4eb1b0230a"><div class="ttname"><a href="classnlohmann_1_1detail_1_1binary__reader.html#a1e31dbfcf9567c8c2d4f0e4eb1b0230a">nlohmann::detail::binary_reader::little_endianess</a></div><div class="ttdeci">static constexpr bool little_endianess(int num=1) noexcept</div><div class="ttdoc">determine system byte order</div><div class="ttdef"><b>Definition:</b> json.hpp:5268</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1iterator__traits_3_01T_01_5_00_01enable__if__t_3_01std_1_1is__object_3_01T_01_4_1_1value_01_4_01_4_html_ae7be99eb434f5b5f34692874c272b759"><div class="ttname"><a href="structnlohmann_1_1detail_1_1iterator__traits_3_01T_01_5_00_01enable__if__t_3_01std_1_1is__object_3_01T_01_4_1_1value_01_4_01_4.html#ae7be99eb434f5b5f34692874c272b759">nlohmann::detail::iterator_traits< T *, enable_if_t< std::is_object< T >::value > >::difference_type</a></div><div class="ttdeci">ptrdiff_t difference_type</div><div class="ttdef"><b>Definition:</b> json.hpp:2312</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_aa16dc469c842fa8a0aaf6f5a95c46bb3"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#aa16dc469c842fa8a0aaf6f5a95c46bb3">nlohmann::basic_json::basic_json</a></div><div class="ttdeci">basic_json(const BasicJsonType &val)</div><div class="ttdoc">create a JSON value from an existing one</div><div class="ttdef"><b>Definition:</b> json.hpp:15880</div></div>
|
||
<div class="ttc" id="ajson_8hpp_html_a6c274f6db2e65c1b66c7d41b06ad690f"><div class="ttname"><a href="json_8hpp.html#a6c274f6db2e65c1b66c7d41b06ad690f">JSON_THROW</a></div><div class="ttdeci">#define JSON_THROW(exception)</div><div class="ttdef"><b>Definition:</b> json.hpp:1754</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1lexer_html_a3f313cdbe187cababfc5e06f0b69b098aca11f56dd477c09e06583dbdcda0985f"><div class="ttname"><a href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098aca11f56dd477c09e06583dbdcda0985f">nlohmann::detail::lexer::token_type::end_of_input</a></div><div class="ttdeci">@ end_of_input</div><div class="ttdoc">indicating the end of the input buffer</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1output__adapter_html_a6ad59d1ec534383b430cd7ef8a518539"><div class="ttname"><a href="classnlohmann_1_1detail_1_1output__adapter.html#a6ad59d1ec534383b430cd7ef8a518539">nlohmann::detail::output_adapter::output_adapter</a></div><div class="ttdeci">output_adapter(StringType &s)</div><div class="ttdef"><b>Definition:</b> json.hpp:11291</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__dom__callback__parser_html_a68d9eddfd572e8687c1c8107e0505aa6"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a68d9eddfd572e8687c1c8107e0505aa6">nlohmann::detail::json_sax_dom_callback_parser::number_integer</a></div><div class="ttdeci">bool number_integer(number_integer_t val)</div><div class="ttdef"><b>Definition:</b> json.hpp:4673</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1index__sequence_html"><div class="ttname"><a href="structnlohmann_1_1detail_1_1index__sequence.html">nlohmann::detail::index_sequence</a></div><div class="ttdef"><b>Definition:</b> json.hpp:2199</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__dom__callback__parser_html_a54ffcdfb0a8c5c9a876cd003b404ef4b"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a54ffcdfb0a8c5c9a876cd003b404ef4b">nlohmann::detail::json_sax_dom_callback_parser::~json_sax_dom_callback_parser</a></div><div class="ttdeci">~json_sax_dom_callback_parser()=default</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a46afafed69ed4c8ae797afb8445fd42f"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a46afafed69ed4c8ae797afb8445fd42f">nlohmann::basic_json::from_ubjson</a></div><div class="ttdeci">static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json from_ubjson(A1 &&a1, A2 &&a2, const bool strict=true, const bool allow_exceptions=true)</div><div class="ttdoc">create a JSON value from an input in UBJSON format</div><div class="ttdef"><b>Definition:</b> json.hpp:21730</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp_html_a2246b5b40c7c6992153ef174063d6aa6"><div class="ttname"><a href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#a2246b5b40c7c6992153ef174063d6aa6">nlohmann::detail::dtoa_impl::diyfp::normalize</a></div><div class="ttdeci">static diyfp normalize(diyfp x) noexcept</div><div class="ttdoc">normalize x such that the significand is >= 2^(q-1)</div><div class="ttdef"><b>Definition:</b> json.hpp:12789</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1iter__impl_html_abdfe2a7f464400a7ab572782d14b922f"><div class="ttname"><a href="classnlohmann_1_1detail_1_1iter__impl.html#abdfe2a7f464400a7ab572782d14b922f">nlohmann::detail::iter_impl::operator++</a></div><div class="ttdeci">iter_impl & operator++()</div><div class="ttdoc">pre-increment (++it)</div><div class="ttdef"><b>Definition:</b> json.hpp:9628</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1parser_html"><div class="ttname"><a href="classnlohmann_1_1detail_1_1parser.html">nlohmann::detail::parser</a></div><div class="ttdoc">syntax analysis</div><div class="ttdef"><b>Definition:</b> json.hpp:8684</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a9cb592cd85c14f3e845e30d51cf17efb"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a9cb592cd85c14f3e845e30d51cf17efb">nlohmann::basic_json::operator[]</a></div><div class="ttdeci">const_reference operator[](size_type idx) const</div><div class="ttdoc">access specified array element</div><div class="ttdef"><b>Definition:</b> json.hpp:17760</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a1be31ef2d2934d37a818083a4af44f99"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a1be31ef2d2934d37a818083a4af44f99">nlohmann::basic_json::push_back</a></div><div class="ttdeci">void push_back(initializer_list_t init)</div><div class="ttdoc">add an object to an object</div><div class="ttdef"><b>Definition:</b> json.hpp:19548</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_aba01953d5d90e676d504863b8d9fdde5"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#aba01953d5d90e676d504863b8d9fdde5">nlohmann::basic_json::~basic_json</a></div><div class="ttdeci">~basic_json() noexcept</div><div class="ttdoc">destructor</div><div class="ttdef"><b>Definition:</b> json.hpp:16502</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1wide__string__input__helper_html"><div class="ttname"><a href="structnlohmann_1_1detail_1_1wide__string__input__helper.html">nlohmann::detail::wide_string_input_helper</a></div><div class="ttdef"><b>Definition:</b> json.hpp:4027</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_abf29131f898b05aad2c01a9c80e7a002"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#abf29131f898b05aad2c01a9c80e7a002">nlohmann::basic_json::emplace_back</a></div><div class="ttdeci">reference emplace_back(Args &&... args)</div><div class="ttdoc">add an object to an array</div><div class="ttdef"><b>Definition:</b> json.hpp:19596</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1iteration__proxy__value_html_af2949ac0d70212738030bfda29c5bcc2"><div class="ttname"><a href="classnlohmann_1_1detail_1_1iteration__proxy__value.html#af2949ac0d70212738030bfda29c5bcc2">nlohmann::detail::iteration_proxy_value::key</a></div><div class="ttdeci">const string_type & key() const</div><div class="ttdoc">return key of the iterator</div><div class="ttdef"><b>Definition:</b> json.hpp:3350</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_ab838f000d76662917ffd6ec529569e03"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#ab838f000d76662917ffd6ec529569e03">nlohmann::basic_json::flatten</a></div><div class="ttdeci">basic_json flatten() const</div><div class="ttdoc">return flattened JSON value</div><div class="ttdef"><b>Definition:</b> json.hpp:22012</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1dtoa__impl_1_1cached__power_html_a9e89bc89bb7bf4361f43ea27eed91d23"><div class="ttname"><a href="structnlohmann_1_1detail_1_1dtoa__impl_1_1cached__power.html#a9e89bc89bb7bf4361f43ea27eed91d23">nlohmann::detail::dtoa_impl::cached_power::e</a></div><div class="ttdeci">int e</div><div class="ttdef"><b>Definition:</b> json.hpp:12959</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1file__input__adapter_html_ad59bbc7e3f23dd74475c5cb818784e42"><div class="ttname"><a href="classnlohmann_1_1detail_1_1file__input__adapter.html#ad59bbc7e3f23dd74475c5cb818784e42">nlohmann::detail::file_input_adapter::operator=</a></div><div class="ttdeci">file_input_adapter & operator=(const file_input_adapter &)=delete</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1lexer_html_a54aa290ff2f60218a8f35f1ebf81666d"><div class="ttname"><a href="classnlohmann_1_1detail_1_1lexer.html#a54aa290ff2f60218a8f35f1ebf81666d">nlohmann::detail::lexer::get_string</a></div><div class="ttdeci">string_t & get_string()</div><div class="ttdoc">return current string value (implicitly resets the token; useful only once)</div><div class="ttdef"><b>Definition:</b> json.hpp:8470</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a13e032a02a7fd8a93fdddc2fcbc4763c"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a13e032a02a7fd8a93fdddc2fcbc4763c">nlohmann::basic_json::end</a></div><div class="ttdeci">iterator end() noexcept</div><div class="ttdoc">returns an iterator to one past the last element</div><div class="ttdef"><b>Definition:</b> json.hpp:18745</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__dom__parser_html_a90f19b272530a479db81db11be2ea15c"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#a90f19b272530a479db81db11be2ea15c">nlohmann::detail::json_sax_dom_parser::number_unsigned_t</a></div><div class="ttdeci">typename BasicJsonType::number_unsigned_t number_unsigned_t</div><div class="ttdef"><b>Definition:</b> json.hpp:4458</div></div>
|
||
<div class="ttc" id="ajson_8hpp_html_a5f2aaec3b681d0a72f7d6e90b70cdcd1"><div class="ttname"><a href="json_8hpp.html#a5f2aaec3b681d0a72f7d6e90b70cdcd1">JSON_HEDLEY_RETURNS_NON_NULL</a></div><div class="ttdeci">#define JSON_HEDLEY_RETURNS_NON_NULL</div><div class="ttdef"><b>Definition:</b> json.hpp:1362</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_abf04978d85a2d5c4754f4806d42f46fd"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#abf04978d85a2d5c4754f4806d42f46fd">nlohmann::basic_json::operator+=</a></div><div class="ttdeci">reference operator+=(const typename object_t::value_type &val)</div><div class="ttdoc">add an object to an object</div><div class="ttdef"><b>Definition:</b> json.hpp:19517</div></div>
|
||
<div class="ttc" id="ajson_8hpp_html_a5338981b5ad9027c9e54b1c5597f4344"><div class="ttname"><a href="json_8hpp.html#a5338981b5ad9027c9e54b1c5597f4344">JSON_HEDLEY_NON_NULL</a></div><div class="ttdeci">#define JSON_HEDLEY_NON_NULL(...)</div><div class="ttdef"><b>Definition:</b> json.hpp:1032</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__reverse__iterator_html_a42f51a69bac7b2aebb613b2164e457f1"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#a42f51a69bac7b2aebb613b2164e457f1">nlohmann::detail::json_reverse_iterator::reference</a></div><div class="ttdeci">typename Base::reference reference</div><div class="ttdoc">the reference type for the pointed-to element</div><div class="ttdef"><b>Definition:</b> json.hpp:9989</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__dom__callback__parser_html"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html">nlohmann::detail::json_sax_dom_callback_parser</a></div><div class="ttdef"><b>Definition:</b> json.hpp:4636</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1parser_html_a37ac88c864dda495f72cb62776b0bebea49642fb732aa2e112188fba1f9d3ef7f"><div class="ttname"><a href="classnlohmann_1_1detail_1_1parser.html#a37ac88c864dda495f72cb62776b0bebea49642fb732aa2e112188fba1f9d3ef7f">nlohmann::detail::parser::parse_event_t::array_end</a></div><div class="ttdeci">@ array_end</div><div class="ttdoc">the parser read ] and finished processing a JSON array</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a99efe44b502de2762a433ce3688ec2d2"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a99efe44b502de2762a433ce3688ec2d2">nlohmann::basic_json::to_msgpack</a></div><div class="ttdeci">static void to_msgpack(const basic_json &j, detail::output_adapter< char > o)</div><div class="ttdef"><b>Definition:</b> json.hpp:21226</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1iteration__proxy_html_a90091f8492d23576edef72c5e8b9d4cf"><div class="ttname"><a href="classnlohmann_1_1detail_1_1iteration__proxy.html#a90091f8492d23576edef72c5e8b9d4cf">nlohmann::detail::iteration_proxy::end</a></div><div class="ttdeci">iteration_proxy_value< IteratorType > end() noexcept</div><div class="ttdoc">return iterator end (needed for range-based for)</div><div class="ttdef"><b>Definition:</b> json.hpp:3403</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__acceptor_html_a976bf4ce6e9a2ffe48f683ddff80af00"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#a976bf4ce6e9a2ffe48f683ddff80af00">nlohmann::detail::json_sax_acceptor::number_integer</a></div><div class="ttdeci">bool number_integer(number_integer_t)</div><div class="ttdef"><b>Definition:</b> json.hpp:4958</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1iter__impl_html_a634f85da575cb60b012a687efa26e11a"><div class="ttname"><a href="classnlohmann_1_1detail_1_1iter__impl.html#a634f85da575cb60b012a687efa26e11a">nlohmann::detail::iter_impl::operator>=</a></div><div class="ttdeci">bool operator>=(const iter_impl &other) const</div><div class="ttdoc">comparison: greater than or equal</div><div class="ttdef"><b>Definition:</b> json.hpp:9784</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__reverse__iterator_html_a549c6eb10b6434eaf772f71d129a6d79"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#a549c6eb10b6434eaf772f71d129a6d79">nlohmann::detail::json_reverse_iterator::operator-</a></div><div class="ttdeci">json_reverse_iterator operator-(difference_type i) const</div><div class="ttdoc">subtract from iterator</div><div class="ttdef"><b>Definition:</b> json.hpp:10035</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1serializer_html_a5f14c33012477b9f9876dc54d97009a0"><div class="ttname"><a href="classnlohmann_1_1detail_1_1serializer.html#a5f14c33012477b9f9876dc54d97009a0">nlohmann::detail::serializer::operator=</a></div><div class="ttdeci">serializer & operator=(const serializer &)=delete</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a875585b0cb6133902066daccd7c9d420"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a875585b0cb6133902066daccd7c9d420">nlohmann::basic_json::accept</a></div><div class="ttdeci">static bool accept(detail::input_adapter &&i)</div><div class="ttdef"><b>Definition:</b> json.hpp:20754</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_ae8cbef097f7da18a781fc86587de6b90"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#ae8cbef097f7da18a781fc86587de6b90">nlohmann::basic_json::value_t</a></div><div class="ttdeci">detail::value_t value_t</div><div class="ttdef"><b>Definition:</b> json.hpp:14751</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_ab906e29b5d83ac162e823ada2156b989"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#ab906e29b5d83ac162e823ada2156b989">nlohmann::basic_json::number_unsigned_t</a></div><div class="ttdeci">NumberUnsignedType number_unsigned_t</div><div class="ttdoc">a type for a number (unsigned)</div><div class="ttdef"><b>Definition:</b> json.hpp:15294</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_ab330c13ba254ea41fbc1c52c5c610f45"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#ab330c13ba254ea41fbc1c52c5c610f45">nlohmann::basic_json::parse</a></div><div class="ttdeci">static basic_json parse(IteratorType first, IteratorType last, const parser_callback_t cb=nullptr, const bool allow_exceptions=true)</div><div class="ttdoc">deserialize from an iterator range with contiguous storage</div><div class="ttdef"><b>Definition:</b> json.hpp:20877</div></div>
|
||
<div class="ttc" id="anamespacenlohmann_1_1detail_html_a9b680ddfb58f27eb53a67229447fc556"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#a9b680ddfb58f27eb53a67229447fc556">nlohmann::detail::output_adapter_t</a></div><div class="ttdeci">std::shared_ptr< output_adapter_protocol< CharType > > output_adapter_t</div><div class="ttdoc">a type to simplify interfaces</div><div class="ttdef"><b>Definition:</b> json.hpp:11207</div></div>
|
||
<div class="ttc" id="anamespacenlohmann_1_1detail_html_a09169efff3bd1771fff29bd92cea19e0"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#a09169efff3bd1771fff29bd92cea19e0">nlohmann::detail::operator<</a></div><div class="ttdeci">bool operator<(const value_t lhs, const value_t rhs) noexcept</div><div class="ttdoc">comparison operator for JSON types</div><div class="ttdef"><b>Definition:</b> json.hpp:2877</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_aef302e3ae215e46e5035d0e4fdf47235"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#aef302e3ae215e46e5035d0e4fdf47235">nlohmann::basic_json::operator==</a></div><div class="ttdeci">friend bool operator==(const ScalarType lhs, const_reference rhs) noexcept</div><div class="ttdoc">comparison: equal</div><div class="ttdef"><b>Definition:</b> json.hpp:20296</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1iter__impl_html_a71f84fb6e009619f12972bcf9002b8cd"><div class="ttname"><a href="classnlohmann_1_1detail_1_1iter__impl.html#a71f84fb6e009619f12972bcf9002b8cd">nlohmann::detail::iter_impl::iter_impl</a></div><div class="ttdeci">iter_impl(const iter_impl< const BasicJsonType > &other) noexcept</div><div class="ttdoc">const copy constructor</div><div class="ttdef"><b>Definition:</b> json.hpp:9434</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_abc7378cba0613a78b9aad1c8e7044bb0"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#abc7378cba0613a78b9aad1c8e7044bb0">nlohmann::basic_json::is_number_unsigned</a></div><div class="ttdeci">constexpr bool is_number_unsigned() const noexcept</div><div class="ttdoc">return whether value is an unsigned integer number</div><div class="ttdef"><b>Definition:</b> json.hpp:16800</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1parser_html_a1a2bd258b7e99f86b7e6a3c41373ba55"><div class="ttname"><a href="classnlohmann_1_1detail_1_1parser.html#a1a2bd258b7e99f86b7e6a3c41373ba55">nlohmann::detail::parser::parser</a></div><div class="ttdeci">parser(detail::input_adapter_t &&adapter, const parser_callback_t cb=nullptr, const bool allow_exceptions_=true)</div><div class="ttdoc">a parser reading from an input adapter</div><div class="ttdef"><b>Definition:</b> json.hpp:8714</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1is__constructible__array__type__impl_html"><div class="ttname"><a href="structnlohmann_1_1detail_1_1is__constructible__array__type__impl.html">nlohmann::detail::is_constructible_array_type_impl</a></div><div class="ttdef"><b>Definition:</b> json.hpp:2713</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a011397134847f36db0ed7d7a93753677"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a011397134847f36db0ed7d7a93753677">nlohmann::basic_json::back</a></div><div class="ttdeci">reference back()</div><div class="ttdoc">access the last element</div><div class="ttdef"><b>Definition:</b> json.hpp:18173</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1primitive__iterator__t_html_ae5aed974605469fe0dfeddc6c4a7056d"><div class="ttname"><a href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#ae5aed974605469fe0dfeddc6c4a7056d">nlohmann::detail::primitive_iterator_t::operator--</a></div><div class="ttdeci">const primitive_iterator_t operator--(int) noexcept</div><div class="ttdef"><b>Definition:</b> json.hpp:9254</div></div>
|
||
<div class="ttc" id="anamespacenlohmann_1_1detail_html_aa554fc6a11519e4f347deb25a9f0db40"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40">nlohmann::detail::input_format_t</a></div><div class="ttdeci">input_format_t</div><div class="ttdoc">the supported input formats</div><div class="ttdef"><b>Definition:</b> json.hpp:3887</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a73ae333487310e3302135189ce8ff5d8"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a73ae333487310e3302135189ce8ff5d8">nlohmann::basic_json::at</a></div><div class="ttdeci">reference at(size_type idx)</div><div class="ttdoc">access specified array element with bounds checking</div><div class="ttdef"><b>Definition:</b> json.hpp:17519</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1iter__impl_html_ac6f71b36d7c87e427d1fee83f2600fad"><div class="ttname"><a href="classnlohmann_1_1detail_1_1iter__impl.html#ac6f71b36d7c87e427d1fee83f2600fad">nlohmann::detail::iter_impl::operator<=</a></div><div class="ttdeci">bool operator<=(const iter_impl &other) const</div><div class="ttdoc">comparison: less than or equal</div><div class="ttdef"><b>Definition:</b> json.hpp:9766</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_af8f511af124e82e4579f444b4175787c"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#af8f511af124e82e4579f444b4175787c">nlohmann::basic_json::is_object</a></div><div class="ttdeci">constexpr bool is_object() const noexcept</div><div class="ttdoc">return whether value is an object</div><div class="ttdef"><b>Definition:</b> json.hpp:16850</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_aed115142bd0c6c66c864700e0467df55"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#aed115142bd0c6c66c864700e0467df55">nlohmann::basic_json::basic_json</a></div><div class="ttdeci">basic_json(const value_t v)</div><div class="ttdoc">create an empty value with a given type</div><div class="ttdef"><b>Definition:</b> json.hpp:15752</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1serializer_html_aa6c62b51cbebb185307df851dc0167f0"><div class="ttname"><a href="classnlohmann_1_1detail_1_1serializer.html#aa6c62b51cbebb185307df851dc0167f0">nlohmann::detail::serializer::~serializer</a></div><div class="ttdeci">~serializer()=default</div></div>
|
||
<div class="ttc" id="anamespacenlohmann_1_1detail_html_a5a76b60b26dc8c47256a996d18d967dfa2133fd717402a7966ee88d06f9e0b792"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#a5a76b60b26dc8c47256a996d18d967dfa2133fd717402a7966ee88d06f9e0b792">nlohmann::detail::error_handler_t::strict</a></div><div class="ttdeci">@ strict</div><div class="ttdoc">throw a type_error exception in case of invalid UTF-8</div></div>
|
||
<div class="ttc" id="anamespacenlohmann_1_1detail_1_1dtoa__impl_html_a4a750fcc38da1ce68b7e25ab3a230e20"><div class="ttname"><a href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#a4a750fcc38da1ce68b7e25ab3a230e20">nlohmann::detail::dtoa_impl::kGamma</a></div><div class="ttdeci">constexpr int kGamma</div><div class="ttdef"><b>Definition:</b> json.hpp:12954</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a677318a34ade7f8177a2784c06aa3671"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a677318a34ade7f8177a2784c06aa3671">nlohmann::basic_json::meta</a></div><div class="ttdeci">static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json meta()</div><div class="ttdoc">returns version information on the library</div><div class="ttdef"><b>Definition:</b> json.hpp:14866</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1json__pointer_html_a4b1ee4d511ca195bed896a3da47e264c"><div class="ttname"><a href="classnlohmann_1_1json__pointer.html#a4b1ee4d511ca195bed896a3da47e264c">nlohmann::json_pointer::pop_back</a></div><div class="ttdeci">void pop_back()</div><div class="ttdoc">remove last reference token</div><div class="ttdef"><b>Definition:</b> json.hpp:10320</div></div>
|
||
<div class="ttc" id="anamespacenlohmann_1_1detail_html_a4a3e14a011b9ea1ff849fc6d2411e6a0"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#a4a3e14a011b9ea1ff849fc6d2411e6a0">nlohmann::detail::number_integer_function_t</a></div><div class="ttdeci">decltype(std::declval< T & >().number_integer(std::declval< Integer >())) number_integer_function_t</div><div class="ttdef"><b>Definition:</b> json.hpp:5039</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp_html_aea90459e340a231ca31d46946803ef51"><div class="ttname"><a href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#aea90459e340a231ca31d46946803ef51">nlohmann::detail::dtoa_impl::diyfp::f</a></div><div class="ttdeci">std::uint64_t f</div><div class="ttdef"><b>Definition:</b> json.hpp:12703</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a2566783e190dec524bf3445b322873b8"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a2566783e190dec524bf3445b322873b8">nlohmann::basic_json::to_cbor</a></div><div class="ttdeci">static std::vector< uint8_t > to_cbor(const basic_json &j)</div><div class="ttdoc">create a CBOR serialization of a given JSON value</div><div class="ttdef"><b>Definition:</b> json.hpp:21118</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a74fa3ab2003f2f6f2b69deaafed9126d"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a74fa3ab2003f2f6f2b69deaafed9126d">nlohmann::basic_json::unflatten</a></div><div class="ttdeci">basic_json unflatten() const</div><div class="ttdoc">unflatten a previously flattened JSON value</div><div class="ttdef"><b>Definition:</b> json.hpp:22049</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1iterator__traits_html"><div class="ttname"><a href="structnlohmann_1_1detail_1_1iterator__traits.html">nlohmann::detail::iterator_traits</a></div><div class="ttdef"><b>Definition:</b> json.hpp:2297</div></div>
|
||
<div class="ttc" id="ajson_8hpp_html_a0f2cbf281fa983a844b9279c697b7a0c"><div class="ttname"><a href="json_8hpp.html#a0f2cbf281fa983a844b9279c697b7a0c">JSON_HEDLEY_DEPRECATED</a></div><div class="ttdeci">#define JSON_HEDLEY_DEPRECATED(since)</div><div class="ttdef"><b>Definition:</b> json.hpp:860</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__acceptor_html_ad15b288f3351287edbe289502f595491"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#ad15b288f3351287edbe289502f595491">nlohmann::detail::json_sax_acceptor::number_unsigned</a></div><div class="ttdeci">bool number_unsigned(number_unsigned_t)</div><div class="ttdef"><b>Definition:</b> json.hpp:4963</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_ad6a18403e7fbac9c4efd06facc71fc88"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#ad6a18403e7fbac9c4efd06facc71fc88">nlohmann::basic_json::value</a></div><div class="ttdeci">string_t value(const typename object_t::key_type &key, const char *default_value) const</div><div class="ttdoc">overload for a default value of type const char*</div><div class="ttdef"><b>Definition:</b> json.hpp:18025</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__dom__callback__parser_html_acabb231463bf669441c22e4ea385a9fb"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#acabb231463bf669441c22e4ea385a9fb">nlohmann::detail::json_sax_dom_callback_parser::number_unsigned</a></div><div class="ttdeci">bool number_unsigned(number_unsigned_t val)</div><div class="ttdef"><b>Definition:</b> json.hpp:4679</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1json__sax_html_ae7c31614e8a82164d2d7f8dbf4671b25"><div class="ttname"><a href="structnlohmann_1_1json__sax.html#ae7c31614e8a82164d2d7f8dbf4671b25">nlohmann::json_sax::number_float</a></div><div class="ttdeci">virtual bool number_float(number_float_t val, const string_t &s)=0</div><div class="ttdoc">an floating-point number was read</div></div>
|
||
<div class="ttc" id="anamespacenlohmann_1_1detail_html_a59fca69799f6b9e366710cb9043aa77d"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#a59fca69799f6b9e366710cb9043aa77d">nlohmann::detail::void</a></div><div class="ttdeci">j template void())</div><div class="ttdef"><b>Definition:</b> json.hpp:3108</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__dom__parser_html_a056b895d011efaf48ea096c024aca0d4"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#a056b895d011efaf48ea096c024aca0d4">nlohmann::detail::json_sax_dom_parser::start_array</a></div><div class="ttdeci">bool start_array(std::size_t len)</div><div class="ttdef"><b>Definition:</b> json.hpp:4540</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__dom__callback__parser_html_aac6e64f0b59c9150cde974e182d5ecab"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#aac6e64f0b59c9150cde974e182d5ecab">nlohmann::detail::json_sax_dom_callback_parser::parse_error</a></div><div class="ttdeci">bool parse_error(std::size_t, const std::string &, const detail::exception &ex)</div><div class="ttdef"><b>Definition:</b> json.hpp:4806</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a1ecce113ff11dd294689ee4d45cbb855"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a1ecce113ff11dd294689ee4d45cbb855">nlohmann::basic_json::insert</a></div><div class="ttdeci">iterator insert(const_iterator pos, basic_json &&val)</div><div class="ttdoc">inserts element</div><div class="ttdef"><b>Definition:</b> json.hpp:19739</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a88cbcefe9a3f4d294bed0653550a5cb9"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a88cbcefe9a3f4d294bed0653550a5cb9">nlohmann::basic_json::erase</a></div><div class="ttdeci">void erase(const size_type idx)</div><div class="ttdoc">remove element from a JSON array given an index</div><div class="ttdef"><b>Definition:</b> json.hpp:18467</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1dtoa__impl_1_1boundaries_html_aec4e5028333c01f3229062f31ce16763"><div class="ttname"><a href="structnlohmann_1_1detail_1_1dtoa__impl_1_1boundaries.html#aec4e5028333c01f3229062f31ce16763">nlohmann::detail::dtoa_impl::boundaries::minus</a></div><div class="ttdeci">diyfp minus</div><div class="ttdef"><b>Definition:</b> json.hpp:12820</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a72be3c24bfa24f0993d6c11af03e7404"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a72be3c24bfa24f0993d6c11af03e7404">nlohmann::basic_json::const_reverse_iterator</a></div><div class="ttdeci">json_reverse_iterator< typename basic_json::const_iterator > const_reverse_iterator</div><div class="ttdoc">a const reverse iterator for a basic_json container</div><div class="ttdef"><b>Definition:</b> json.hpp:14826</div></div>
|
||
<div class="ttc" id="ajson_8hpp_html_a985d3b82445302c57257f6432f261fe9"><div class="ttname"><a href="json_8hpp.html#a985d3b82445302c57257f6432f261fe9">JSON_TRY</a></div><div class="ttdeci">#define JSON_TRY</div><div class="ttdef"><b>Definition:</b> json.hpp:1755</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1input__adapter__protocol_html"><div class="ttname"><a href="structnlohmann_1_1detail_1_1input__adapter__protocol.html">nlohmann::detail::input_adapter_protocol</a></div><div class="ttdoc">abstract input adapter interface</div><div class="ttdef"><b>Definition:</b> json.hpp:3904</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1iter__impl_html_a5ca57856d9bba54a5fc51cee891de827"><div class="ttname"><a href="classnlohmann_1_1detail_1_1iter__impl.html#a5ca57856d9bba54a5fc51cee891de827">nlohmann::detail::iter_impl::operator*</a></div><div class="ttdeci">reference operator*() const</div><div class="ttdoc">return a reference to the value pointed to by the iterator</div><div class="ttdef"><b>Definition:</b> json.hpp:9546</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a61f8566a1a85a424c7266fb531dca005"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a61f8566a1a85a424c7266fb531dca005">nlohmann::basic_json::string_t</a></div><div class="ttdeci">StringType string_t</div><div class="ttdoc">a type for a string</div><div class="ttdef"><b>Definition:</b> json.hpp:15125</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_ab23b04802eb9da97dc3f664e54e09cb3"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#ab23b04802eb9da97dc3f664e54e09cb3">nlohmann::basic_json::contains</a></div><div class="ttdeci">bool contains(const json_pointer &ptr) const</div><div class="ttdoc">check the existence of an element in a JSON object given a JSON pointer</div><div class="ttdef"><b>Definition:</b> json.hpp:18635</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__ref_html_a8bcd4cfcafe952ce5140f8cb35ebe2f6"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__ref.html#a8bcd4cfcafe952ce5140f8cb35ebe2f6">nlohmann::detail::json_ref::~json_ref</a></div><div class="ttdeci">~json_ref()=default</div></div>
|
||
<div class="ttc" id="anamespacenlohmann_1_1detail_html_a44869ca9f422b260625d78e4e8121559"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#a44869ca9f422b260625d78e4e8121559">nlohmann::detail::key_function_t</a></div><div class="ttdeci">decltype(std::declval< T & >().key(std::declval< String & >())) key_function_t</div><div class="ttdef"><b>Definition:</b> json.hpp:5059</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1exception_html_a0d4589a3fb54e81646d986c05efa3b9a"><div class="ttname"><a href="classnlohmann_1_1detail_1_1exception.html#a0d4589a3fb54e81646d986c05efa3b9a">nlohmann::detail::exception::id</a></div><div class="ttdeci">const int id</div><div class="ttdoc">the id of the exception</div><div class="ttdef"><b>Definition:</b> json.hpp:1875</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1nonesuch_html_a7b1119845860e548b67f1644a2084373"><div class="ttname"><a href="structnlohmann_1_1detail_1_1nonesuch.html#a7b1119845860e548b67f1644a2084373">nlohmann::detail::nonesuch::~nonesuch</a></div><div class="ttdeci">~nonesuch()=delete</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1json__sax_html_ad0c722d53ff97be700ccf6a9468bd456"><div class="ttname"><a href="structnlohmann_1_1json__sax.html#ad0c722d53ff97be700ccf6a9468bd456">nlohmann::json_sax::end_object</a></div><div class="ttdeci">virtual bool end_object()=0</div><div class="ttdoc">the end of an object was read</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1serializer_html_ac010525281d97867ee842da37294fe83"><div class="ttname"><a href="classnlohmann_1_1detail_1_1serializer.html#ac010525281d97867ee842da37294fe83">nlohmann::detail::serializer::serializer</a></div><div class="ttdeci">serializer(output_adapter_t< char > s, const char ichar, error_handler_t error_handler_=error_handler_t::strict)</div><div class="ttdef"><b>Definition:</b> json.hpp:13802</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1input__adapter_html_a19fb8c28f37b23099a4353acf0a9a2f1"><div class="ttname"><a href="classnlohmann_1_1detail_1_1input__adapter.html#a19fb8c28f37b23099a4353acf0a9a2f1">nlohmann::detail::input_adapter::input_adapter</a></div><div class="ttdeci">input_adapter(std::FILE *file)</div><div class="ttdef"><b>Definition:</b> json.hpp:4202</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1iter__impl_html_a0d14cd76203e00bdcef6a64a5d055cc7"><div class="ttname"><a href="classnlohmann_1_1detail_1_1iter__impl.html#a0d14cd76203e00bdcef6a64a5d055cc7">nlohmann::detail::iter_impl::operator<</a></div><div class="ttdeci">bool operator<(const iter_impl &other) const</div><div class="ttdoc">comparison: smaller</div><div class="ttdef"><b>Definition:</b> json.hpp:9739</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a68e3a92b3d9be1faa05c92d096299189"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a68e3a92b3d9be1faa05c92d096299189">nlohmann::basic_json::operator>=</a></div><div class="ttdeci">friend bool operator>=(const_reference lhs, const ScalarType rhs) noexcept</div><div class="ttdoc">comparison: greater than or equal</div><div class="ttdef"><b>Definition:</b> json.hpp:20586</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1lexer_html_a3f313cdbe187cababfc5e06f0b69b098a42dd1a73d072bb6bf3f494f22b15db8e"><div class="ttname"><a href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098a42dd1a73d072bb6bf3f494f22b15db8e">nlohmann::detail::lexer::token_type::uninitialized</a></div><div class="ttdeci">@ uninitialized</div><div class="ttdoc">indicating the scanner is uninitialized</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_ab6816ae5100409254ed0a8bc21c387bb"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#ab6816ae5100409254ed0a8bc21c387bb">nlohmann::basic_json::basic_json</a></div><div class="ttdeci">basic_json(size_type cnt, const basic_json &val)</div><div class="ttdoc">construct an array with count copies of given value</div><div class="ttdef"><b>Definition:</b> json.hpp:16160</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1external__constructor_html"><div class="ttname"><a href="structnlohmann_1_1detail_1_1external__constructor.html">nlohmann::detail::external_constructor</a></div><div class="ttdef"><b>Definition:</b> json.hpp:3470</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1iterator__types_3_01It_00_01void__t_3_01typename_01It_1_1difference_d2be8685966c97e00e99d4fd2366dc0b_html_ac70fcab4cacd8b386c3f2b056885e15e"><div class="ttname"><a href="structnlohmann_1_1detail_1_1iterator__types_3_01It_00_01void__t_3_01typename_01It_1_1difference_d2be8685966c97e00e99d4fd2366dc0b.html#ac70fcab4cacd8b386c3f2b056885e15e">nlohmann::detail::iterator_types< It, void_t< typename It::difference_type, typename It::value_type, typename It::pointer, typename It::reference, typename It::iterator_category > >::value_type</a></div><div class="ttdeci">typename It::value_type value_type</div><div class="ttdef"><b>Definition:</b> json.hpp:2288</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_ac77aed0925d447744676725ab0b6d535"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#ac77aed0925d447744676725ab0b6d535">nlohmann::basic_json::rend</a></div><div class="ttdeci">reverse_iterator rend() noexcept</div><div class="ttdoc">returns an iterator to the reverse-end</div><div class="ttdef"><b>Definition:</b> json.hpp:18852</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_afbd800010b67619463c0fce6e74f7878"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#afbd800010b67619463c0fce6e74f7878">nlohmann::basic_json::get_ref</a></div><div class="ttdeci">ReferenceType get_ref()</div><div class="ttdoc">get a reference value (implicit)</div><div class="ttdef"><b>Definition:</b> json.hpp:17414</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a2b9852390abb4b1ef5fac6984e2fc0f3"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a2b9852390abb4b1ef5fac6984e2fc0f3">nlohmann::basic_json::is_number</a></div><div class="ttdeci">constexpr bool is_number() const noexcept</div><div class="ttdoc">return whether value is a number</div><div class="ttdef"><b>Definition:</b> json.hpp:16743</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a8ca5dd4f18b59e7022b04fd9bf7f5176"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a8ca5dd4f18b59e7022b04fd9bf7f5176">nlohmann::basic_json::to_bson</a></div><div class="ttdeci">static std::vector< uint8_t > to_bson(const basic_json &j)</div><div class="ttdoc">Serializes the given JSON object j to BSON and returns a vector containing the corresponding BSON-rep...</div><div class="ttdef"><b>Definition:</b> json.hpp:21388</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a1e0769d22d54573f294da0e5c6abc9de"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a1e0769d22d54573f294da0e5c6abc9de">nlohmann::basic_json::crbegin</a></div><div class="ttdeci">const_reverse_iterator crbegin() const noexcept</div><div class="ttdoc">returns a const reverse iterator to the last element</div><div class="ttdef"><b>Definition:</b> json.hpp:18889</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1lexer_html_a56640fb92293e0c17742ca3c814d74d6"><div class="ttname"><a href="classnlohmann_1_1detail_1_1lexer.html#a56640fb92293e0c17742ca3c814d74d6">nlohmann::detail::lexer::get_number_unsigned</a></div><div class="ttdeci">constexpr number_unsigned_t get_number_unsigned() const noexcept</div><div class="ttdoc">return unsigned integer value</div><div class="ttdef"><b>Definition:</b> json.hpp:8458</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1internal__iterator_html_a2b3bb45f968210e42c282017eeeb63a8"><div class="ttname"><a href="structnlohmann_1_1detail_1_1internal__iterator.html#a2b3bb45f968210e42c282017eeeb63a8">nlohmann::detail::internal_iterator::primitive_iterator</a></div><div class="ttdeci">primitive_iterator_t primitive_iterator</div><div class="ttdoc">generic iterator for all other types</div><div class="ttdef"><b>Definition:</b> json.hpp:9294</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1position__t_html_a4bbad8bc2c0d17c1b61c3ce729908b71"><div class="ttname"><a href="structnlohmann_1_1detail_1_1position__t.html#a4bbad8bc2c0d17c1b61c3ce729908b71">nlohmann::detail::position_t::lines_read</a></div><div class="ttdeci">std::size_t lines_read</div><div class="ttdoc">the number of lines read</div><div class="ttdef"><b>Definition:</b> json.hpp:96</div></div>
|
||
<div class="ttc" id="anamespacenlohmann_1_1detail_html_a1ed8fc6239da25abcaf681d30ace4985adce7cc8ec29055c4158828921f2f265e"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985adce7cc8ec29055c4158828921f2f265e">nlohmann::detail::value_t::number_unsigned</a></div><div class="ttdeci">@ number_unsigned</div><div class="ttdoc">number value (unsigned integer)</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_ad70a098fbc01c53497db29d3b5b656a9"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#ad70a098fbc01c53497db29d3b5b656a9">nlohmann::basic_json::initializer_list_t</a></div><div class="ttdeci">std::initializer_list< detail::json_ref< basic_json > > initializer_list_t</div><div class="ttdoc">helper type for initializer lists of basic_json values</div><div class="ttdef"><b>Definition:</b> json.hpp:14759</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1binary__reader_html_ab94a54d6e595c2620b07589cf4116256"><div class="ttname"><a href="classnlohmann_1_1detail_1_1binary__reader.html#ab94a54d6e595c2620b07589cf4116256">nlohmann::detail::binary_reader::sax_parse</a></div><div class="ttdeci">bool sax_parse(const input_format_t format, json_sax_t *sax_, const bool strict=true)</div><div class="ttdef"><b>Definition:</b> json.hpp:5210</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1is__compatible__type_html"><div class="ttname"><a href="structnlohmann_1_1detail_1_1is__compatible__type.html">nlohmann::detail::is_compatible_type</a></div><div class="ttdef"><b>Definition:</b> json.hpp:2795</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1binary__reader_html"><div class="ttname"><a href="classnlohmann_1_1detail_1_1binary__reader.html">nlohmann::detail::binary_reader</a></div><div class="ttdoc">deserialization of CBOR, MessagePack, and UBJSON values</div><div class="ttdef"><b>Definition:</b> json.hpp:5175</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1is__compatible__array__type_html"><div class="ttname"><a href="structnlohmann_1_1detail_1_1is__compatible__array__type.html">nlohmann::detail::is_compatible_array_type</a></div><div class="ttdef"><b>Definition:</b> json.hpp:2709</div></div>
|
||
<div class="ttc" id="anamespacenlohmann_1_1detail_html_a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985af1f713c9e000f5d3f280adbd124df4f5">nlohmann::detail::value_t::array</a></div><div class="ttdeci">@ array</div><div class="ttdoc">array (ordered collection of values)</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1string_01_4_html_a74f56b9ca1d4e8db9751353d76668322"><div class="ttname"><a href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1string_01_4.html#a74f56b9ca1d4e8db9751353d76668322">nlohmann::detail::external_constructor< value_t::string >::construct</a></div><div class="ttdeci">static void construct(BasicJsonType &j, typename BasicJsonType::string_t &&s)</div><div class="ttdef"><b>Definition:</b> json.hpp:3496</div></div>
|
||
<div class="ttc" id="anamespacenlohmann_1_1detail_html_a1711ee5cef66a0523055c8d9f024f322"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#a1711ee5cef66a0523055c8d9f024f322">nlohmann::detail::from_json_function</a></div><div class="ttdeci">decltype(T::from_json(std::declval< Args >()...)) from_json_function</div><div class="ttdef"><b>Definition:</b> json.hpp:2513</div></div>
|
||
<div class="ttc" id="anamespacenlohmann_1_1detail_1_1dtoa__impl_html_ad90f19ed10d8133b727df4b9bc5ddf5c"><div class="ttname"><a href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#ad90f19ed10d8133b727df4b9bc5ddf5c">nlohmann::detail::dtoa_impl::append_exponent</a></div><div class="ttdeci">JSON_HEDLEY_RETURNS_NON_NULL char * append_exponent(char *buf, int e)</div><div class="ttdoc">appends a decimal representation of e to buf</div><div class="ttdef"><b>Definition:</b> json.hpp:13572</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__dom__callback__parser_html_a3ba8fc7a8d83c5b0eeb3b543ad844b8d"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a3ba8fc7a8d83c5b0eeb3b543ad844b8d">nlohmann::detail::json_sax_dom_callback_parser::number_integer_t</a></div><div class="ttdeci">typename BasicJsonType::number_integer_t number_integer_t</div><div class="ttdef"><b>Definition:</b> json.hpp:4639</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_af66db22ad819346a688042a9da68ee5f"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#af66db22ad819346a688042a9da68ee5f">nlohmann::basic_json::to_ubjson</a></div><div class="ttdeci">static void to_ubjson(const basic_json &j, detail::output_adapter< char > o, const bool use_size=false, const bool use_type=false)</div><div class="ttdef"><b>Definition:</b> json.hpp:21326</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a93403e803947b86f4da2d1fb3345cf2c"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a93403e803947b86f4da2d1fb3345cf2c">nlohmann::basic_json::at</a></div><div class="ttdeci">reference at(const typename object_t::key_type &key)</div><div class="ttdoc">access specified object element with bounds checking</div><div class="ttdef"><b>Definition:</b> json.hpp:17617</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1json__pointer_html_ac228b13596d3c34185da9fe61b570194"><div class="ttname"><a href="classnlohmann_1_1json__pointer.html#ac228b13596d3c34185da9fe61b570194">nlohmann::json_pointer::push_back</a></div><div class="ttdeci">void push_back(std::string &&token)</div><div class="ttdoc">append an unescaped token at the end of the reference pointer</div><div class="ttdef"><b>Definition:</b> json.hpp:10372</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1binary__reader_html_a87826b833ee7fec146c97233bb0f6ab8"><div class="ttname"><a href="classnlohmann_1_1detail_1_1binary__reader.html#a87826b833ee7fec146c97233bb0f6ab8">nlohmann::detail::binary_reader::operator=</a></div><div class="ttdeci">binary_reader & operator=(const binary_reader &)=delete</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1input__adapter_html_a58163eaa485b17dd878d3c782efc1e43"><div class="ttname"><a href="classnlohmann_1_1detail_1_1input__adapter.html#a58163eaa485b17dd878d3c782efc1e43">nlohmann::detail::input_adapter::input_adapter</a></div><div class="ttdeci">input_adapter(const std::u16string &ws)</div><div class="ttdef"><b>Definition:</b> json.hpp:4215</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__ref_html_adb652774a67829876449dc0b30637456"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__ref.html#adb652774a67829876449dc0b30637456">nlohmann::detail::json_ref::operator-></a></div><div class="ttdeci">value_type const * operator->() const</div><div class="ttdef"><b>Definition:</b> json.hpp:11146</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1dtoa__impl_1_1boundaries_html_a3321ae2816a6ec5250a0d8e29f798232"><div class="ttname"><a href="structnlohmann_1_1detail_1_1dtoa__impl_1_1boundaries.html#a3321ae2816a6ec5250a0d8e29f798232">nlohmann::detail::dtoa_impl::boundaries::plus</a></div><div class="ttdeci">diyfp plus</div><div class="ttdef"><b>Definition:</b> json.hpp:12821</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_ac8e523ddc8c2dd7e5d2daf0d49a9c0d7"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#ac8e523ddc8c2dd7e5d2daf0d49a9c0d7">nlohmann::basic_json::push_back</a></div><div class="ttdeci">void push_back(basic_json &&val)</div><div class="ttdoc">add an object to an array</div><div class="ttdef"><b>Definition:</b> json.hpp:19406</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1type__error_html_aecc083aea4b698c33d042670ba50c10f"><div class="ttname"><a href="classnlohmann_1_1detail_1_1type__error.html#aecc083aea4b698c33d042670ba50c10f">nlohmann::detail::type_error::create</a></div><div class="ttdeci">static type_error create(int id_, const std::string &what_arg)</div><div class="ttdef"><b>Definition:</b> json.hpp:2078</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__dom__parser_html_a4b93deb5c1d716dcfb33b3ed8a00ac4d"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#a4b93deb5c1d716dcfb33b3ed8a00ac4d">nlohmann::detail::json_sax_dom_parser::~json_sax_dom_parser</a></div><div class="ttdeci">~json_sax_dom_parser()=default</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a51df13f73a970da95c3dcb3d47b0c2c4"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a51df13f73a970da95c3dcb3d47b0c2c4">nlohmann::basic_json::to_bson</a></div><div class="ttdeci">static void to_bson(const basic_json &j, detail::output_adapter< uint8_t > o)</div><div class="ttdoc">Serializes the given JSON object j to BSON and forwards the corresponding BSON-representation to the ...</div><div class="ttdef"><b>Definition:</b> json.hpp:21403</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp_html_ad8798a8823a49c8412f0fada9892c918"><div class="ttname"><a href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#ad8798a8823a49c8412f0fada9892c918">nlohmann::detail::dtoa_impl::diyfp::diyfp</a></div><div class="ttdeci">constexpr diyfp(std::uint64_t f_, int e_) noexcept</div><div class="ttdef"><b>Definition:</b> json.hpp:12706</div></div>
|
||
<div class="ttc" id="anamespacenlohmann_1_1detail_html_a37e97a32d0b94ce5f745427e4e40204d"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#a37e97a32d0b94ce5f745427e4e40204d">nlohmann::detail::detected_t</a></div><div class="ttdeci">typename detector< nonesuch, void, Op, Args... >::type detected_t</div><div class="ttdef"><b>Definition:</b> json.hpp:2367</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a25e27ad0c6d53c01871c5485e1f75b96"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a25e27ad0c6d53c01871c5485e1f75b96">nlohmann::basic_json::size</a></div><div class="ttdeci">size_type size() const noexcept</div><div class="ttdoc">returns the number of elements</div><div class="ttdef"><b>Definition:</b> json.hpp:19195</div></div>
|
||
<div class="ttc" id="anamespacenlohmann_1_1detail_html_af52d6d2521c386998ae940d118182ebc"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#af52d6d2521c386998ae940d118182ebc">nlohmann::detail::end_object_function_t</a></div><div class="ttdeci">decltype(std::declval< T & >().end_object()) end_object_function_t</div><div class="ttdef"><b>Definition:</b> json.hpp:5062</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_ae1ece6c2059114eac10873f13ef19185"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#ae1ece6c2059114eac10873f13ef19185">nlohmann::basic_json::to_ubjson</a></div><div class="ttdeci">static std::vector< uint8_t > to_ubjson(const basic_json &j, const bool use_size=false, const bool use_type=false)</div><div class="ttdoc">create a UBJSON serialization of a given JSON value</div><div class="ttdef"><b>Definition:</b> json.hpp:21311</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1json__pointer_html_a6779edcf28e6f018a3bbb29c0b4b5e1e"><div class="ttname"><a href="classnlohmann_1_1json__pointer.html#a6779edcf28e6f018a3bbb29c0b4b5e1e">nlohmann::json_pointer::operator!=</a></div><div class="ttdeci">friend bool operator!=(json_pointer const &lhs, json_pointer const &rhs) noexcept</div><div class="ttdoc">compares two JSON pointers for inequality</div><div class="ttdef"><b>Definition:</b> json.hpp:11076</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1is__compatible__array__type__impl_html"><div class="ttname"><a href="structnlohmann_1_1detail_1_1is__compatible__array__type__impl.html">nlohmann::detail::is_compatible_array_type_impl</a></div><div class="ttdef"><b>Definition:</b> json.hpp:2690</div></div>
|
||
<div class="ttc" id="anamespacenlohmann_1_1detail_html_a5262e531c46e357b33007060f294673b"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#a5262e531c46e357b33007060f294673b">nlohmann::detail::is_detected_convertible</a></div><div class="ttdeci">std::is_convertible< detected_t< Op, Args... >, To > is_detected_convertible</div><div class="ttdef"><b>Definition:</b> json.hpp:2380</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__acceptor_html_a5502f483fc60a1bcd73e0e46b6ab36e4"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#a5502f483fc60a1bcd73e0e46b6ab36e4">nlohmann::detail::json_sax_acceptor::number_float_t</a></div><div class="ttdeci">typename BasicJsonType::number_float_t number_float_t</div><div class="ttdef"><b>Definition:</b> json.hpp:4945</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1iteration__proxy__value_html_adf4db2aef31822f3a179435158a4de11"><div class="ttname"><a href="classnlohmann_1_1detail_1_1iteration__proxy__value.html#adf4db2aef31822f3a179435158a4de11">nlohmann::detail::iteration_proxy_value::operator++</a></div><div class="ttdeci">iteration_proxy_value & operator++()</div><div class="ttdoc">increment operator (needed for range-based for)</div><div class="ttdef"><b>Definition:</b> json.hpp:3329</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1output__adapter__protocol_html"><div class="ttname"><a href="structnlohmann_1_1detail_1_1output__adapter__protocol.html">nlohmann::detail::output_adapter_protocol</a></div><div class="ttdoc">abstract output adapter interface</div><div class="ttdef"><b>Definition:</b> json.hpp:11198</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1iteration__proxy__value_html_a459dd8961b80b2089d8161c9aa466581"><div class="ttname"><a href="classnlohmann_1_1detail_1_1iteration__proxy__value.html#a459dd8961b80b2089d8161c9aa466581">nlohmann::detail::iteration_proxy_value::iteration_proxy_value</a></div><div class="ttdeci">iteration_proxy_value(IteratorType it) noexcept</div><div class="ttdef"><b>Definition:</b> json.hpp:3320</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_acac9d438c9bb12740dcdb01069293a34"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#acac9d438c9bb12740dcdb01069293a34">nlohmann::basic_json::at</a></div><div class="ttdeci">const_reference at(const typename object_t::key_type &key) const</div><div class="ttdoc">access specified object element with bounds checking</div><div class="ttdef"><b>Definition:</b> json.hpp:17668</div></div>
|
||
<div class="ttc" id="anamespacenlohmann_1_1detail_html_a1ed8fc6239da25abcaf681d30ace4985a94708897ec9db8647dfe695714c98e46"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a94708897ec9db8647dfe695714c98e46">nlohmann::detail::value_t::discarded</a></div><div class="ttdeci">@ discarded</div><div class="ttdoc">discarded by the the parser callback function</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1parser_html_a37ac88c864dda495f72cb62776b0bebe"><div class="ttname"><a href="classnlohmann_1_1detail_1_1parser.html#a37ac88c864dda495f72cb62776b0bebe">nlohmann::detail::parser::parse_event_t</a></div><div class="ttdeci">parse_event_t</div><div class="ttdef"><b>Definition:</b> json.hpp:8694</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1detector_html_a0cd69423587748bf3d3d702cc7b7c2ce"><div class="ttname"><a href="structnlohmann_1_1detail_1_1detector.html#a0cd69423587748bf3d3d702cc7b7c2ce">nlohmann::detail::detector::type</a></div><div class="ttdeci">Default type</div><div class="ttdef"><b>Definition:</b> json.hpp:2353</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__dom__parser_html_a88de4907ad5668d0358af2135236101f"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#a88de4907ad5668d0358af2135236101f">nlohmann::detail::json_sax_dom_parser::end_object</a></div><div class="ttdeci">bool end_object()</div><div class="ttdef"><b>Definition:</b> json.hpp:4534</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1primitive__iterator__t_html"><div class="ttname"><a href="classnlohmann_1_1detail_1_1primitive__iterator__t.html">nlohmann::detail::primitive_iterator_t</a></div><div class="ttdef"><b>Definition:</b> json.hpp:9173</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1string_01_4_html_ad88d0b4b7ea01ea20e12cc1b82fe0d92"><div class="ttname"><a href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1string_01_4.html#ad88d0b4b7ea01ea20e12cc1b82fe0d92">nlohmann::detail::external_constructor< value_t::string >::construct</a></div><div class="ttdeci">static void construct(BasicJsonType &j, const typename BasicJsonType::string_t &s)</div><div class="ttdef"><b>Definition:</b> json.hpp:3488</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a513d6fb63a0ea53ce6c28c05ce0f26e6"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a513d6fb63a0ea53ce6c28c05ce0f26e6">nlohmann::basic_json::from_cbor</a></div><div class="ttdeci">static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json from_cbor(A1 &&a1, A2 &&a2, const bool strict=true, const bool allow_exceptions=true)</div><div class="ttdoc">create a JSON value from an input in CBOR format</div><div class="ttdef"><b>Definition:</b> json.hpp:21533</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1is__iterator__traits_html"><div class="ttname"><a href="structnlohmann_1_1detail_1_1is__iterator__traits.html">nlohmann::detail::is_iterator_traits</a></div><div class="ttdef"><b>Definition:</b> json.hpp:2569</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1input__buffer__adapter_html_ac242b822b2f6772e5fc682ddb80cb066"><div class="ttname"><a href="classnlohmann_1_1detail_1_1input__buffer__adapter.html#ac242b822b2f6772e5fc682ddb80cb066">nlohmann::detail::input_buffer_adapter::~input_buffer_adapter</a></div><div class="ttdeci">~input_buffer_adapter() override=default</div></div>
|
||
<div class="ttc" id="astructstd_1_1less_3_1_1nlohmann_1_1detail_1_1value__t_01_4_html_a10d3fea50edf7b15ead8f4ceeb006000"><div class="ttname"><a href="structstd_1_1less_3_1_1nlohmann_1_1detail_1_1value__t_01_4.html#a10d3fea50edf7b15ead8f4ceeb006000">std::less<::nlohmann::detail::value_t >::operator()</a></div><div class="ttdeci">bool operator()(nlohmann::detail::value_t lhs, nlohmann::detail::value_t rhs) const noexcept</div><div class="ttdoc">compare two value_t enum values</div><div class="ttdef"><b>Definition:</b> json.hpp:22661</div></div>
|
||
<div class="ttc" id="anamespacenlohmann_1_1detail_html_a9135fcf616d6ac6e231a86e0a055ac44"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#a9135fcf616d6ac6e231a86e0a055ac44">nlohmann::detail::is_detected</a></div><div class="ttdeci">typename detector< nonesuch, void, Op, Args... >::value_t is_detected</div><div class="ttdef"><b>Definition:</b> json.hpp:2364</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a6508b9ef55eb018231fb2198211f6d73"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a6508b9ef55eb018231fb2198211f6d73">nlohmann::basic_json::get_ptr</a></div><div class="ttdeci">constexpr auto get_ptr() const noexcept -> decltype(std::declval< const basic_json_t & >().get_impl_ptr(std::declval< PointerType >()))</div><div class="ttdoc">get a pointer value (implicit)</div><div class="ttdef"><b>Definition:</b> json.hpp:17333</div></div>
|
||
<div class="ttc" id="anamespacenlohmann_1_1detail_html_a1ed8fc6239da25abcaf681d30ace4985a84e2c64f38f78ba3ea5c905ab5a2da27"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#a1ed8fc6239da25abcaf681d30ace4985a84e2c64f38f78ba3ea5c905ab5a2da27">nlohmann::detail::value_t::boolean</a></div><div class="ttdeci">@ boolean</div><div class="ttdoc">boolean value</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1iter__impl_html_a88a00484ac201c52fc5f613d88a2918b"><div class="ttname"><a href="classnlohmann_1_1detail_1_1iter__impl.html#a88a00484ac201c52fc5f613d88a2918b">nlohmann::detail::iter_impl::iter_impl</a></div><div class="ttdeci">iter_impl(pointer object) noexcept</div><div class="ttdoc">constructor for a given JSON instance</div><div class="ttdef"><b>Definition:</b> json.hpp:9392</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1json__sax_html_a0671528b0debb5a348169d61f0382a0f"><div class="ttname"><a href="structnlohmann_1_1json__sax.html#a0671528b0debb5a348169d61f0382a0f">nlohmann::json_sax::start_object</a></div><div class="ttdeci">virtual bool start_object(std::size_t elements)=0</div><div class="ttdoc">the beginning of an object was read</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1lexer_html_ab6818e0fc05f4a52c65aeb967dd79919"><div class="ttname"><a href="classnlohmann_1_1detail_1_1lexer.html#ab6818e0fc05f4a52c65aeb967dd79919">nlohmann::detail::lexer::lexer</a></div><div class="ttdeci">lexer(detail::input_adapter_t &&adapter)</div><div class="ttdef"><b>Definition:</b> json.hpp:7237</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a5338e282d1d02bed389d852dd670d98d"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a5338e282d1d02bed389d852dd670d98d">nlohmann::basic_json::emplace</a></div><div class="ttdeci">std::pair< iterator, bool > emplace(Args &&... args)</div><div class="ttdoc">add an object to an object if key does not exist</div><div class="ttdef"><b>Definition:</b> json.hpp:19649</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1input__adapter_html_ad6824b0f792691f75186c527fa31a6b4"><div class="ttname"><a href="classnlohmann_1_1detail_1_1input__adapter.html#ad6824b0f792691f75186c527fa31a6b4">nlohmann::detail::input_adapter::input_adapter</a></div><div class="ttdeci">input_adapter(IteratorType first, IteratorType last)</div><div class="ttdoc">input adapter for iterator range with contiguous storage</div><div class="ttdef"><b>Definition:</b> json.hpp:4249</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1json__pointer_html_abdd21567b2b1d69329af0f520335e68b"><div class="ttname"><a href="classnlohmann_1_1json__pointer.html#abdd21567b2b1d69329af0f520335e68b">nlohmann::json_pointer::operator/=</a></div><div class="ttdeci">json_pointer & operator/=(std::string token)</div><div class="ttdoc">append an unescaped reference token at the end of this JSON pointer</div><div class="ttdef"><b>Definition:</b> json.hpp:10194</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a74a943800c7f103d0990d7eef82c6453"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a74a943800c7f103d0990d7eef82c6453">nlohmann::basic_json::operator>=</a></div><div class="ttdeci">friend bool operator>=(const_reference lhs, const_reference rhs) noexcept</div><div class="ttdoc">comparison: greater than or equal</div><div class="ttdef"><b>Definition:</b> json.hpp:20575</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_abed9e77c5fcfc925fcdd489911069c3b"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#abed9e77c5fcfc925fcdd489911069c3b">nlohmann::basic_json::object_comparator_t</a></div><div class="ttdeci">std::less< StringType > object_comparator_t</div><div class="ttdef"><b>Definition:</b> json.hpp:14936</div></div>
|
||
<div class="ttc" id="anamespacenlohmann_1_1detail_html_aa554fc6a11519e4f347deb25a9f0db40ac40d516627022a54003ac2b74a82688a"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40ac40d516627022a54003ac2b74a82688a">nlohmann::detail::input_format_t::msgpack</a></div><div class="ttdeci">@ msgpack</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1json__pointer_html_a64c8401529131bad1e486d91d703795f"><div class="ttname"><a href="classnlohmann_1_1json__pointer.html#a64c8401529131bad1e486d91d703795f">nlohmann::json_pointer::operator/=</a></div><div class="ttdeci">json_pointer & operator/=(std::size_t array_index)</div><div class="ttdoc">append an array index at the end of this JSON pointer</div><div class="ttdef"><b>Definition:</b> json.hpp:10216</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1object_01_4_html_a91f89abe0ec4dec59099b691682ff927"><div class="ttname"><a href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1object_01_4.html#a91f89abe0ec4dec59099b691682ff927">nlohmann::detail::external_constructor< value_t::object >::construct</a></div><div class="ttdeci">static void construct(BasicJsonType &j, const CompatibleObjectType &obj)</div><div class="ttdef"><b>Definition:</b> json.hpp:3630</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_ad6b0b151621542e5d135812b8c163222"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#ad6b0b151621542e5d135812b8c163222">nlohmann::basic_json::get</a></div><div class="ttdeci">constexpr auto get() const noexcept -> decltype(std::declval< const basic_json_t & >().template get_ptr< PointerType >())</div><div class="ttdoc">get a pointer value (explicit)</div><div class="ttdef"><b>Definition:</b> json.hpp:17380</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_aa19b9b9ca6967295b102f1cc487b1ad7"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#aa19b9b9ca6967295b102f1cc487b1ad7">nlohmann::basic_json::insert</a></div><div class="ttdeci">iterator insert(const_iterator pos, initializer_list_t ilist)</div><div class="ttdoc">inserts elements</div><div class="ttdef"><b>Definition:</b> json.hpp:19869</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1lexer_html_a33e97dee7c5faf1b36aff5b74a6c8f55"><div class="ttname"><a href="classnlohmann_1_1detail_1_1lexer.html#a33e97dee7c5faf1b36aff5b74a6c8f55">nlohmann::detail::lexer::operator=</a></div><div class="ttdeci">lexer & operator=(lexer &)=delete</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a0524486cd0b36a47448df882ec0d5e7b"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a0524486cd0b36a47448df882ec0d5e7b">nlohmann::basic_json::from_bson</a></div><div class="ttdeci">static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json from_bson(detail::input_adapter &&i, const bool strict=true, const bool allow_exceptions=true)</div><div class="ttdoc">Create a JSON value from an input in BSON format.</div><div class="ttdef"><b>Definition:</b> json.hpp:21801</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1iter__impl_html_a19aa457f9c4af1b7e3af59839132cc5c"><div class="ttname"><a href="classnlohmann_1_1detail_1_1iter__impl.html#a19aa457f9c4af1b7e3af59839132cc5c">nlohmann::detail::iter_impl::iter_impl</a></div><div class="ttdeci">iter_impl()=default</div><div class="ttdoc">default constructor</div><div class="ttdef"><b>Definition:</b> json.hpp:9349</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1json__sax_html_affa7a78b8e9cc9cc3ac99927143142a5"><div class="ttname"><a href="structnlohmann_1_1json__sax.html#affa7a78b8e9cc9cc3ac99927143142a5">nlohmann::json_sax::number_integer</a></div><div class="ttdeci">virtual bool number_integer(number_integer_t val)=0</div><div class="ttdoc">an integer number was read</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1serializer_html"><div class="ttname"><a href="classnlohmann_1_1detail_1_1serializer.html">nlohmann::detail::serializer</a></div><div class="ttdef"><b>Definition:</b> json.hpp:13787</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1iter__impl_html_aaf3620b8dfa4bed8a9ac2b51dd55dbd7"><div class="ttname"><a href="classnlohmann_1_1detail_1_1iter__impl.html#aaf3620b8dfa4bed8a9ac2b51dd55dbd7">nlohmann::detail::iter_impl::operator></a></div><div class="ttdeci">bool operator>(const iter_impl &other) const</div><div class="ttdoc">comparison: greater than</div><div class="ttdef"><b>Definition:</b> json.hpp:9775</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a4b3f7eb2d4625d95a51fbbdceb7c5f39"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a4b3f7eb2d4625d95a51fbbdceb7c5f39">nlohmann::basic_json::erase</a></div><div class="ttdeci">IteratorType erase(IteratorType first, IteratorType last)</div><div class="ttdoc">remove elements given an iterator range</div><div class="ttdef"><b>Definition:</b> json.hpp:18345</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a86ce930490cf7773b26f5ef49c04a350"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a86ce930490cf7773b26f5ef49c04a350">nlohmann::basic_json::allocator_type</a></div><div class="ttdeci">AllocatorType< basic_json > allocator_type</div><div class="ttdoc">the allocator type</div><div class="ttdef"><b>Definition:</b> json.hpp:14812</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_aacd442b66140c764c594ac8ad7dfd5b3"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#aacd442b66140c764c594ac8ad7dfd5b3">nlohmann::basic_json::operator<</a></div><div class="ttdeci">friend bool operator<(const_reference lhs, const_reference rhs) noexcept</div><div class="ttdoc">comparison: less than</div><div class="ttdef"><b>Definition:</b> json.hpp:20372</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1lexer_html_a3f313cdbe187cababfc5e06f0b69b098a2f3e68e7f111a1e5c7728742b3ca2b7f"><div class="ttname"><a href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098a2f3e68e7f111a1e5c7728742b3ca2b7f">nlohmann::detail::lexer::token_type::end_array</a></div><div class="ttdeci">@ end_array</div><div class="ttdoc">the character for array end ]</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1output__stream__adapter_html"><div class="ttname"><a href="classnlohmann_1_1detail_1_1output__stream__adapter.html">nlohmann::detail::output_stream_adapter</a></div><div class="ttdoc">output adapter for output streams</div><div class="ttdef"><b>Definition:</b> json.hpp:11235</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1is__basic__json_html"><div class="ttname"><a href="structnlohmann_1_1detail_1_1is__basic__json.html">nlohmann::detail::is_basic_json</a></div><div class="ttdef"><b>Definition:</b> json.hpp:2476</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1json__pointer_html_a7395bd0af29ac23fd3f21543c935cdfa"><div class="ttname"><a href="classnlohmann_1_1json__pointer.html#a7395bd0af29ac23fd3f21543c935cdfa">nlohmann::json_pointer::operator/=</a></div><div class="ttdeci">json_pointer & operator/=(const json_pointer &ptr)</div><div class="ttdoc">append another JSON pointer at the end of this JSON pointer</div><div class="ttdef"><b>Definition:</b> json.hpp:10170</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html"><div class="ttname"><a href="classnlohmann_1_1basic__json.html">nlohmann::basic_json</a></div><div class="ttdoc">a class to store JSON values</div><div class="ttdef"><b>Definition:</b> json.hpp:2421</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1lexer_html_a3f313cdbe187cababfc5e06f0b69b098a745373036100d7392ad62c617cab59af"><div class="ttname"><a href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098a745373036100d7392ad62c617cab59af">nlohmann::detail::lexer::token_type::value_separator</a></div><div class="ttdeci">@ value_separator</div><div class="ttdoc">the value separator ,</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1invalid__iterator_html_a4e849260a3caa1b288c7e619130c6c09"><div class="ttname"><a href="classnlohmann_1_1detail_1_1invalid__iterator.html#a4e849260a3caa1b288c7e619130c6c09">nlohmann::detail::invalid_iterator::create</a></div><div class="ttdeci">static invalid_iterator create(int id_, const std::string &what_arg)</div><div class="ttdef"><b>Definition:</b> json.hpp:2024</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__reverse__iterator_html_a43dceb18497ff745d936068c77c8cd56"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#a43dceb18497ff745d936068c77c8cd56">nlohmann::detail::json_reverse_iterator::operator++</a></div><div class="ttdeci">const json_reverse_iterator operator++(int)</div><div class="ttdoc">post-increment (it++)</div><div class="ttdef"><b>Definition:</b> json.hpp:9999</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1conjunction_3_01B1_01_4_html"><div class="ttname"><a href="structnlohmann_1_1detail_1_1conjunction_3_01B1_01_4.html">nlohmann::detail::conjunction< B1 ></a></div><div class="ttdef"><b>Definition:</b> json.hpp:2800</div></div>
|
||
<div class="ttc" id="ajson_8hpp_html_a355f2770653ff7bdd5c74b204b5a3ad0"><div class="ttname"><a href="json_8hpp.html#a355f2770653ff7bdd5c74b204b5a3ad0">JSON_HEDLEY_LIKELY</a></div><div class="ttdeci">#define JSON_HEDLEY_LIKELY(expr)</div><div class="ttdef"><b>Definition:</b> json.hpp:1123</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1lexer_html_a3f313cdbe187cababfc5e06f0b69b098ab7ae4c0e46d86f884677768160b26e9e"><div class="ttname"><a href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098ab7ae4c0e46d86f884677768160b26e9e">nlohmann::detail::lexer::token_type::literal_null</a></div><div class="ttdeci">@ literal_null</div><div class="ttdoc">the null literal</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_aba21440ea1aff44f718285ed7d6d20d9"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#aba21440ea1aff44f718285ed7d6d20d9">nlohmann::basic_json::operator==</a></div><div class="ttdeci">friend bool operator==(const_reference lhs, const ScalarType rhs) noexcept</div><div class="ttdoc">comparison: equal</div><div class="ttdef"><b>Definition:</b> json.hpp:20285</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1binary__reader_html_a18e0a63e22dbdad5f6964276b81b813a"><div class="ttname"><a href="classnlohmann_1_1detail_1_1binary__reader.html#a18e0a63e22dbdad5f6964276b81b813a">nlohmann::detail::binary_reader::~binary_reader</a></div><div class="ttdeci">~binary_reader()=default</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1json__sax_html_a235ee975617f28e6a996d1e36a282312"><div class="ttname"><a href="structnlohmann_1_1json__sax.html#a235ee975617f28e6a996d1e36a282312">nlohmann::json_sax::end_array</a></div><div class="ttdeci">virtual bool end_array()=0</div><div class="ttdoc">the end of an array was read</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a7768841baaaa7a21098a401c932efaff"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a7768841baaaa7a21098a401c932efaff">nlohmann::basic_json::json_serializer</a></div><div class="ttdeci">JSONSerializer< T, SFINAE > json_serializer</div><div class="ttdef"><b>Definition:</b> json.hpp:14755</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__acceptor_html"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__acceptor.html">nlohmann::detail::json_sax_acceptor</a></div><div class="ttdef"><b>Definition:</b> json.hpp:4940</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1dtoa__impl_1_1boundaries_html"><div class="ttname"><a href="structnlohmann_1_1detail_1_1dtoa__impl_1_1boundaries.html">nlohmann::detail::dtoa_impl::boundaries</a></div><div class="ttdef"><b>Definition:</b> json.hpp:12817</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1input__adapter_html_a37816622d79ab4a1a76f4d7e872b65e1"><div class="ttname"><a href="classnlohmann_1_1detail_1_1input__adapter.html#a37816622d79ab4a1a76f4d7e872b65e1">nlohmann::detail::input_adapter::input_adapter</a></div><div class="ttdeci">input_adapter(CharT b, std::size_t l)</div><div class="ttdoc">input adapter for buffer</div><div class="ttdef"><b>Definition:</b> json.hpp:4228</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1parse__error_html_a137ea4d27de45d8a844fd13451d40f3d"><div class="ttname"><a href="classnlohmann_1_1detail_1_1parse__error.html#a137ea4d27de45d8a844fd13451d40f3d">nlohmann::detail::parse_error::create</a></div><div class="ttdeci">static parse_error create(int id_, const position_t &pos, const std::string &what_arg)</div><div class="ttdoc">create a parse error exception</div><div class="ttdef"><b>Definition:</b> json.hpp:1947</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1static__const_html_a6bb7ab2ddd6abc41fb4ffb7c6dfa237e"><div class="ttname"><a href="structnlohmann_1_1detail_1_1static__const.html#a6bb7ab2ddd6abc41fb4ffb7c6dfa237e">nlohmann::detail::static_const::value</a></div><div class="ttdeci">static constexpr T value</div><div class="ttdef"><b>Definition:</b> json.hpp:2235</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1has__to__json_html"><div class="ttname"><a href="structnlohmann_1_1detail_1_1has__to__json.html">nlohmann::detail::has_to_json</a></div><div class="ttdef"><b>Definition:</b> json.hpp:2551</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1iteration__proxy__value_html"><div class="ttname"><a href="classnlohmann_1_1detail_1_1iteration__proxy__value.html">nlohmann::detail::iteration_proxy_value</a></div><div class="ttdef"><b>Definition:</b> json.hpp:3297</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1is__sax_html"><div class="ttname"><a href="structnlohmann_1_1detail_1_1is__sax.html">nlohmann::detail::is_sax</a></div><div class="ttdef"><b>Definition:</b> json.hpp:5077</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1iter__impl_html_a94108d1a7563e103534f23eb5c1ee175"><div class="ttname"><a href="classnlohmann_1_1detail_1_1iter__impl.html#a94108d1a7563e103534f23eb5c1ee175">nlohmann::detail::iter_impl::operator+</a></div><div class="ttdeci">friend iter_impl operator+(difference_type i, const iter_impl &it)</div><div class="ttdoc">addition of distance and iterator</div><div class="ttdef"><b>Definition:</b> json.hpp:9842</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1lexer_html_afa338d17c0a7e834c73104258a2c8ced"><div class="ttname"><a href="classnlohmann_1_1detail_1_1lexer.html#afa338d17c0a7e834c73104258a2c8ced">nlohmann::detail::lexer::get_number_integer</a></div><div class="ttdeci">constexpr number_integer_t get_number_integer() const noexcept</div><div class="ttdoc">return integer value</div><div class="ttdef"><b>Definition:</b> json.hpp:8452</div></div>
|
||
<div class="ttc" id="anamespacestd_html"><div class="ttname"><a href="namespacestd.html">std</a></div><div class="ttdef"><b>Definition:</b> json.hpp:3431</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1lexer_html_a3f313cdbe187cababfc5e06f0b69b098afab1694b1b3937a079f4625fe0b6108b"><div class="ttname"><a href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098afab1694b1b3937a079f4625fe0b6108b">nlohmann::detail::lexer::token_type::literal_false</a></div><div class="ttdeci">@ literal_false</div><div class="ttdoc">the false literal</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a316663487f1d20c0cf349b23f9494bda"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a316663487f1d20c0cf349b23f9494bda">nlohmann::basic_json::insert_iterator</a></div><div class="ttdeci">iterator insert_iterator(const_iterator pos, Args &&... args)</div><div class="ttdef"><b>Definition:</b> json.hpp:19679</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__reverse__iterator_html_a26caf0069a50ce4ecb010a1453e883fc"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#a26caf0069a50ce4ecb010a1453e883fc">nlohmann::detail::json_reverse_iterator::operator++</a></div><div class="ttdeci">json_reverse_iterator & operator++()</div><div class="ttdoc">pre-increment (++it)</div><div class="ttdef"><b>Definition:</b> json.hpp:10005</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1lexer_html_a3f313cdbe187cababfc5e06f0b69b098acc3c64f8ae08c00de1b33f19a4d2913a"><div class="ttname"><a href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098acc3c64f8ae08c00de1b33f19a4d2913a">nlohmann::detail::lexer::token_type::name_separator</a></div><div class="ttdeci">@ name_separator</div><div class="ttdoc">the name separator :</div></div>
|
||
<div class="ttc" id="anamespacenlohmann_html_a9cc9a3033850a092f791d86854d117fc"><div class="ttname"><a href="namespacenlohmann.html#a9cc9a3033850a092f791d86854d117fc">nlohmann::json</a></div><div class="ttdeci">basic_json<> json</div><div class="ttdoc">default JSON class</div><div class="ttdef"><b>Definition:</b> json.hpp:2445</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1primitive__iterator__t_html_a86a249e92a5274dec7ea20e52b0cc878"><div class="ttname"><a href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#a86a249e92a5274dec7ea20e52b0cc878">nlohmann::detail::primitive_iterator_t::operator-</a></div><div class="ttdeci">constexpr friend difference_type operator-(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept</div><div class="ttdef"><b>Definition:</b> json.hpp:9230</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1input__adapter_html"><div class="ttname"><a href="classnlohmann_1_1detail_1_1input__adapter.html">nlohmann::detail::input_adapter</a></div><div class="ttdef"><b>Definition:</b> json.hpp:4197</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a6e2e21da48f5d9471716cd868a068327"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a6e2e21da48f5d9471716cd868a068327">nlohmann::basic_json::operator!=</a></div><div class="ttdeci">friend bool operator!=(const_reference lhs, const_reference rhs) noexcept</div><div class="ttdoc">comparison: not equal</div><div class="ttdef"><b>Definition:</b> json.hpp:20319</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1has__non__default__from__json_3_01BasicJsonType_00_01T_00_01enable__a9e4562f31f7ed523e6e0f675606b0f2_html_a610272ed924122e0c46d158ecdfe6faf"><div class="ttname"><a href="structnlohmann_1_1detail_1_1has__non__default__from__json_3_01BasicJsonType_00_01T_00_01enable__a9e4562f31f7ed523e6e0f675606b0f2.html#a610272ed924122e0c46d158ecdfe6faf">nlohmann::detail::has_non_default_from_json< BasicJsonType, T, enable_if_t< not is_basic_json< T >::value > >::serializer</a></div><div class="ttdeci">typename BasicJsonType::template json_serializer< T, void > serializer</div><div class="ttdef"><b>Definition:</b> json.hpp:2541</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_ab2318780e5ae692039e816b6ac32c91e"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#ab2318780e5ae692039e816b6ac32c91e">nlohmann::basic_json::operator[]</a></div><div class="ttdeci">const_reference operator[](const typename object_t::key_type &key) const</div><div class="ttdoc">read-only access specified object element</div><div class="ttdef"><b>Definition:</b> json.hpp:17847</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1iter__impl_html_a7159ed1cfe7c423a2baef8bea0c94509"><div class="ttname"><a href="classnlohmann_1_1detail_1_1iter__impl.html#a7159ed1cfe7c423a2baef8bea0c94509">nlohmann::detail::iter_impl::operator=</a></div><div class="ttdeci">iter_impl & operator=(const iter_impl< typename std::remove_const< BasicJsonType >::type > &other) noexcept</div><div class="ttdoc">converting assignment</div><div class="ttdef"><b>Definition:</b> json.hpp:9466</div></div>
|
||
<div class="ttc" id="anamespacenlohmann_1_1detail_html_aa554fc6a11519e4f347deb25a9f0db40a466deec76ecdf5fca6d38571f6324d54"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a466deec76ecdf5fca6d38571f6324d54">nlohmann::detail::input_format_t::json</a></div><div class="ttdeci">@ json</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1json__pointer_html_a697d12b5bd6205f8866691b166b7c7dc"><div class="ttname"><a href="classnlohmann_1_1json__pointer.html#a697d12b5bd6205f8866691b166b7c7dc">nlohmann::json_pointer::push_back</a></div><div class="ttdeci">void push_back(const std::string &token)</div><div class="ttdoc">append an unescaped token at the end of the reference pointer</div><div class="ttdef"><b>Definition:</b> json.hpp:10366</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1from__json__fn_html"><div class="ttname"><a href="structnlohmann_1_1detail_1_1from__json__fn.html">nlohmann::detail::from_json_fn</a></div><div class="ttdef"><b>Definition:</b> json.hpp:3241</div></div>
|
||
<div class="ttc" id="anamespacenlohmann_1_1detail_html_a28253915d9db4a0112d60eaee0422949"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#a28253915d9db4a0112d60eaee0422949">nlohmann::detail::from_json_tuple_impl</a></div><div class="ttdeci">void from_json_tuple_impl(const BasicJsonType &j, Tuple &t, index_sequence< Idx... >)</div><div class="ttdef"><b>Definition:</b> json.hpp:3190</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1number__float_01_4_html_a669df5a4d258b588e67f747c6d656cdb"><div class="ttname"><a href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1number__float_01_4.html#a669df5a4d258b588e67f747c6d656cdb">nlohmann::detail::external_constructor< value_t::number_float >::construct</a></div><div class="ttdeci">static void construct(BasicJsonType &j, typename BasicJsonType::number_float_t val) noexcept</div><div class="ttdef"><b>Definition:</b> json.hpp:3518</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1output__vector__adapter_html_af6a22d4210bb7bc2da66021300ddd6db"><div class="ttname"><a href="classnlohmann_1_1detail_1_1output__vector__adapter.html#af6a22d4210bb7bc2da66021300ddd6db">nlohmann::detail::output_vector_adapter::write_character</a></div><div class="ttdeci">void write_character(CharType c) override</div><div class="ttdef"><b>Definition:</b> json.hpp:11218</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__acceptor_html_aebf8800023eb20d472f111f86b189e60"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#aebf8800023eb20d472f111f86b189e60">nlohmann::detail::json_sax_acceptor::number_float</a></div><div class="ttdeci">bool number_float(number_float_t, const string_t &)</div><div class="ttdef"><b>Definition:</b> json.hpp:4968</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a65b0a24e1361a030ad0a661de22f6c8e"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a65b0a24e1361a030ad0a661de22f6c8e">nlohmann::basic_json::swap</a></div><div class="ttdeci">void swap(array_t &other)</div><div class="ttdoc">exchanges the values</div><div class="ttdef"><b>Definition:</b> json.hpp:20086</div></div>
|
||
<div class="ttc" id="anamespacenlohmann_1_1detail_html_a264d4d58bc1fd82bcc7bf6bf73d6acad"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#a264d4d58bc1fd82bcc7bf6bf73d6acad">nlohmann::detail::parse_error_function_t</a></div><div class="ttdeci">decltype(std::declval< T & >().parse_error(std::declval< std::size_t >(), std::declval< const std::string & >(), std::declval< const Exception & >())) parse_error_function_t</div><div class="ttdef"><b>Definition:</b> json.hpp:5074</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a6886a5001f5b449ad316101a311ce536"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a6886a5001f5b449ad316101a311ce536">nlohmann::basic_json::json_pointer</a></div><div class="ttdeci">::nlohmann::json_pointer< basic_json > json_pointer</div><div class="ttdoc">JSON Pointer, see nlohmann::json_pointer.</div><div class="ttdef"><b>Definition:</b> json.hpp:14753</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_aaceba2e4cf75fc983bb75c78c8742e65"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#aaceba2e4cf75fc983bb75c78c8742e65">nlohmann::basic_json::parse_event_t</a></div><div class="ttdeci">typename parser::parse_event_t parse_event_t</div><div class="ttdoc">parser event types</div><div class="ttdef"><b>Definition:</b> json.hpp:15661</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a4b1fb3671ade9afc8d33b2c9510acbfc"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a4b1fb3671ade9afc8d33b2c9510acbfc">nlohmann::basic_json::front</a></div><div class="ttdeci">const_reference front() const</div><div class="ttdoc">access the first element</div><div class="ttdef"><b>Definition:</b> json.hpp:18137</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a2f47d3c6a441c57dd2be00449fbb88e1"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a2f47d3c6a441c57dd2be00449fbb88e1">nlohmann::basic_json::max_size</a></div><div class="ttdeci">size_type max_size() const noexcept</div><div class="ttdoc">returns the maximum possible number of elements</div><div class="ttdef"><b>Definition:</b> json.hpp:19265</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a233b02b0839ef798942dd46157cc0fe6"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a233b02b0839ef798942dd46157cc0fe6">nlohmann::basic_json::operator[]</a></div><div class="ttdeci">reference operator[](const typename object_t::key_type &key)</div><div class="ttdoc">access specified object element</div><div class="ttdef"><b>Definition:</b> json.hpp:17798</div></div>
|
||
<div class="ttc" id="anamespacenlohmann_1_1detail_html_acc422c11342b31368f610b6f96fcedc6"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#acc422c11342b31368f610b6f96fcedc6">nlohmann::detail::get</a></div><div class="ttdeci">auto get(const nlohmann::detail::iteration_proxy_value< IteratorType > &i) -> decltype(i.key())</div><div class="ttdef"><b>Definition:</b> json.hpp:3412</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1array_01_4_html_a4ebb19b1cb84b4cb224a4c5322e16f14"><div class="ttname"><a href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1array_01_4.html#a4ebb19b1cb84b4cb224a4c5322e16f14">nlohmann::detail::external_constructor< value_t::array >::construct</a></div><div class="ttdeci">static void construct(BasicJsonType &j, const std::vector< bool > &arr)</div><div class="ttdef"><b>Definition:</b> json.hpp:3582</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1primitive__iterator__t_html_a6b032074795534fe7144a4f1c86ead2f"><div class="ttname"><a href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#a6b032074795534fe7144a4f1c86ead2f">nlohmann::detail::primitive_iterator_t::operator<</a></div><div class="ttdeci">constexpr friend bool operator<(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept</div><div class="ttdef"><b>Definition:</b> json.hpp:9218</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1input__adapter_html_ae89f11268d4724b3080473f7218abe86"><div class="ttname"><a href="classnlohmann_1_1detail_1_1input__adapter.html#ae89f11268d4724b3080473f7218abe86">nlohmann::detail::input_adapter::input_adapter</a></div><div class="ttdeci">input_adapter(std::istream &i)</div><div class="ttdoc">input adapter for input stream</div><div class="ttdef"><b>Definition:</b> json.hpp:4205</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1parser_html_a14338d8f3174601c0b2b7ef28752ab17"><div class="ttname"><a href="classnlohmann_1_1detail_1_1parser.html#a14338d8f3174601c0b2b7ef28752ab17">nlohmann::detail::parser::parse</a></div><div class="ttdeci">void parse(const bool strict, BasicJsonType &result)</div><div class="ttdoc">public parser interface</div><div class="ttdef"><b>Definition:</b> json.hpp:8733</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_ad14563c53cf7ca9189bc164082367bf3"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#ad14563c53cf7ca9189bc164082367bf3">nlohmann::basic_json::type_name</a></div><div class="ttdeci">const JSON_HEDLEY_RETURNS_NON_NULL char * type_name() const noexcept</div><div class="ttdoc">return the type as string</div><div class="ttdef"><b>Definition:</b> json.hpp:20987</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1iter__impl_html_abcc9d51bc52f2e8483bbe4018f05e978"><div class="ttname"><a href="classnlohmann_1_1detail_1_1iter__impl.html#abcc9d51bc52f2e8483bbe4018f05e978">nlohmann::detail::iter_impl::operator-=</a></div><div class="ttdeci">iter_impl & operator-=(difference_type i)</div><div class="ttdoc">subtract from iterator</div><div class="ttdef"><b>Definition:</b> json.hpp:9822</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__acceptor_html_ae07454608ea6f3cfb765f95e3c850043"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#ae07454608ea6f3cfb765f95e3c850043">nlohmann::detail::json_sax_acceptor::number_unsigned_t</a></div><div class="ttdeci">typename BasicJsonType::number_unsigned_t number_unsigned_t</div><div class="ttdef"><b>Definition:</b> json.hpp:4944</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a11458b7982adba51bc634f2f8c961e9b"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a11458b7982adba51bc634f2f8c961e9b">nlohmann::basic_json::from_msgpack</a></div><div class="ttdeci">static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json from_msgpack(detail::input_adapter &&i, const bool strict=true, const bool allow_exceptions=true)</div><div class="ttdoc">create a JSON value from an input in MessagePack format</div><div class="ttdef"><b>Definition:</b> json.hpp:21626</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1input__adapter_html_abe0015ae09e855f502620315b9dcc3db"><div class="ttname"><a href="classnlohmann_1_1detail_1_1input__adapter.html#abe0015ae09e855f502620315b9dcc3db">nlohmann::detail::input_adapter::input_adapter</a></div><div class="ttdeci">input_adapter(const std::u32string &ws)</div><div class="ttdef"><b>Definition:</b> json.hpp:4218</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__dom__callback__parser_html_a2406c5125f7128fb9c01921df2903001"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a2406c5125f7128fb9c01921df2903001">nlohmann::detail::json_sax_dom_callback_parser::number_unsigned_t</a></div><div class="ttdeci">typename BasicJsonType::number_unsigned_t number_unsigned_t</div><div class="ttdef"><b>Definition:</b> json.hpp:4640</div></div>
|
||
<div class="ttc" id="anamespacenlohmann_1_1detail_html_ad42df56e913abe26ed556e0e92f386f4"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#ad42df56e913abe26ed556e0e92f386f4">nlohmann::detail::number_float_function_t</a></div><div class="ttdeci">decltype(std::declval< T & >().number_float(std::declval< Float >(), std::declval< const String & >())) number_float_function_t</div><div class="ttdef"><b>Definition:</b> json.hpp:5047</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1dtoa__impl_1_1cached__power_html"><div class="ttname"><a href="structnlohmann_1_1detail_1_1dtoa__impl_1_1cached__power.html">nlohmann::detail::dtoa_impl::cached_power</a></div><div class="ttdef"><b>Definition:</b> json.hpp:12956</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1internal__iterator_html"><div class="ttname"><a href="structnlohmann_1_1detail_1_1internal__iterator.html">nlohmann::detail::internal_iterator</a></div><div class="ttdoc">an iterator value</div><div class="ttdef"><b>Definition:</b> json.hpp:9287</div></div>
|
||
<div class="ttc" id="ajson_8hpp_html_a7c94253db90041af11dd946a49f0f8a4"><div class="ttname"><a href="json_8hpp.html#a7c94253db90041af11dd946a49f0f8a4">NLOHMANN_JSON_VERSION_MAJOR</a></div><div class="ttdeci">#define NLOHMANN_JSON_VERSION_MAJOR</div><div class="ttdef"><b>Definition:</b> json.hpp:33</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_adc29dd6358ff7a9062d7e168c24e7484"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#adc29dd6358ff7a9062d7e168c24e7484">nlohmann::basic_json::operator+=</a></div><div class="ttdeci">reference operator+=(const basic_json &val)</div><div class="ttdoc">add an object to an array</div><div class="ttdef"><b>Definition:</b> json.hpp:19467</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__acceptor_html_a3f5fe42a9b195de8d251d6d98d5ee92c"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#a3f5fe42a9b195de8d251d6d98d5ee92c">nlohmann::detail::json_sax_acceptor::boolean</a></div><div class="ttdeci">bool boolean(bool)</div><div class="ttdef"><b>Definition:</b> json.hpp:4953</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a83fe4a151b3a591f357527d5d9aa1b9f"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a83fe4a151b3a591f357527d5d9aa1b9f">nlohmann::basic_json::back</a></div><div class="ttdeci">const_reference back() const</div><div class="ttdoc">access the last element</div><div class="ttdef"><b>Definition:</b> json.hpp:18183</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1iterator__types_3_01It_00_01void__t_3_01typename_01It_1_1difference_d2be8685966c97e00e99d4fd2366dc0b_html_a5e82d2d8dabd022b8ff916f2e83a82f2"><div class="ttname"><a href="structnlohmann_1_1detail_1_1iterator__types_3_01It_00_01void__t_3_01typename_01It_1_1difference_d2be8685966c97e00e99d4fd2366dc0b.html#a5e82d2d8dabd022b8ff916f2e83a82f2">nlohmann::detail::iterator_types< It, void_t< typename It::difference_type, typename It::value_type, typename It::pointer, typename It::reference, typename It::iterator_category > >::reference</a></div><div class="ttdeci">typename It::reference reference</div><div class="ttdef"><b>Definition:</b> json.hpp:2290</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__ref_html_a8c3eb3c6e952ed0cd7eece586ab4047c"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__ref.html#a8c3eb3c6e952ed0cd7eece586ab4047c">nlohmann::detail::json_ref::json_ref</a></div><div class="ttdeci">json_ref(const value_type &value)</div><div class="ttdef"><b>Definition:</b> json.hpp:11110</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1input__adapter_html_a887307cfa15a418470b3c34088fc8352"><div class="ttname"><a href="classnlohmann_1_1detail_1_1input__adapter.html#a887307cfa15a418470b3c34088fc8352">nlohmann::detail::input_adapter::input_adapter</a></div><div class="ttdeci">input_adapter(const ContiguousContainer &c)</div><div class="ttdoc">input adapter for contiguous container</div><div class="ttdef"><b>Definition:</b> json.hpp:4292</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a8ab61397c10f18b305520da7073b2b45"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a8ab61397c10f18b305520da7073b2b45">nlohmann::basic_json::at</a></div><div class="ttdeci">reference at(const json_pointer &ptr)</div><div class="ttdoc">access specified element via JSON Pointer</div><div class="ttdef"><b>Definition:</b> json.hpp:21942</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1iter__impl_html_ab35586a44f2222272c5346baa3013f67"><div class="ttname"><a href="classnlohmann_1_1detail_1_1iter__impl.html#ab35586a44f2222272c5346baa3013f67">nlohmann::detail::iter_impl::value_type</a></div><div class="ttdeci">typename BasicJsonType::value_type value_type</div><div class="ttdoc">the type of the values when the iterator is dereferenced</div><div class="ttdef"><b>Definition:</b> json.hpp:9370</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a50ec80b02d0f3f51130d4abb5d1cfdc5"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a50ec80b02d0f3f51130d4abb5d1cfdc5">nlohmann::basic_json::dump</a></div><div class="ttdeci">string_t dump(const int indent=-1, const char indent_char=' ', const bool ensure_ascii=false, const error_handler_t error_handler=error_handler_t::strict) const</div><div class="ttdoc">serialization</div><div class="ttdef"><b>Definition:</b> json.hpp:16560</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_adcf8ca5079f5db993820bf50036bf45d"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#adcf8ca5079f5db993820bf50036bf45d">nlohmann::basic_json::value</a></div><div class="ttdeci">ValueType value(const typename object_t::key_type &key, const ValueType &default_value) const</div><div class="ttdoc">access specified object element with default value</div><div class="ttdef"><b>Definition:</b> json.hpp:18003</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1lexer_html_a14cf32c36b043db47510ae183d38ce5b"><div class="ttname"><a href="classnlohmann_1_1detail_1_1lexer.html#a14cf32c36b043db47510ae183d38ce5b">nlohmann::detail::lexer::get_error_message</a></div><div class="ttdeci">constexpr const JSON_HEDLEY_RETURNS_NON_NULL char * get_error_message() const noexcept</div><div class="ttdoc">return syntax error message</div><div class="ttdef"><b>Definition:</b> json.hpp:8513</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1position__t_html_a94cf85cd91d478c20ae143eba906ea1a"><div class="ttname"><a href="structnlohmann_1_1detail_1_1position__t.html#a94cf85cd91d478c20ae143eba906ea1a">nlohmann::detail::position_t::chars_read_total</a></div><div class="ttdeci">std::size_t chars_read_total</div><div class="ttdoc">the total number of characters read</div><div class="ttdef"><b>Definition:</b> json.hpp:92</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1is__compatible__object__type_html"><div class="ttname"><a href="structnlohmann_1_1detail_1_1is__compatible__object__type.html">nlohmann::detail::is_compatible_object_type</a></div><div class="ttdef"><b>Definition:</b> json.hpp:2616</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1lexer_html_a2f2ef6f5aca9a0c48fcfb1290f7b2b0d"><div class="ttname"><a href="classnlohmann_1_1detail_1_1lexer.html#a2f2ef6f5aca9a0c48fcfb1290f7b2b0d">nlohmann::detail::lexer::~lexer</a></div><div class="ttdeci">~lexer()=default</div></div>
|
||
<div class="ttc" id="ajson_8hpp_html_ab5ca1e164894d78d3276d2e5fe58c5e3"><div class="ttname"><a href="json_8hpp.html#ab5ca1e164894d78d3276d2e5fe58c5e3">NLOHMANN_JSON_VERSION_MINOR</a></div><div class="ttdeci">#define NLOHMANN_JSON_VERSION_MINOR</div><div class="ttdef"><b>Definition:</b> json.hpp:34</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1nonesuch_html_add6ef84c52a851e391cef514c85f2ffe"><div class="ttname"><a href="structnlohmann_1_1detail_1_1nonesuch.html#add6ef84c52a851e391cef514c85f2ffe">nlohmann::detail::nonesuch::operator=</a></div><div class="ttdeci">void operator=(nonesuch const &)=delete</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1output__string__adapter_html"><div class="ttname"><a href="classnlohmann_1_1detail_1_1output__string__adapter.html">nlohmann::detail::output_string_adapter</a></div><div class="ttdoc">output adapter for basic_string</div><div class="ttdef"><b>Definition:</b> json.hpp:11259</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_ae11a3a51782c058fff2f6550cdfb9b3c"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#ae11a3a51782c058fff2f6550cdfb9b3c">nlohmann::basic_json::push_back</a></div><div class="ttdeci">void push_back(const typename object_t::value_type &val)</div><div class="ttdoc">add an object to an object</div><div class="ttdef"><b>Definition:</b> json.hpp:19493</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1iter__impl_html_a8ef76aeb5a5032768f0f61f48ac189c0"><div class="ttname"><a href="classnlohmann_1_1detail_1_1iter__impl.html#a8ef76aeb5a5032768f0f61f48ac189c0">nlohmann::detail::iter_impl::operator+</a></div><div class="ttdeci">iter_impl operator+(difference_type i) const</div><div class="ttdoc">add to iterator</div><div class="ttdef"><b>Definition:</b> json.hpp:9831</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1binary__reader_html_aed84f0302eb232d3b69f7653bef2337a"><div class="ttname"><a href="classnlohmann_1_1detail_1_1binary__reader.html#aed84f0302eb232d3b69f7653bef2337a">nlohmann::detail::binary_reader::binary_reader</a></div><div class="ttdeci">binary_reader(input_adapter_t adapter)</div><div class="ttdoc">create a binary reader</div><div class="ttdef"><b>Definition:</b> json.hpp:5189</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1array_01_4_html_a1b9226304e6492141080b4ebf228ddac"><div class="ttname"><a href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1array_01_4.html#a1b9226304e6492141080b4ebf228ddac">nlohmann::detail::external_constructor< value_t::array >::construct</a></div><div class="ttdeci">static void construct(BasicJsonType &j, const std::valarray< T > &arr)</div><div class="ttdef"><b>Definition:</b> json.hpp:3596</div></div>
|
||
<div class="ttc" id="anamespacenlohmann_1_1detail_html_a74da7b17bda76f65d276feb18209c913"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#a74da7b17bda76f65d276feb18209c913">nlohmann::detail::number_unsigned_function_t</a></div><div class="ttdeci">decltype(std::declval< T & >().number_unsigned(std::declval< Unsigned >())) number_unsigned_function_t</div><div class="ttdef"><b>Definition:</b> json.hpp:5043</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1iter__impl_html_ac0b9276f1102ed4b9cd3f5f56287e3ce"><div class="ttname"><a href="classnlohmann_1_1detail_1_1iter__impl.html#ac0b9276f1102ed4b9cd3f5f56287e3ce">nlohmann::detail::iter_impl::operator[]</a></div><div class="ttdeci">reference operator[](difference_type n) const</div><div class="ttdoc">access to successor</div><div class="ttdef"><b>Definition:</b> json.hpp:9885</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1make__index__sequence_html"><div class="ttname"><a href="structnlohmann_1_1detail_1_1make__index__sequence.html">nlohmann::detail::make_index_sequence</a></div><div class="ttdef"><b>Definition:</b> json.hpp:2217</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1json__sax_html_a390c209bffd8c4800c8f3076dc465a20"><div class="ttname"><a href="structnlohmann_1_1json__sax.html#a390c209bffd8c4800c8f3076dc465a20">nlohmann::json_sax::number_float_t</a></div><div class="ttdeci">typename BasicJsonType::number_float_t number_float_t</div><div class="ttdoc">type for floating-point numbers</div><div class="ttdef"><b>Definition:</b> json.hpp:4340</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1parser_html_a37ac88c864dda495f72cb62776b0bebeaa4388a3d92419edbb1c6efd4d52461f3"><div class="ttname"><a href="classnlohmann_1_1detail_1_1parser.html#a37ac88c864dda495f72cb62776b0bebeaa4388a3d92419edbb1c6efd4d52461f3">nlohmann::detail::parser::parse_event_t::array_start</a></div><div class="ttdeci">@ array_start</div><div class="ttdoc">the parser read [ and started to process a JSON array</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__reverse__iterator_html_a7bbf1ecd75b7a0a488608a2760237c9f"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#a7bbf1ecd75b7a0a488608a2760237c9f">nlohmann::detail::json_reverse_iterator::operator--</a></div><div class="ttdeci">const json_reverse_iterator operator--(int)</div><div class="ttdoc">post-decrement (it–)</div><div class="ttdef"><b>Definition:</b> json.hpp:10011</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_aef9ce5dd2381caee1f8ddcdb5bdd9c65"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#aef9ce5dd2381caee1f8ddcdb5bdd9c65">nlohmann::basic_json::is_array</a></div><div class="ttdeci">constexpr bool is_array() const noexcept</div><div class="ttdoc">return whether value is an array</div><div class="ttdef"><b>Definition:</b> json.hpp:16872</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a1c15707055088cd5436ae91db72cbe67"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a1c15707055088cd5436ae91db72cbe67">nlohmann::basic_json::end</a></div><div class="ttdeci">const_iterator end() const noexcept</div><div class="ttdoc">returns a const iterator to one past the last element</div><div class="ttdef"><b>Definition:</b> json.hpp:18755</div></div>
|
||
<div class="ttc" id="anamespacenlohmann_1_1detail_html_af846b6cf2f926009ff3a7a61495ca383"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#af846b6cf2f926009ff3a7a61495ca383">nlohmann::detail::to_json_function</a></div><div class="ttdeci">decltype(T::to_json(std::declval< Args >()...)) to_json_function</div><div class="ttdef"><b>Definition:</b> json.hpp:2510</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__dom__callback__parser_html_a914ea0555cea5290449fb791ae41c655"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a914ea0555cea5290449fb791ae41c655">nlohmann::detail::json_sax_dom_callback_parser::number_float_t</a></div><div class="ttdeci">typename BasicJsonType::number_float_t number_float_t</div><div class="ttdef"><b>Definition:</b> json.hpp:4641</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__dom__callback__parser_html_a040e60243cc7c18a6078c6b83cdb4a81"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a040e60243cc7c18a6078c6b83cdb4a81">nlohmann::detail::json_sax_dom_callback_parser::start_object</a></div><div class="ttdeci">bool start_object(std::size_t len)</div><div class="ttdef"><b>Definition:</b> json.hpp:4697</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1primitive__iterator__t_html_a0bf83ab08abe1ae4b51c790c85cdf151"><div class="ttname"><a href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#a0bf83ab08abe1ae4b51c790c85cdf151">nlohmann::detail::primitive_iterator_t::operator-=</a></div><div class="ttdeci">primitive_iterator_t & operator-=(difference_type n) noexcept</div><div class="ttdef"><b>Definition:</b> json.hpp:9267</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1iteration__proxy_html_afe257e972e3b4658ef2e355f7389d4a5"><div class="ttname"><a href="classnlohmann_1_1detail_1_1iteration__proxy.html#afe257e972e3b4658ef2e355f7389d4a5">nlohmann::detail::iteration_proxy::iteration_proxy</a></div><div class="ttdeci">iteration_proxy(typename IteratorType::reference cont) noexcept</div><div class="ttdoc">construct iteration proxy from a container</div><div class="ttdef"><b>Definition:</b> json.hpp:3393</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a000cef9f49c8f04319cf98150361d13d"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a000cef9f49c8f04319cf98150361d13d">nlohmann::basic_json::from_bson</a></div><div class="ttdeci">static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json from_bson(A1 &&a1, A2 &&a2, const bool strict=true, const bool allow_exceptions=true)</div><div class="ttdoc">Create a JSON value from an input in BSON format.</div><div class="ttdef"><b>Definition:</b> json.hpp:21817</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1exception_html_a11fe48748e811531614c84883b00ccd5"><div class="ttname"><a href="classnlohmann_1_1detail_1_1exception.html#a11fe48748e811531614c84883b00ccd5">nlohmann::detail::exception::what</a></div><div class="ttdeci">const JSON_HEDLEY_RETURNS_NON_NULL char * what() const noexcept override</div><div class="ttdoc">returns the explanatory string</div><div class="ttdef"><b>Definition:</b> json.hpp:1869</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a5e34c5435e557d0bf666bd7311211405"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a5e34c5435e557d0bf666bd7311211405">nlohmann::basic_json::operator<<</a></div><div class="ttdeci">friend std::ostream & operator<<(std::ostream &o, const basic_json &j)</div><div class="ttdoc">serialize to stream</div><div class="ttdef"><b>Definition:</b> json.hpp:20642</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a34d6a60dd99e9f33b8273a1c8db5669b"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a34d6a60dd99e9f33b8273a1c8db5669b">nlohmann::basic_json::operator>></a></div><div class="ttdeci">friend std::ostream & operator>>(const basic_json &j, std::ostream &o)</div><div class="ttdoc">serialize to stream</div><div class="ttdef"><b>Definition:</b> json.hpp:20666</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1nonesuch_html"><div class="ttname"><a href="structnlohmann_1_1detail_1_1nonesuch.html">nlohmann::detail::nonesuch</a></div><div class="ttdef"><b>Definition:</b> json.hpp:2336</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a44516cba796e50ce5d62c9d6b7ab4c1d"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a44516cba796e50ce5d62c9d6b7ab4c1d">nlohmann::basic_json::get</a></div><div class="ttdeci">auto get() noexcept -> decltype(std::declval< basic_json_t & >().template get_ptr< PointerType >())</div><div class="ttdoc">get a pointer value (explicit)</div><div class="ttdef"><b>Definition:</b> json.hpp:17368</div></div>
|
||
<div class="ttc" id="anamespacenlohmann_1_1detail_html_a082bdafd3b4c61d9d1e92b35b8f75ee3"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#a082bdafd3b4c61d9d1e92b35b8f75ee3">nlohmann::detail::reference_t</a></div><div class="ttdeci">typename T::reference reference_t</div><div class="ttdef"><b>Definition:</b> json.hpp:2501</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1iteration__proxy__value_html_a646dbb2b1842f44f42ee1e14245b8595"><div class="ttname"><a href="classnlohmann_1_1detail_1_1iteration__proxy__value.html#a646dbb2b1842f44f42ee1e14245b8595">nlohmann::detail::iteration_proxy_value::operator!=</a></div><div class="ttdeci">bool operator!=(const iteration_proxy_value &o) const</div><div class="ttdoc">inequality operator (needed for range-based for)</div><div class="ttdef"><b>Definition:</b> json.hpp:3344</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1input__adapter__protocol_html_aac10a6a4048a8ce8e2ed50277692a3ca"><div class="ttname"><a href="structnlohmann_1_1detail_1_1input__adapter__protocol.html#aac10a6a4048a8ce8e2ed50277692a3ca">nlohmann::detail::input_adapter_protocol::get_character</a></div><div class="ttdeci">virtual std::char_traits< char >::int_type get_character()=0</div><div class="ttdoc">get a character [0,255] or std::char_traits<char>::eof().</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_ad865d6c291b237ae508d5cb2146b5877"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#ad865d6c291b237ae508d5cb2146b5877">nlohmann::basic_json::cbegin</a></div><div class="ttdeci">const_iterator cbegin() const noexcept</div><div class="ttdoc">returns a const iterator to the first element</div><div class="ttdef"><b>Definition:</b> json.hpp:18714</div></div>
|
||
<div class="ttc" id="anamespacenlohmann_1_1detail_1_1dtoa__impl_html_ac1ea1316de0b4a219f707c76b1db1966"><div class="ttname"><a href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#ac1ea1316de0b4a219f707c76b1db1966">nlohmann::detail::dtoa_impl::kAlpha</a></div><div class="ttdeci">constexpr int kAlpha</div><div class="ttdef"><b>Definition:</b> json.hpp:12953</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1lexer_html_ac013af35a21e9387993b19da5b3e0ae2"><div class="ttname"><a href="classnlohmann_1_1detail_1_1lexer.html#ac013af35a21e9387993b19da5b3e0ae2">nlohmann::detail::lexer::get_number_float</a></div><div class="ttdeci">constexpr number_float_t get_number_float() const noexcept</div><div class="ttdoc">return floating-point value</div><div class="ttdef"><b>Definition:</b> json.hpp:8464</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1is__compatible__object__type__impl_html"><div class="ttname"><a href="structnlohmann_1_1detail_1_1is__compatible__object__type__impl.html">nlohmann::detail::is_compatible_object_type_impl</a></div><div class="ttdef"><b>Definition:</b> json.hpp:2596</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1is__sax_html_a8ab7e51087000e948b4a2492257484dc"><div class="ttname"><a href="structnlohmann_1_1detail_1_1is__sax.html#a8ab7e51087000e948b4a2492257484dc">nlohmann::detail::is_sax::value</a></div><div class="ttdeci">static constexpr bool value</div><div class="ttdef"><b>Definition:</b> json.hpp:5090</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1file__input__adapter_html"><div class="ttname"><a href="classnlohmann_1_1detail_1_1file__input__adapter.html">nlohmann::detail::file_input_adapter</a></div><div class="ttdef"><b>Definition:</b> json.hpp:3918</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a1ef93e2006dbe52667294f5ef38b0b10"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a1ef93e2006dbe52667294f5ef38b0b10">nlohmann::basic_json::rbegin</a></div><div class="ttdeci">reverse_iterator rbegin() noexcept</div><div class="ttdoc">returns an iterator to the reverse-beginning</div><div class="ttdef"><b>Definition:</b> json.hpp:18815</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_aff3d5cd2a75612364b888d8693231b58"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#aff3d5cd2a75612364b888d8693231b58">nlohmann::basic_json::const_pointer</a></div><div class="ttdeci">typename std::allocator_traits< allocator_type >::const_pointer const_pointer</div><div class="ttdoc">the type of an element const pointer</div><div class="ttdef"><b>Definition:</b> json.hpp:14817</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1lexer_html_a709afd52def2e258dac0b8a67dc4ea26"><div class="ttname"><a href="classnlohmann_1_1detail_1_1lexer.html#a709afd52def2e258dac0b8a67dc4ea26">nlohmann::detail::lexer::skip_bom</a></div><div class="ttdeci">bool skip_bom()</div><div class="ttdoc">skip the UTF-8 byte order mark</div><div class="ttdef"><b>Definition:</b> json.hpp:8526</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__dom__callback__parser_html_ae75d313d6d1b9c29508e740a10fefa18"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#ae75d313d6d1b9c29508e740a10fefa18">nlohmann::detail::json_sax_dom_callback_parser::end_object</a></div><div class="ttdeci">bool end_object()</div><div class="ttdef"><b>Definition:</b> json.hpp:4732</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1is__compatible__integer__type_html"><div class="ttname"><a href="structnlohmann_1_1detail_1_1is__compatible__integer__type.html">nlohmann::detail::is_compatible_integer_type</a></div><div class="ttdef"><b>Definition:</b> json.hpp:2778</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a265a473e939184aa42655c9ccdf34e58"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a265a473e939184aa42655c9ccdf34e58">nlohmann::basic_json::parse</a></div><div class="ttdeci">static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json parse(detail::input_adapter &&i, const parser_callback_t cb=nullptr, const bool allow_exceptions=true)</div><div class="ttdoc">deserialize from a compatible input</div><div class="ttdef"><b>Definition:</b> json.hpp:20745</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1is__compatible__string__type__impl_html"><div class="ttname"><a href="structnlohmann_1_1detail_1_1is__compatible__string__type__impl.html">nlohmann::detail::is_compatible_string_type_impl</a></div><div class="ttdef"><b>Definition:</b> json.hpp:2654</div></div>
|
||
<div class="ttc" id="anamespacenlohmann_1_1detail_html_a27c3fc3bd42ac406f763184aa8ae4cb0"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#a27c3fc3bd42ac406f763184aa8ae4cb0">nlohmann::detail::string_function_t</a></div><div class="ttdeci">decltype(std::declval< T & >().string(std::declval< String & >())) string_function_t</div><div class="ttdef"><b>Definition:</b> json.hpp:5051</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1input__stream__adapter_html_aeac5048221929b8f7558d1698dd0fb3a"><div class="ttname"><a href="classnlohmann_1_1detail_1_1input__stream__adapter.html#aeac5048221929b8f7558d1698dd0fb3a">nlohmann::detail::input_stream_adapter::operator=</a></div><div class="ttdeci">input_stream_adapter & operator=(input_stream_adapter &)=delete</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1iteration__proxy__value_html_af2b78a8b9c9276b07c928b21bb1e2d54"><div class="ttname"><a href="classnlohmann_1_1detail_1_1iteration__proxy__value.html#af2b78a8b9c9276b07c928b21bb1e2d54">nlohmann::detail::iteration_proxy_value::operator==</a></div><div class="ttdeci">bool operator==(const iteration_proxy_value &o) const</div><div class="ttdoc">equality operator (needed for InputIterator)</div><div class="ttdef"><b>Definition:</b> json.hpp:3338</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1json__sax_html_a5c53878cf08d463eb4e7ca0270532572"><div class="ttname"><a href="structnlohmann_1_1json__sax.html#a5c53878cf08d463eb4e7ca0270532572">nlohmann::json_sax::start_array</a></div><div class="ttdeci">virtual bool start_array(std::size_t elements)=0</div><div class="ttdoc">the beginning of an array was read</div></div>
|
||
<div class="ttc" id="anamespacenlohmann_1_1detail_html_a66dfe39f03b05d6b7265a0ff748d64ef"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#a66dfe39f03b05d6b7265a0ff748d64ef">nlohmann::detail::key_type_t</a></div><div class="ttdeci">typename T::key_type key_type_t</div><div class="ttdef"><b>Definition:</b> json.hpp:2489</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_aefee1f777198c68724bd127e0c8abbe4"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#aefee1f777198c68724bd127e0c8abbe4">nlohmann::basic_json::pointer</a></div><div class="ttdeci">typename std::allocator_traits< allocator_type >::pointer pointer</div><div class="ttdoc">the type of an element pointer</div><div class="ttdef"><b>Definition:</b> json.hpp:14815</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1iter__impl_html_a2f7ea9f7022850809c60fc3263775840"><div class="ttname"><a href="classnlohmann_1_1detail_1_1iter__impl.html#a2f7ea9f7022850809c60fc3263775840">nlohmann::detail::iter_impl::difference_type</a></div><div class="ttdeci">typename BasicJsonType::difference_type difference_type</div><div class="ttdoc">a type to represent differences between iterators</div><div class="ttdef"><b>Definition:</b> json.hpp:9372</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a98e611d67b7bd75307de99c9358ab2dc"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a98e611d67b7bd75307de99c9358ab2dc">nlohmann::basic_json::number_integer_t</a></div><div class="ttdeci">NumberIntegerType number_integer_t</div><div class="ttdoc">a type for a number (integer)</div><div class="ttdef"><b>Definition:</b> json.hpp:15223</div></div>
|
||
<div class="ttc" id="anamespacenlohmann_1_1detail_html_a40f7bb070a60e8ba14fffb9c117fcbd8"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#a40f7bb070a60e8ba14fffb9c117fcbd8">nlohmann::detail::from_json_array_impl</a></div><div class="ttdeci">void from_json_array_impl(const BasicJsonType &j, typename BasicJsonType::array_t &arr, priority_tag< 3 >)</div><div class="ttdef"><b>Definition:</b> json.hpp:3042</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1json__sax_html"><div class="ttname"><a href="structnlohmann_1_1json__sax.html">nlohmann::json_sax</a></div><div class="ttdoc">SAX interface.</div><div class="ttdef"><b>Definition:</b> json.hpp:4333</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a5ee0e3e8afc7cbd932d6ed66418fa80a"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a5ee0e3e8afc7cbd932d6ed66418fa80a">nlohmann::basic_json::operator>=</a></div><div class="ttdeci">friend bool operator>=(const ScalarType lhs, const_reference rhs) noexcept</div><div class="ttdoc">comparison: greater than or equal</div><div class="ttdef"><b>Definition:</b> json.hpp:20597</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1file__input__adapter_html_aeade050f2793280503be93feff2ece5b"><div class="ttname"><a href="classnlohmann_1_1detail_1_1file__input__adapter.html#aeade050f2793280503be93feff2ece5b">nlohmann::detail::file_input_adapter::file_input_adapter</a></div><div class="ttdeci">file_input_adapter(std::FILE *f) noexcept</div><div class="ttdef"><b>Definition:</b> json.hpp:3922</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1dtoa__impl_1_1cached__power_html_a8c1f2efed643eeaa8fae83c697a29c6a"><div class="ttname"><a href="structnlohmann_1_1detail_1_1dtoa__impl_1_1cached__power.html#a8c1f2efed643eeaa8fae83c697a29c6a">nlohmann::detail::dtoa_impl::cached_power::k</a></div><div class="ttdeci">int k</div><div class="ttdef"><b>Definition:</b> json.hpp:12960</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a1d568ba1bd6978d80db42aa76626e2cf"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a1d568ba1bd6978d80db42aa76626e2cf">nlohmann::basic_json::from_cbor</a></div><div class="ttdeci">static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json from_cbor(detail::input_adapter &&i, const bool strict=true, const bool allow_exceptions=true)</div><div class="ttdoc">create a JSON value from an input in CBOR format</div><div class="ttdef"><b>Definition:</b> json.hpp:21517</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1iteration__proxy_html"><div class="ttname"><a href="classnlohmann_1_1detail_1_1iteration__proxy.html">nlohmann::detail::iteration_proxy</a></div><div class="ttdoc">proxy class for the items() function</div><div class="ttdef"><b>Definition:</b> json.hpp:3385</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1iter__impl_html_a15dfb2744fed2ef40c12a9e9a20d6dbc"><div class="ttname"><a href="classnlohmann_1_1detail_1_1iter__impl.html#a15dfb2744fed2ef40c12a9e9a20d6dbc">nlohmann::detail::iter_impl::key</a></div><div class="ttdeci">const object_t::key_type & key() const</div><div class="ttdoc">return the key of an object iterator</div><div class="ttdef"><b>Definition:</b> json.hpp:9916</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1object_01_4_html_a3a369c5d49596dd4411e368425f9ac7a"><div class="ttname"><a href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1object_01_4.html#a3a369c5d49596dd4411e368425f9ac7a">nlohmann::detail::external_constructor< value_t::object >::construct</a></div><div class="ttdeci">static void construct(BasicJsonType &j, const typename BasicJsonType::object_t &obj)</div><div class="ttdef"><b>Definition:</b> json.hpp:3613</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1has__to__json_3_01BasicJsonType_00_01T_00_01enable__if__t_3_01not_01737900a749c335e922e2f74e2face5e4_html_a479098e9480e0adb30fb3fe3586a8005"><div class="ttname"><a href="structnlohmann_1_1detail_1_1has__to__json_3_01BasicJsonType_00_01T_00_01enable__if__t_3_01not_01737900a749c335e922e2f74e2face5e4.html#a479098e9480e0adb30fb3fe3586a8005">nlohmann::detail::has_to_json< BasicJsonType, T, enable_if_t< not is_basic_json< T >::value > >::serializer</a></div><div class="ttdeci">typename BasicJsonType::template json_serializer< T, void > serializer</div><div class="ttdef"><b>Definition:</b> json.hpp:2556</div></div>
|
||
<div class="ttc" id="anamespacenlohmann_1_1detail_html_aaa77b0c9745130b77733a92a1a2e82ec"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#aaa77b0c9745130b77733a92a1a2e82ec">nlohmann::detail::to_json</a></div><div class="ttdeci">void to_json(BasicJsonType &j, const T &b)</div><div class="ttdef"><b>Definition:</b> json.hpp:3758</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1iterator__types_3_01It_00_01void__t_3_01typename_01It_1_1difference_d2be8685966c97e00e99d4fd2366dc0b_html_a1ce16c1c8c1d6a195f5a3d3ad31820f0"><div class="ttname"><a href="structnlohmann_1_1detail_1_1iterator__types_3_01It_00_01void__t_3_01typename_01It_1_1difference_d2be8685966c97e00e99d4fd2366dc0b.html#a1ce16c1c8c1d6a195f5a3d3ad31820f0">nlohmann::detail::iterator_types< It, void_t< typename It::difference_type, typename It::value_type, typename It::pointer, typename It::reference, typename It::iterator_category > >::difference_type</a></div><div class="ttdeci">typename It::difference_type difference_type</div><div class="ttdef"><b>Definition:</b> json.hpp:2287</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__reverse__iterator_html_aaaa6c0b1d74e74e35e5f7b56dfd6c5d1"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#aaaa6c0b1d74e74e35e5f7b56dfd6c5d1">nlohmann::detail::json_reverse_iterator::operator-</a></div><div class="ttdeci">difference_type operator-(const json_reverse_iterator &other) const</div><div class="ttdoc">return difference</div><div class="ttdef"><b>Definition:</b> json.hpp:10041</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__acceptor_html_a95bb3e8b6feaa523ecda8106fb5e38e3"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#a95bb3e8b6feaa523ecda8106fb5e38e3">nlohmann::detail::json_sax_acceptor::parse_error</a></div><div class="ttdeci">bool parse_error(std::size_t, const std::string &, const detail::exception &)</div><div class="ttdef"><b>Definition:</b> json.hpp:5003</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a9c4f3554773649beef69461a10a3de87"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a9c4f3554773649beef69461a10a3de87">nlohmann::basic_json::diff</a></div><div class="ttdeci">static JSON_HEDLEY_WARN_UNUSED_RESULT basic_json diff(const basic_json &source, const basic_json &target, const std::string &path="")</div><div class="ttdoc">creates a diff as a JSON patch</div><div class="ttdef"><b>Definition:</b> json.hpp:22406</div></div>
|
||
<div class="ttc" id="anamespacenlohmann_1_1detail_html_aa554fc6a11519e4f347deb25a9f0db40a4537f20910e85437f6d07701864084e8"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#aa554fc6a11519e4f347deb25a9f0db40a4537f20910e85437f6d07701864084e8">nlohmann::detail::input_format_t::ubjson</a></div><div class="ttdeci">@ ubjson</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1input__adapter_html_a86f035d9c4319360014b922b5e433ced"><div class="ttname"><a href="classnlohmann_1_1detail_1_1input__adapter.html#a86f035d9c4319360014b922b5e433ced">nlohmann::detail::input_adapter::input_adapter</a></div><div class="ttdeci">input_adapter(CharT b)</div><div class="ttdoc">input adapter for string literal</div><div class="ttdef"><b>Definition:</b> json.hpp:4240</div></div>
|
||
<div class="ttc" id="anamespacenlohmann_1_1detail_html_a26dc71e2dd9336587e56062178f9abce"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#a26dc71e2dd9336587e56062178f9abce">nlohmann::detail::pointer_t</a></div><div class="ttdeci">typename T::pointer pointer_t</div><div class="ttdef"><b>Definition:</b> json.hpp:2498</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1parser_html_a37ac88c864dda495f72cb62776b0bebeae73f17027cb0acbb537f29d0a6944b26"><div class="ttname"><a href="classnlohmann_1_1detail_1_1parser.html#a37ac88c864dda495f72cb62776b0bebeae73f17027cb0acbb537f29d0a6944b26">nlohmann::detail::parser::parse_event_t::object_start</a></div><div class="ttdeci">@ object_start</div><div class="ttdoc">the parser read { and started to process a JSON object</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1lexer_html_a3f313cdbe187cababfc5e06f0b69b098ad2a8e6f6721cccec0b466301dd9495a5"><div class="ttname"><a href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098ad2a8e6f6721cccec0b466301dd9495a5">nlohmann::detail::lexer::token_type::literal_or_value</a></div><div class="ttdeci">@ literal_or_value</div><div class="ttdoc">a literal or the begin of a value (only for diagnostics)</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_afefc38fc08bdb7a9a7474b5ab4a1140f"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#afefc38fc08bdb7a9a7474b5ab4a1140f">nlohmann::basic_json::operator!=</a></div><div class="ttdeci">friend bool operator!=(const_reference lhs, const ScalarType rhs) noexcept</div><div class="ttdoc">comparison: not equal</div><div class="ttdef"><b>Definition:</b> json.hpp:20330</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_adaa1ed0a889d86c8e0216a3d66980f76"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#adaa1ed0a889d86c8e0216a3d66980f76">nlohmann::basic_json::swap</a></div><div class="ttdeci">void swap(string_t &other)</div><div class="ttdoc">exchanges the values</div><div class="ttdef"><b>Definition:</b> json.hpp:20152</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp_html_ae22e170815983961447c429f324c944d"><div class="ttname"><a href="structnlohmann_1_1detail_1_1dtoa__impl_1_1diyfp.html#ae22e170815983961447c429f324c944d">nlohmann::detail::dtoa_impl::diyfp::e</a></div><div class="ttdeci">int e</div><div class="ttdef"><b>Definition:</b> json.hpp:12704</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a81e0c41a4a9dff4df2f6973f7f8b2a83"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a81e0c41a4a9dff4df2f6973f7f8b2a83">nlohmann::basic_json::patch</a></div><div class="ttdeci">basic_json patch(const basic_json &json_patch) const</div><div class="ttdoc">applies a JSON patch</div><div class="ttdef"><b>Definition:</b> json.hpp:22110</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1iter__impl_html_a69e52f890ce8c556fd68ce109e24b360"><div class="ttname"><a href="classnlohmann_1_1detail_1_1iter__impl.html#a69e52f890ce8c556fd68ce109e24b360">nlohmann::detail::iter_impl::pointer</a></div><div class="ttdeci">typename std::conditional< std::is_const< BasicJsonType >::value, typename BasicJsonType::const_pointer, typename BasicJsonType::pointer >::type pointer</div><div class="ttdoc">defines a pointer to the type iterated over (value_type)</div><div class="ttdef"><b>Definition:</b> json.hpp:9376</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1iter__impl_html_af91fb0bb9b2a2e96af030564ded2d92c"><div class="ttname"><a href="classnlohmann_1_1detail_1_1iter__impl.html#af91fb0bb9b2a2e96af030564ded2d92c">nlohmann::detail::iter_impl::operator--</a></div><div class="ttdeci">const iter_impl operator--(int)</div><div class="ttdoc">post-decrement (it–)</div><div class="ttdef"><b>Definition:</b> json.hpp:9660</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1json__sax_html_a2e0c7ecd80b18d18a8cc76f71cfc2028"><div class="ttname"><a href="structnlohmann_1_1json__sax.html#a2e0c7ecd80b18d18a8cc76f71cfc2028">nlohmann::json_sax::key</a></div><div class="ttdeci">virtual bool key(string_t &val)=0</div><div class="ttdoc">an object key was read</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1is__compatible__integer__type__impl_3_01RealIntegerType_00_01Compati3a04243716e8bda67d1ff2aead18da88_html_a0e9f2586c4de25750563770c9388ab9f"><div class="ttname"><a href="structnlohmann_1_1detail_1_1is__compatible__integer__type__impl_3_01RealIntegerType_00_01Compati3a04243716e8bda67d1ff2aead18da88.html#a0e9f2586c4de25750563770c9388ab9f">nlohmann::detail::is_compatible_integer_type_impl< RealIntegerType, CompatibleNumberIntegerType, enable_if_t< std::is_integral< RealIntegerType >::value and std::is_integral< CompatibleNumberIntegerType >::value and not std::is_same< bool, CompatibleNumberIntegerType >::value > >::RealLimits</a></div><div class="ttdeci">std::numeric_limits< RealIntegerType > RealLimits</div><div class="ttdef"><b>Definition:</b> json.hpp:2767</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_ab4f78c5f9fd25172eeec84482e03f5b7"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#ab4f78c5f9fd25172eeec84482e03f5b7">nlohmann::basic_json::parser_callback_t</a></div><div class="ttdeci">typename parser::parser_callback_t parser_callback_t</div><div class="ttdoc">per-element parser callback type</div><div class="ttdef"><b>Definition:</b> json.hpp:15712</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a480f6d5a30b9627b55831178266575a7"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a480f6d5a30b9627b55831178266575a7">nlohmann::basic_json::to_ubjson</a></div><div class="ttdeci">static void to_ubjson(const basic_json &j, detail::output_adapter< uint8_t > o, const bool use_size=false, const bool use_type=false)</div><div class="ttdef"><b>Definition:</b> json.hpp:21320</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1lexer_html_a3f313cdbe187cababfc5e06f0b69b098a0d2671a6f81efb91e77f6ac3bdb11443"><div class="ttname"><a href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098a0d2671a6f81efb91e77f6ac3bdb11443">nlohmann::detail::lexer::token_type::value_float</a></div><div class="ttdeci">@ value_float</div><div class="ttdoc">an floating point number – use get_number_float() for actual value</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1lexer_html_a3f313cdbe187cababfc5e06f0b69b098a16c226b4425b68560fea322b46dabe01"><div class="ttname"><a href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098a16c226b4425b68560fea322b46dabe01">nlohmann::detail::lexer::token_type::begin_array</a></div><div class="ttdeci">@ begin_array</div><div class="ttdoc">the character for array begin [</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a2b2d781d7f2a4ee41bc0016e931cadf7"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a2b2d781d7f2a4ee41bc0016e931cadf7">nlohmann::basic_json::type</a></div><div class="ttdeci">constexpr value_t type() const noexcept</div><div class="ttdoc">return the type of the JSON value (explicit)</div><div class="ttdef"><b>Definition:</b> json.hpp:16612</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1binary__writer_html_a373289af95a946c19bb4a58a5df71a78"><div class="ttname"><a href="classnlohmann_1_1detail_1_1binary__writer.html#a373289af95a946c19bb4a58a5df71a78">nlohmann::detail::binary_writer::binary_writer</a></div><div class="ttdeci">binary_writer(output_adapter_t< CharType > adapter)</div><div class="ttdoc">create a binary writer</div><div class="ttdef"><b>Definition:</b> json.hpp:11328</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1static__const_html"><div class="ttname"><a href="structnlohmann_1_1detail_1_1static__const.html">nlohmann::detail::static_const</a></div><div class="ttdef"><b>Definition:</b> json.hpp:2233</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1lexer_html_a3f313cdbe187cababfc5e06f0b69b098a2b490e8bf366b4cbe3ebd99b26ce15ce"><div class="ttname"><a href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098a2b490e8bf366b4cbe3ebd99b26ce15ce">nlohmann::detail::lexer::token_type::value_string</a></div><div class="ttdeci">@ value_string</div><div class="ttdoc">a string – use get_string() for actual value</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_aea1085f2d35cc0e1ce119cf0110119e6"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#aea1085f2d35cc0e1ce119cf0110119e6">nlohmann::basic_json::operator+=</a></div><div class="ttdeci">reference operator+=(basic_json &&val)</div><div class="ttdoc">add an object to an array</div><div class="ttdef"><b>Definition:</b> json.hpp:19433</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1json__sax_html_af31bacfa81aa7818d8639d1da65c8eb5"><div class="ttname"><a href="structnlohmann_1_1json__sax.html#af31bacfa81aa7818d8639d1da65c8eb5">nlohmann::json_sax::~json_sax</a></div><div class="ttdeci">virtual ~json_sax()=default</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1output__stream__adapter_html_a6e2698c76b200b2d8fac6cebfc43a245"><div class="ttname"><a href="classnlohmann_1_1detail_1_1output__stream__adapter.html#a6e2698c76b200b2d8fac6cebfc43a245">nlohmann::detail::output_stream_adapter::write_character</a></div><div class="ttdeci">void write_character(CharType c) override</div><div class="ttdef"><b>Definition:</b> json.hpp:11242</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1iterator__types_3_01It_00_01void__t_3_01typename_01It_1_1difference_d2be8685966c97e00e99d4fd2366dc0b_html_aacaf73dc959b7c2119c15e53b5ce00a3"><div class="ttname"><a href="structnlohmann_1_1detail_1_1iterator__types_3_01It_00_01void__t_3_01typename_01It_1_1difference_d2be8685966c97e00e99d4fd2366dc0b.html#aacaf73dc959b7c2119c15e53b5ce00a3">nlohmann::detail::iterator_types< It, void_t< typename It::difference_type, typename It::value_type, typename It::pointer, typename It::reference, typename It::iterator_category > >::pointer</a></div><div class="ttdeci">typename It::pointer pointer</div><div class="ttdef"><b>Definition:</b> json.hpp:2289</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1output__adapter_html_a05a30a77b568fd84676078d938cbd484"><div class="ttname"><a href="classnlohmann_1_1detail_1_1output__adapter.html#a05a30a77b568fd84676078d938cbd484">nlohmann::detail::output_adapter::output_adapter</a></div><div class="ttdeci">output_adapter(std::vector< CharType > &vec)</div><div class="ttdef"><b>Definition:</b> json.hpp:11285</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1primitive__iterator__t_html_af58da4713ea9010912f3da6b22aeee51"><div class="ttname"><a href="classnlohmann_1_1detail_1_1primitive__iterator__t.html#af58da4713ea9010912f3da6b22aeee51">nlohmann::detail::primitive_iterator_t::operator==</a></div><div class="ttdeci">constexpr friend bool operator==(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept</div><div class="ttdef"><b>Definition:</b> json.hpp:9213</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1input__adapter_html_af002dd2e53ac0855a03cb68d0ce626b2"><div class="ttname"><a href="classnlohmann_1_1detail_1_1input__adapter.html#af002dd2e53ac0855a03cb68d0ce626b2">nlohmann::detail::input_adapter::input_adapter</a></div><div class="ttdeci">input_adapter(std::istream &&i)</div><div class="ttdoc">input adapter for input stream</div><div class="ttdef"><b>Definition:</b> json.hpp:4209</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1json__pointer_html_a4667ef558c8c3f8a646bfda0c6654653"><div class="ttname"><a href="classnlohmann_1_1json__pointer.html#a4667ef558c8c3f8a646bfda0c6654653">nlohmann::json_pointer::operator==</a></div><div class="ttdeci">friend bool operator==(json_pointer const &lhs, json_pointer const &rhs) noexcept</div><div class="ttdoc">compares two JSON pointers for equality</div><div class="ttdef"><b>Definition:</b> json.hpp:11059</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__acceptor_html_a3a8078bbf865ec355106f6048241609a"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#a3a8078bbf865ec355106f6048241609a">nlohmann::detail::json_sax_acceptor::string_t</a></div><div class="ttdeci">typename BasicJsonType::string_t string_t</div><div class="ttdef"><b>Definition:</b> json.hpp:4946</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__dom__parser_html_aef4652c0e81d6c052acb5d36afe09499"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__dom__parser.html#aef4652c0e81d6c052acb5d36afe09499">nlohmann::detail::json_sax_dom_parser::number_float</a></div><div class="ttdeci">bool number_float(number_float_t val, const string_t &)</div><div class="ttdef"><b>Definition:</b> json.hpp:4502</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a7e368211047f725f333696aefdf39ffd"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a7e368211047f725f333696aefdf39ffd">nlohmann::basic_json::operator<=</a></div><div class="ttdeci">friend bool operator<=(const_reference lhs, const ScalarType rhs) noexcept</div><div class="ttdoc">comparison: less than or equal</div><div class="ttdef"><b>Definition:</b> json.hpp:20494</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__acceptor_html_a22ef94ca5476a9563dcaca15b7d6e654"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__acceptor.html#a22ef94ca5476a9563dcaca15b7d6e654">nlohmann::detail::json_sax_acceptor::end_array</a></div><div class="ttdeci">bool end_array()</div><div class="ttdef"><b>Definition:</b> json.hpp:4998</div></div>
|
||
<div class="ttc" id="anamespacenlohmann_1_1detail_1_1dtoa__impl_html_a36ded358763b5dbcea9867660fbe4e28"><div class="ttname"><a href="namespacenlohmann_1_1detail_1_1dtoa__impl.html#a36ded358763b5dbcea9867660fbe4e28">nlohmann::detail::dtoa_impl::find_largest_pow10</a></div><div class="ttdeci">int find_largest_pow10(const std::uint32_t n, std::uint32_t &pow10)</div><div class="ttdef"><b>Definition:</b> json.hpp:13134</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__reverse__iterator_html_a6b2ef1d632fe49bfcc22fbd1abd62395"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#a6b2ef1d632fe49bfcc22fbd1abd62395">nlohmann::detail::json_reverse_iterator::base_iterator</a></div><div class="ttdeci">std::reverse_iterator< Base > base_iterator</div><div class="ttdoc">shortcut to the reverse iterator adapter</div><div class="ttdef"><b>Definition:</b> json.hpp:9987</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__reverse__iterator_html_a2488d6a902103610943920ac49d12a04"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#a2488d6a902103610943920ac49d12a04">nlohmann::detail::json_reverse_iterator::operator--</a></div><div class="ttdeci">json_reverse_iterator & operator--()</div><div class="ttdoc">pre-decrement (–it)</div><div class="ttdef"><b>Definition:</b> json.hpp:10017</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1boolean_01_4_html_a867122bcf0856c757bd6bcbfb8be74bc"><div class="ttname"><a href="structnlohmann_1_1detail_1_1external__constructor_3_01value__t_1_1boolean_01_4.html#a867122bcf0856c757bd6bcbfb8be74bc">nlohmann::detail::external_constructor< value_t::boolean >::construct</a></div><div class="ttdeci">static void construct(BasicJsonType &j, typename BasicJsonType::boolean_t b) noexcept</div><div class="ttdef"><b>Definition:</b> json.hpp:3476</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a0136728f5db69d4051c77b94307abd6c"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a0136728f5db69d4051c77b94307abd6c">nlohmann::basic_json::insert</a></div><div class="ttdeci">iterator insert(const_iterator pos, const basic_json &val)</div><div class="ttdoc">inserts element</div><div class="ttdef"><b>Definition:</b> json.hpp:19717</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1iter__impl_html_ab447c50354c6611fa2ae0100ac17845c"><div class="ttname"><a href="classnlohmann_1_1detail_1_1iter__impl.html#ab447c50354c6611fa2ae0100ac17845c">nlohmann::detail::iter_impl::value</a></div><div class="ttdeci">reference value() const</div><div class="ttdoc">return the value of an iterator</div><div class="ttdef"><b>Definition:</b> json.hpp:9932</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1lexer_html_a06f5e2129cffcc72eee84d88e126e3e3"><div class="ttname"><a href="classnlohmann_1_1detail_1_1lexer.html#a06f5e2129cffcc72eee84d88e126e3e3">nlohmann::detail::lexer::token_type_name</a></div><div class="ttdeci">JSON_HEDLEY_RETURNS_NON_NULL static const JSON_HEDLEY_CONST char * token_type_name(const token_type t) noexcept</div><div class="ttdoc">return name of values of type token_type (only used for errors)</div><div class="ttdef"><b>Definition:</b> json.hpp:7194</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a5e4212986136ca1220f351c60e89906b"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a5e4212986136ca1220f351c60e89906b">nlohmann::basic_json::iterator_wrapper</a></div><div class="ttdeci">static iteration_proxy< iterator > iterator_wrapper(reference ref) noexcept</div><div class="ttdoc">wrapper to access iterator member functions in range-based for</div><div class="ttdef"><b>Definition:</b> json.hpp:18982</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__reverse__iterator_html_a6c2d025530114ed989188e8adfc8467e"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__reverse__iterator.html#a6c2d025530114ed989188e8adfc8467e">nlohmann::detail::json_reverse_iterator::json_reverse_iterator</a></div><div class="ttdeci">json_reverse_iterator(const base_iterator &it) noexcept</div><div class="ttdoc">create reverse iterator from base class</div><div class="ttdef"><b>Definition:</b> json.hpp:9996</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_afe3e137ace692efa08590d8df40f58dd"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#afe3e137ace692efa08590d8df40f58dd">nlohmann::basic_json::items</a></div><div class="ttdeci">iteration_proxy< iterator > items() noexcept</div><div class="ttdoc">helper to access iterator member functions in range-based for</div><div class="ttdef"><b>Definition:</b> json.hpp:19059</div></div>
|
||
<div class="ttc" id="anamespacenlohmann_1_1detail_html_a1a804b98cbe89b7e44b698f2ca860490"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#a1a804b98cbe89b7e44b698f2ca860490">nlohmann::detail::to_json</a></div><div class="ttdeci">void to_json(BasicJsonType &j, T b) noexcept</div><div class="ttdef"><b>Definition:</b> json.hpp:3647</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1lexer_html_a3f313cdbe187cababfc5e06f0b69b098a7d5b4427866814de4d8f132721d59c87"><div class="ttname"><a href="classnlohmann_1_1detail_1_1lexer.html#a3f313cdbe187cababfc5e06f0b69b098a7d5b4427866814de4d8f132721d59c87">nlohmann::detail::lexer::token_type::end_object</a></div><div class="ttdeci">@ end_object</div><div class="ttdoc">the character for object end }</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1is__constructible__object__type__impl_html"><div class="ttname"><a href="structnlohmann_1_1detail_1_1is__constructible__object__type__impl.html">nlohmann::detail::is_constructible_object_type_impl</a></div><div class="ttdef"><b>Definition:</b> json.hpp:2621</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__dom__callback__parser_html_a167fd9bf385d3d08bcbbba8a927c0eff"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#a167fd9bf385d3d08bcbbba8a927c0eff">nlohmann::detail::json_sax_dom_callback_parser::is_errored</a></div><div class="ttdeci">constexpr bool is_errored() const</div><div class="ttdef"><b>Definition:</b> json.hpp:4834</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1binary__writer_html_a9ffc566db5219b473762462234b47db9"><div class="ttname"><a href="classnlohmann_1_1detail_1_1binary__writer.html#a9ffc566db5219b473762462234b47db9">nlohmann::detail::binary_writer::write_bson</a></div><div class="ttdeci">void write_bson(const BasicJsonType &j)</div><div class="ttdef"><b>Definition:</b> json.hpp:11337</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1iter__impl_html_a3eef94f9d167046e7f773aeb6b78090c"><div class="ttname"><a href="classnlohmann_1_1detail_1_1iter__impl.html#a3eef94f9d167046e7f773aeb6b78090c">nlohmann::detail::iter_impl::operator+=</a></div><div class="ttdeci">iter_impl & operator+=(difference_type i)</div><div class="ttdoc">add to iterator</div><div class="ttdef"><b>Definition:</b> json.hpp:9793</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1output__adapter_html"><div class="ttname"><a href="classnlohmann_1_1detail_1_1output__adapter.html">nlohmann::detail::output_adapter</a></div><div class="ttdef"><b>Definition:</b> json.hpp:11282</div></div>
|
||
<div class="ttc" id="anamespacenlohmann_1_1detail_html_ad22d2aa3aab018050ae519f6754366e1"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#ad22d2aa3aab018050ae519f6754366e1">nlohmann::detail::iterator_category_t</a></div><div class="ttdeci">typename T::iterator_category iterator_category_t</div><div class="ttdef"><b>Definition:</b> json.hpp:2504</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a671aea68432ecb28770bbc482918f023"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a671aea68432ecb28770bbc482918f023">nlohmann::basic_json::value</a></div><div class="ttdeci">ValueType value(const json_pointer &ptr, const ValueType &default_value) const</div><div class="ttdoc">access specified object element via JSON Pointer with default value</div><div class="ttdef"><b>Definition:</b> json.hpp:18075</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__sax__dom__callback__parser_html_ab7d8db672189164a8c0731e65ada1b45"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__sax__dom__callback__parser.html#ab7d8db672189164a8c0731e65ada1b45">nlohmann::detail::json_sax_dom_callback_parser::boolean</a></div><div class="ttdeci">bool boolean(bool val)</div><div class="ttdef"><b>Definition:</b> json.hpp:4667</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a404cfe1bdbf1dc6b229627fcf2afb95f"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a404cfe1bdbf1dc6b229627fcf2afb95f">nlohmann::basic_json::insert</a></div><div class="ttdeci">iterator insert(const_iterator pos, const_iterator first, const_iterator last)</div><div class="ttdoc">inserts elements</div><div class="ttdef"><b>Definition:</b> json.hpp:19816</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1detail_1_1json__ref_html_a78d76cf288141049568c0d670ed670ef"><div class="ttname"><a href="classnlohmann_1_1detail_1_1json__ref.html#a78d76cf288141049568c0d670ed670ef">nlohmann::detail::json_ref::value_type</a></div><div class="ttdeci">BasicJsonType value_type</div><div class="ttdef"><b>Definition:</b> json.hpp:11104</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_ae9be9e956bfc4658f35d17c6aa72b063"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#ae9be9e956bfc4658f35d17c6aa72b063">nlohmann::basic_json::basic_json</a></div><div class="ttdeci">basic_json(std::nullptr_t=nullptr) noexcept</div><div class="ttdoc">create a null object</div><div class="ttdef"><b>Definition:</b> json.hpp:15776</div></div>
|
||
<div class="ttc" id="astructnlohmann_1_1detail_1_1to__json__fn_html_aecfb5114c8a737fc89d98589482795b8"><div class="ttname"><a href="structnlohmann_1_1detail_1_1to__json__fn.html#aecfb5114c8a737fc89d98589482795b8">nlohmann::detail::to_json_fn::operator()</a></div><div class="ttdeci">auto operator()(BasicJsonType &j, T &&val) const noexcept(noexcept(to_json(j, std::forward< T >(val)))) -> decltype(to_json(j, std::forward< T >(val)), void())</div><div class="ttdef"><b>Definition:</b> json.hpp:3778</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_abefbb319df8ed4f8705b4fd4e4dc731c"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#abefbb319df8ed4f8705b4fd4e4dc731c">nlohmann::basic_json::get_ptr</a></div><div class="ttdeci">auto get_ptr() noexcept -> decltype(std::declval< basic_json_t & >().get_impl_ptr(std::declval< PointerType >()))</div><div class="ttdoc">get a pointer value (implicit)</div><div class="ttdef"><b>Definition:</b> json.hpp:17320</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_a9286acdc0578fc66e9346323e69fc0e3"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#a9286acdc0578fc66e9346323e69fc0e3">nlohmann::basic_json::contains</a></div><div class="ttdeci">bool contains(KeyT &&key) const</div><div class="ttdoc">check the existence of an element in a JSON object</div><div class="ttdef"><b>Definition:</b> json.hpp:18604</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_ac382f3d2bc6a5d52d936e4e40593f03b"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#ac382f3d2bc6a5d52d936e4e40593f03b">nlohmann::basic_json::get_ref</a></div><div class="ttdeci">ReferenceType get_ref() const</div><div class="ttdoc">get a reference value (implicit)</div><div class="ttdef"><b>Definition:</b> json.hpp:17427</div></div>
|
||
<div class="ttc" id="anamespacenlohmann_1_1detail_html_a7542b4dbac07817fd4849ecfa4619def"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#a7542b4dbac07817fd4849ecfa4619def">nlohmann::detail::is_detected_exact</a></div><div class="ttdeci">std::is_same< Expected, detected_t< Op, Args... > > is_detected_exact</div><div class="ttdef"><b>Definition:</b> json.hpp:2376</div></div>
|
||
<div class="ttc" id="aclassnlohmann_1_1basic__json_html_abed3e9b4ab75f5bcbd3cd20f5af5cdab"><div class="ttname"><a href="classnlohmann_1_1basic__json.html#abed3e9b4ab75f5bcbd3cd20f5af5cdab">nlohmann::basic_json::operator<</a></div><div class="ttdeci">friend bool operator<(const ScalarType lhs, const_reference rhs) noexcept</div><div class="ttdoc">comparison: less than</div><div class="ttdef"><b>Definition:</b> json.hpp:20459</div></div>
|
||
<div class="ttc" id="astructstd_1_1hash_3_01nlohmann_1_1json_01_4_html_aec1567d1fa47dbe5b77954dce3a55b64"><div class="ttname"><a href="structstd_1_1hash_3_01nlohmann_1_1json_01_4.html#aec1567d1fa47dbe5b77954dce3a55b64">std::hash< nlohmann::json >::operator()</a></div><div class="ttdeci">std::size_t operator()(const nlohmann::json &j) const</div><div class="ttdoc">return a hash value for a JSON object</div><div class="ttdef"><b>Definition:</b> json.hpp:22643</div></div>
|
||
<div class="ttc" id="anamespacenlohmann_1_1detail_html_a53a082eedad9f4729fcd8fed552a21f7"><div class="ttname"><a href="namespacenlohmann_1_1detail.html#a53a082eedad9f4729fcd8fed552a21f7">nlohmann::detail::uncvref_t</a></div><div class="ttdeci">typename std::remove_cv< typename std::remove_reference< T >::type >::type uncvref_t</div><div class="ttdef"><b>Definition:</b> json.hpp:2194</div></div>
|
||
<!-- start footer part -->
|
||
<hr class="footer"/><address class="footer"><small>
|
||
Generated by  <a href="http://www.doxygen.org/index.html">
|
||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||
</a> 1.8.17
|
||
</small></address>
|
||
</body>
|
||
</html>
|