renderd7/classnlohmann_1_1detail_1_1lexer.html
2022-04-13 18:07:13 +00:00

531 lines
39 KiB
HTML

<!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>Renderd7-nightly: nlohmann::detail::lexer&lt; BasicJsonType, InputAdapterType &gt; Class Template Reference</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="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="docsn.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">Renderd7-nightly
&#160;<span id="projectnumber">v0.7.0</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.17 -->
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('classnlohmann_1_1detail_1_1lexer.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pri-methods">Private Member Functions</a> &#124;
<a href="#pri-static-methods">Static Private Member Functions</a> &#124;
<a href="#pri-attribs">Private Attributes</a> &#124;
<a href="classnlohmann_1_1detail_1_1lexer-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">nlohmann::detail::lexer&lt; BasicJsonType, InputAdapterType &gt; Class Template Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>lexical analysis
<a href="classnlohmann_1_1detail_1_1lexer.html#details">More...</a></p>
<p><code>#include &lt;json.hpp&gt;</code></p>
<p>Inherits nlohmann::detail::lexer_base&lt; BasicJsonType &gt;.</p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a9535d0c72adbe9fe149853ebad5faee8"><td class="memItemLeft" align="right" valign="top"><a id="a9535d0c72adbe9fe149853ebad5faee8"></a>
constexpr number_integer_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classnlohmann_1_1detail_1_1lexer.html#a9535d0c72adbe9fe149853ebad5faee8">get_number_integer</a> () const noexcept</td></tr>
<tr class="memdesc:a9535d0c72adbe9fe149853ebad5faee8"><td class="mdescLeft">&#160;</td><td class="mdescRight">return integer value <br /></td></tr>
<tr class="separator:a9535d0c72adbe9fe149853ebad5faee8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abfc85ff04fcb1a5a8d8ea299a4c479e5"><td class="memItemLeft" align="right" valign="top"><a id="abfc85ff04fcb1a5a8d8ea299a4c479e5"></a>
constexpr number_unsigned_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classnlohmann_1_1detail_1_1lexer.html#abfc85ff04fcb1a5a8d8ea299a4c479e5">get_number_unsigned</a> () const noexcept</td></tr>
<tr class="memdesc:abfc85ff04fcb1a5a8d8ea299a4c479e5"><td class="mdescLeft">&#160;</td><td class="mdescRight">return unsigned integer value <br /></td></tr>
<tr class="separator:abfc85ff04fcb1a5a8d8ea299a4c479e5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adb1a71f6a3e65ed32c452a318967b61e"><td class="memItemLeft" align="right" valign="top"><a id="adb1a71f6a3e65ed32c452a318967b61e"></a>
constexpr number_float_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classnlohmann_1_1detail_1_1lexer.html#adb1a71f6a3e65ed32c452a318967b61e">get_number_float</a> () const noexcept</td></tr>
<tr class="memdesc:adb1a71f6a3e65ed32c452a318967b61e"><td class="mdescLeft">&#160;</td><td class="mdescRight">return floating-point value <br /></td></tr>
<tr class="separator:adb1a71f6a3e65ed32c452a318967b61e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a76875bb49a480763f6c48b8586f7e60e"><td class="memItemLeft" align="right" valign="top"><a id="a76875bb49a480763f6c48b8586f7e60e"></a>
string_t &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classnlohmann_1_1detail_1_1lexer.html#a76875bb49a480763f6c48b8586f7e60e">get_string</a> ()</td></tr>
<tr class="memdesc:a76875bb49a480763f6c48b8586f7e60e"><td class="mdescLeft">&#160;</td><td class="mdescRight">return current string value (implicitly resets the token; useful only once) <br /></td></tr>
<tr class="separator:a76875bb49a480763f6c48b8586f7e60e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a948c80b8bd8a3095b544e4655e1ca37e"><td class="memItemLeft" align="right" valign="top"><a id="a948c80b8bd8a3095b544e4655e1ca37e"></a>
constexpr <a class="el" href="structnlohmann_1_1detail_1_1position__t.html">position_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classnlohmann_1_1detail_1_1lexer.html#a948c80b8bd8a3095b544e4655e1ca37e">get_position</a> () const noexcept</td></tr>
<tr class="memdesc:a948c80b8bd8a3095b544e4655e1ca37e"><td class="mdescLeft">&#160;</td><td class="mdescRight">return position of last read token <br /></td></tr>
<tr class="separator:a948c80b8bd8a3095b544e4655e1ca37e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae000b7571480e528dee4b281f63d5b15"><td class="memItemLeft" align="right" valign="top">std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classnlohmann_1_1detail_1_1lexer.html#ae000b7571480e528dee4b281f63d5b15">get_token_string</a> () const</td></tr>
<tr class="separator:ae000b7571480e528dee4b281f63d5b15"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5ff4935dd3a007659d17efd626b93982"><td class="memItemLeft" align="right" valign="top"><a id="a5ff4935dd3a007659d17efd626b93982"></a>
constexpr const JSON_HEDLEY_RETURNS_NON_NULL char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classnlohmann_1_1detail_1_1lexer.html#a5ff4935dd3a007659d17efd626b93982">get_error_message</a> () const noexcept</td></tr>
<tr class="memdesc:a5ff4935dd3a007659d17efd626b93982"><td class="mdescLeft">&#160;</td><td class="mdescRight">return syntax error message <br /></td></tr>
<tr class="separator:a5ff4935dd3a007659d17efd626b93982"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7cd7d55de2cd398660bc243c7229caf9"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classnlohmann_1_1detail_1_1lexer.html#a7cd7d55de2cd398660bc243c7229caf9">skip_bom</a> ()</td></tr>
<tr class="memdesc:a7cd7d55de2cd398660bc243c7229caf9"><td class="mdescLeft">&#160;</td><td class="mdescRight">skip the UTF-8 byte order mark <a href="classnlohmann_1_1detail_1_1lexer.html#a7cd7d55de2cd398660bc243c7229caf9">More...</a><br /></td></tr>
<tr class="separator:a7cd7d55de2cd398660bc243c7229caf9"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-methods"></a>
Private Member Functions</h2></td></tr>
<tr class="memitem:adcf663a9878f58544790f1b6faad2e42"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classnlohmann_1_1detail_1_1lexer.html#adcf663a9878f58544790f1b6faad2e42">get_codepoint</a> ()</td></tr>
<tr class="memdesc:adcf663a9878f58544790f1b6faad2e42"><td class="mdescLeft">&#160;</td><td class="mdescRight">get codepoint from 4 hex characters following <code>\u</code> <a href="classnlohmann_1_1detail_1_1lexer.html#adcf663a9878f58544790f1b6faad2e42">More...</a><br /></td></tr>
<tr class="separator:adcf663a9878f58544790f1b6faad2e42"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af6fe701b8b3ca5f4a1b58db4658bdf87"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classnlohmann_1_1detail_1_1lexer.html#af6fe701b8b3ca5f4a1b58db4658bdf87">next_byte_in_range</a> (std::initializer_list&lt; char_int_type &gt; ranges)</td></tr>
<tr class="memdesc:af6fe701b8b3ca5f4a1b58db4658bdf87"><td class="mdescLeft">&#160;</td><td class="mdescRight">check if the next byte(s) are inside a given range <a href="classnlohmann_1_1detail_1_1lexer.html#af6fe701b8b3ca5f4a1b58db4658bdf87">More...</a><br /></td></tr>
<tr class="separator:af6fe701b8b3ca5f4a1b58db4658bdf87"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab6352978e03ebcbc3cd618cd17142f26"><td class="memItemLeft" align="right" valign="top">token_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classnlohmann_1_1detail_1_1lexer.html#ab6352978e03ebcbc3cd618cd17142f26">scan_string</a> ()</td></tr>
<tr class="memdesc:ab6352978e03ebcbc3cd618cd17142f26"><td class="mdescLeft">&#160;</td><td class="mdescRight">scan a string literal <a href="classnlohmann_1_1detail_1_1lexer.html#ab6352978e03ebcbc3cd618cd17142f26">More...</a><br /></td></tr>
<tr class="separator:ab6352978e03ebcbc3cd618cd17142f26"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afdc68706ad20be93977cd0f97043ea7f"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classnlohmann_1_1detail_1_1lexer.html#afdc68706ad20be93977cd0f97043ea7f">scan_comment</a> ()</td></tr>
<tr class="memdesc:afdc68706ad20be93977cd0f97043ea7f"><td class="mdescLeft">&#160;</td><td class="mdescRight">scan a comment <a href="classnlohmann_1_1detail_1_1lexer.html#afdc68706ad20be93977cd0f97043ea7f">More...</a><br /></td></tr>
<tr class="separator:afdc68706ad20be93977cd0f97043ea7f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aab51a28e32c1957329141baff8eda1c4"><td class="memItemLeft" align="right" valign="top">token_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classnlohmann_1_1detail_1_1lexer.html#aab51a28e32c1957329141baff8eda1c4">scan_number</a> ()</td></tr>
<tr class="memdesc:aab51a28e32c1957329141baff8eda1c4"><td class="mdescLeft">&#160;</td><td class="mdescRight">scan a number literal <a href="classnlohmann_1_1detail_1_1lexer.html#aab51a28e32c1957329141baff8eda1c4">More...</a><br /></td></tr>
<tr class="separator:aab51a28e32c1957329141baff8eda1c4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad89dec0ac0f4e851925a0499e043b18b"><td class="memItemLeft" align="right" valign="top">token_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classnlohmann_1_1detail_1_1lexer.html#ad89dec0ac0f4e851925a0499e043b18b">scan_literal</a> (const char_type *literal_text, const std::size_t length, token_type return_type)</td></tr>
<tr class="separator:ad89dec0ac0f4e851925a0499e043b18b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3bda093837339813916d11fb6e396606"><td class="memItemLeft" align="right" valign="top"><a id="a3bda093837339813916d11fb6e396606"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classnlohmann_1_1detail_1_1lexer.html#a3bda093837339813916d11fb6e396606">reset</a> () noexcept</td></tr>
<tr class="memdesc:a3bda093837339813916d11fb6e396606"><td class="mdescLeft">&#160;</td><td class="mdescRight">reset token_buffer; current character is beginning of token <br /></td></tr>
<tr class="separator:a3bda093837339813916d11fb6e396606"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab5811afe1c3efb0b769f7733b8373c6f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classnlohmann_1_1detail_1_1lexer.html#ab5811afe1c3efb0b769f7733b8373c6f">unget</a> ()</td></tr>
<tr class="memdesc:ab5811afe1c3efb0b769f7733b8373c6f"><td class="mdescLeft">&#160;</td><td class="mdescRight">unget current character (read it again on next get) <a href="classnlohmann_1_1detail_1_1lexer.html#ab5811afe1c3efb0b769f7733b8373c6f">More...</a><br /></td></tr>
<tr class="separator:ab5811afe1c3efb0b769f7733b8373c6f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a36ffc3c33c3aea18291ead7a30fa7cc6"><td class="memItemLeft" align="right" valign="top"><a id="a36ffc3c33c3aea18291ead7a30fa7cc6"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classnlohmann_1_1detail_1_1lexer.html#a36ffc3c33c3aea18291ead7a30fa7cc6">add</a> (char_int_type c)</td></tr>
<tr class="memdesc:a36ffc3c33c3aea18291ead7a30fa7cc6"><td class="mdescLeft">&#160;</td><td class="mdescRight">add a character to token_buffer <br /></td></tr>
<tr class="separator:a36ffc3c33c3aea18291ead7a30fa7cc6"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-static-methods"></a>
Static Private Member Functions</h2></td></tr>
<tr class="memitem:a48f74c761ce663cd0d92bf428606b535"><td class="memItemLeft" align="right" valign="top"><a id="a48f74c761ce663cd0d92bf428606b535"></a>
static JSON_HEDLEY_PURE char&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classnlohmann_1_1detail_1_1lexer.html#a48f74c761ce663cd0d92bf428606b535">get_decimal_point</a> () noexcept</td></tr>
<tr class="memdesc:a48f74c761ce663cd0d92bf428606b535"><td class="mdescLeft">&#160;</td><td class="mdescRight">return the locale-dependent decimal point <br /></td></tr>
<tr class="separator:a48f74c761ce663cd0d92bf428606b535"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-attribs"></a>
Private Attributes</h2></td></tr>
<tr class="memitem:a526d001dd91ec55b8032ba98466765c0"><td class="memItemLeft" align="right" valign="top"><a id="a526d001dd91ec55b8032ba98466765c0"></a>
InputAdapterType&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classnlohmann_1_1detail_1_1lexer.html#a526d001dd91ec55b8032ba98466765c0">ia</a></td></tr>
<tr class="memdesc:a526d001dd91ec55b8032ba98466765c0"><td class="mdescLeft">&#160;</td><td class="mdescRight">input adapter <br /></td></tr>
<tr class="separator:a526d001dd91ec55b8032ba98466765c0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a11528814930243028ac5b8901f4a17d7"><td class="memItemLeft" align="right" valign="top"><a id="a11528814930243028ac5b8901f4a17d7"></a>
const bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classnlohmann_1_1detail_1_1lexer.html#a11528814930243028ac5b8901f4a17d7">ignore_comments</a> = false</td></tr>
<tr class="memdesc:a11528814930243028ac5b8901f4a17d7"><td class="mdescLeft">&#160;</td><td class="mdescRight">whether comments should be ignored (true) or signaled as errors (false) <br /></td></tr>
<tr class="separator:a11528814930243028ac5b8901f4a17d7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a40bd85d91d377ade9ccb910e35776c22"><td class="memItemLeft" align="right" valign="top"><a id="a40bd85d91d377ade9ccb910e35776c22"></a>
char_int_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classnlohmann_1_1detail_1_1lexer.html#a40bd85d91d377ade9ccb910e35776c22">current</a> = std::char_traits&lt;char_type&gt;::eof()</td></tr>
<tr class="memdesc:a40bd85d91d377ade9ccb910e35776c22"><td class="mdescLeft">&#160;</td><td class="mdescRight">the current character <br /></td></tr>
<tr class="separator:a40bd85d91d377ade9ccb910e35776c22"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a40b108a0e45a7253f6ad85fbdaa6a262"><td class="memItemLeft" align="right" valign="top"><a id="a40b108a0e45a7253f6ad85fbdaa6a262"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classnlohmann_1_1detail_1_1lexer.html#a40b108a0e45a7253f6ad85fbdaa6a262">next_unget</a> = false</td></tr>
<tr class="memdesc:a40b108a0e45a7253f6ad85fbdaa6a262"><td class="mdescLeft">&#160;</td><td class="mdescRight">whether the next get() call should just return current <br /></td></tr>
<tr class="separator:a40b108a0e45a7253f6ad85fbdaa6a262"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8a1bda107ce1622c0cb3174fa12155ea"><td class="memItemLeft" align="right" valign="top"><a id="a8a1bda107ce1622c0cb3174fa12155ea"></a>
<a class="el" href="structnlohmann_1_1detail_1_1position__t.html">position_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classnlohmann_1_1detail_1_1lexer.html#a8a1bda107ce1622c0cb3174fa12155ea">position</a> {}</td></tr>
<tr class="memdesc:a8a1bda107ce1622c0cb3174fa12155ea"><td class="mdescLeft">&#160;</td><td class="mdescRight">the start position of the current token <br /></td></tr>
<tr class="separator:a8a1bda107ce1622c0cb3174fa12155ea"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a94aec416b883f742ba7f20bd16adb3c3"><td class="memItemLeft" align="right" valign="top"><a id="a94aec416b883f742ba7f20bd16adb3c3"></a>
std::vector&lt; char_type &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classnlohmann_1_1detail_1_1lexer.html#a94aec416b883f742ba7f20bd16adb3c3">token_string</a> {}</td></tr>
<tr class="memdesc:a94aec416b883f742ba7f20bd16adb3c3"><td class="mdescLeft">&#160;</td><td class="mdescRight">raw input token string (for error messages) <br /></td></tr>
<tr class="separator:a94aec416b883f742ba7f20bd16adb3c3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac4eaf39567bd5f0750e5d7e913fb474d"><td class="memItemLeft" align="right" valign="top"><a id="ac4eaf39567bd5f0750e5d7e913fb474d"></a>
string_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classnlohmann_1_1detail_1_1lexer.html#ac4eaf39567bd5f0750e5d7e913fb474d">token_buffer</a> {}</td></tr>
<tr class="memdesc:ac4eaf39567bd5f0750e5d7e913fb474d"><td class="mdescLeft">&#160;</td><td class="mdescRight">buffer for variable-length tokens (numbers, strings) <br /></td></tr>
<tr class="separator:ac4eaf39567bd5f0750e5d7e913fb474d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a84cbcd8c897c98c2ce04d29a29bf84cc"><td class="memItemLeft" align="right" valign="top"><a id="a84cbcd8c897c98c2ce04d29a29bf84cc"></a>
const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classnlohmann_1_1detail_1_1lexer.html#a84cbcd8c897c98c2ce04d29a29bf84cc">error_message</a> = &quot;&quot;</td></tr>
<tr class="memdesc:a84cbcd8c897c98c2ce04d29a29bf84cc"><td class="mdescLeft">&#160;</td><td class="mdescRight">a description of occurred lexer errors <br /></td></tr>
<tr class="separator:a84cbcd8c897c98c2ce04d29a29bf84cc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6f2fd5b4b6b153f11fc8f77213350073"><td class="memItemLeft" align="right" valign="top"><a id="a6f2fd5b4b6b153f11fc8f77213350073"></a>
const char_int_type&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classnlohmann_1_1detail_1_1lexer.html#a6f2fd5b4b6b153f11fc8f77213350073">decimal_point_char</a> = '.'</td></tr>
<tr class="memdesc:a6f2fd5b4b6b153f11fc8f77213350073"><td class="mdescLeft">&#160;</td><td class="mdescRight">the decimal point <br /></td></tr>
<tr class="separator:a6f2fd5b4b6b153f11fc8f77213350073"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><h3>template&lt;typename BasicJsonType, typename InputAdapterType&gt;<br />
class nlohmann::detail::lexer&lt; BasicJsonType, InputAdapterType &gt;</h3>
<p>lexical analysis </p>
<p>This class organizes the lexical analysis during JSON deserialization. </p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a id="adcf663a9878f58544790f1b6faad2e42"></a>
<h2 class="memtitle"><span class="permalink"><a href="#adcf663a9878f58544790f1b6faad2e42">&#9670;&nbsp;</a></span>get_codepoint()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename BasicJsonType , typename InputAdapterType &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">int <a class="el" href="classnlohmann_1_1detail_1_1lexer.html">nlohmann::detail::lexer</a>&lt; BasicJsonType, InputAdapterType &gt;::get_codepoint </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>get codepoint from 4 hex characters following <code>\u</code> </p>
<p>For input "\u c1 c2 c3 c4" the codepoint is: (c1 * 0x1000) + (c2 * 0x0100) + (c3 * 0x0010) + c4 = (c1 &lt;&lt; 12) + (c2 &lt;&lt; 8) + (c3 &lt;&lt; 4) + (c4 &lt;&lt; 0)</p>
<p>Furthermore, the possible characters '0'..'9', 'A'..'F', and 'a'..'f' must be converted to the integers 0x0..0x9, 0xA..0xF, 0xA..0xF, resp. The conversion is done by subtracting the offset (0x30, 0x37, and 0x57) between the ASCII value of the character and the desired integer value.</p>
<dl class="section return"><dt>Returns</dt><dd>codepoint (0x0000..0xFFFF) or -1 in case of an error (e.g. EOF or non-hex character) </dd></dl>
</div>
</div>
<a id="af6fe701b8b3ca5f4a1b58db4658bdf87"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af6fe701b8b3ca5f4a1b58db4658bdf87">&#9670;&nbsp;</a></span>next_byte_in_range()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename BasicJsonType , typename InputAdapterType &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool <a class="el" href="classnlohmann_1_1detail_1_1lexer.html">nlohmann::detail::lexer</a>&lt; BasicJsonType, InputAdapterType &gt;::next_byte_in_range </td>
<td>(</td>
<td class="paramtype">std::initializer_list&lt; char_int_type &gt;&#160;</td>
<td class="paramname"><em>ranges</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>check if the next byte(s) are inside a given range </p>
<p>Adds the current byte and, for each passed range, reads a new byte and checks if it is inside the range. If a violation was detected, set up an error message and return false. Otherwise, return true.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">ranges</td><td>list of integers; interpreted as list of pairs of inclusive lower and upper bound, respectively</td></tr>
</table>
</dd>
</dl>
<dl class="section pre"><dt>Precondition</dt><dd>The passed list <em>ranges</em> must have 2, 4, or 6 elements; that is, 1, 2, or 3 pairs. This precondition is enforced by an assertion.</dd></dl>
<dl class="section return"><dt>Returns</dt><dd>true if and only if no range violation was detected </dd></dl>
</div>
</div>
<a id="ab6352978e03ebcbc3cd618cd17142f26"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab6352978e03ebcbc3cd618cd17142f26">&#9670;&nbsp;</a></span>scan_string()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename BasicJsonType , typename InputAdapterType &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">token_type <a class="el" href="classnlohmann_1_1detail_1_1lexer.html">nlohmann::detail::lexer</a>&lt; BasicJsonType, InputAdapterType &gt;::scan_string </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>scan a string literal </p>
<p>This function scans a string according to Sect. 7 of RFC 7159. While scanning, bytes are escaped and copied into buffer token_buffer. Then the function returns successfully, token_buffer is <em>not</em> null-terminated (as it may contain \0 bytes), and token_buffer.size() is the number of bytes in the string.</p>
<dl class="section return"><dt>Returns</dt><dd>token_type::value_string if string could be successfully scanned, token_type::parse_error otherwise</dd></dl>
<dl class="section note"><dt>Note</dt><dd>In case of errors, variable error_message contains a textual description. </dd></dl>
</div>
</div>
<a id="afdc68706ad20be93977cd0f97043ea7f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afdc68706ad20be93977cd0f97043ea7f">&#9670;&nbsp;</a></span>scan_comment()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename BasicJsonType , typename InputAdapterType &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool <a class="el" href="classnlohmann_1_1detail_1_1lexer.html">nlohmann::detail::lexer</a>&lt; BasicJsonType, InputAdapterType &gt;::scan_comment </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>scan a comment </p>
<dl class="section return"><dt>Returns</dt><dd>whether comment could be scanned successfully </dd></dl>
</div>
</div>
<a id="aab51a28e32c1957329141baff8eda1c4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aab51a28e32c1957329141baff8eda1c4">&#9670;&nbsp;</a></span>scan_number()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename BasicJsonType , typename InputAdapterType &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">token_type <a class="el" href="classnlohmann_1_1detail_1_1lexer.html">nlohmann::detail::lexer</a>&lt; BasicJsonType, InputAdapterType &gt;::scan_number </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>scan a number literal </p>
<p>This function scans a string according to Sect. 6 of RFC 7159.</p>
<p>The function is realized with a deterministic finite state machine derived from the grammar described in RFC 7159. Starting in state "init", the input is read and used to determined the next state. Only state "done" accepts the number. State "error" is a trap state to model errors. In the table below, "anything" means any character but the ones listed before.</p>
<table class="markdownTable">
<tr class="markdownTableHead">
<th class="markdownTableHeadNone">state </th><th class="markdownTableHeadNone">0 </th><th class="markdownTableHeadNone">1-9 </th><th class="markdownTableHeadNone">e E </th><th class="markdownTableHeadNone">+ </th><th class="markdownTableHeadNone">- </th><th class="markdownTableHeadNone">. </th><th class="markdownTableHeadNone">anything </th></tr>
<tr class="markdownTableRowOdd">
<td class="markdownTableBodyNone">init </td><td class="markdownTableBodyNone">zero </td><td class="markdownTableBodyNone">any1 </td><td class="markdownTableBodyNone">[error] </td><td class="markdownTableBodyNone">[error] </td><td class="markdownTableBodyNone">minus </td><td class="markdownTableBodyNone">[error] </td><td class="markdownTableBodyNone">[error] </td></tr>
<tr class="markdownTableRowEven">
<td class="markdownTableBodyNone">minus </td><td class="markdownTableBodyNone">zero </td><td class="markdownTableBodyNone">any1 </td><td class="markdownTableBodyNone">[error] </td><td class="markdownTableBodyNone">[error] </td><td class="markdownTableBodyNone">[error] </td><td class="markdownTableBodyNone">[error] </td><td class="markdownTableBodyNone">[error] </td></tr>
<tr class="markdownTableRowOdd">
<td class="markdownTableBodyNone">zero </td><td class="markdownTableBodyNone">done </td><td class="markdownTableBodyNone">done </td><td class="markdownTableBodyNone">exponent </td><td class="markdownTableBodyNone">done </td><td class="markdownTableBodyNone">done </td><td class="markdownTableBodyNone">decimal1 </td><td class="markdownTableBodyNone">done </td></tr>
<tr class="markdownTableRowEven">
<td class="markdownTableBodyNone">any1 </td><td class="markdownTableBodyNone">any1 </td><td class="markdownTableBodyNone">any1 </td><td class="markdownTableBodyNone">exponent </td><td class="markdownTableBodyNone">done </td><td class="markdownTableBodyNone">done </td><td class="markdownTableBodyNone">decimal1 </td><td class="markdownTableBodyNone">done </td></tr>
<tr class="markdownTableRowOdd">
<td class="markdownTableBodyNone">decimal1 </td><td class="markdownTableBodyNone">decimal2 </td><td class="markdownTableBodyNone">decimal2 </td><td class="markdownTableBodyNone">[error] </td><td class="markdownTableBodyNone">[error] </td><td class="markdownTableBodyNone">[error] </td><td class="markdownTableBodyNone">[error] </td><td class="markdownTableBodyNone">[error] </td></tr>
<tr class="markdownTableRowEven">
<td class="markdownTableBodyNone">decimal2 </td><td class="markdownTableBodyNone">decimal2 </td><td class="markdownTableBodyNone">decimal2 </td><td class="markdownTableBodyNone">exponent </td><td class="markdownTableBodyNone">done </td><td class="markdownTableBodyNone">done </td><td class="markdownTableBodyNone">done </td><td class="markdownTableBodyNone">done </td></tr>
<tr class="markdownTableRowOdd">
<td class="markdownTableBodyNone">exponent </td><td class="markdownTableBodyNone">any2 </td><td class="markdownTableBodyNone">any2 </td><td class="markdownTableBodyNone">[error] </td><td class="markdownTableBodyNone">sign </td><td class="markdownTableBodyNone">sign </td><td class="markdownTableBodyNone">[error] </td><td class="markdownTableBodyNone">[error] </td></tr>
<tr class="markdownTableRowEven">
<td class="markdownTableBodyNone">sign </td><td class="markdownTableBodyNone">any2 </td><td class="markdownTableBodyNone">any2 </td><td class="markdownTableBodyNone">[error] </td><td class="markdownTableBodyNone">[error] </td><td class="markdownTableBodyNone">[error] </td><td class="markdownTableBodyNone">[error] </td><td class="markdownTableBodyNone">[error] </td></tr>
<tr class="markdownTableRowOdd">
<td class="markdownTableBodyNone">any2 </td><td class="markdownTableBodyNone">any2 </td><td class="markdownTableBodyNone">any2 </td><td class="markdownTableBodyNone">done </td><td class="markdownTableBodyNone">done </td><td class="markdownTableBodyNone">done </td><td class="markdownTableBodyNone">done </td><td class="markdownTableBodyNone">done </td></tr>
</table>
<p>The state machine is realized with one label per state (prefixed with "scan_number_") and <code>goto</code> statements between them. The state machine contains cycles, but any cycle can be left when EOF is read. Therefore, the function is guaranteed to terminate.</p>
<p>During scanning, the read bytes are stored in token_buffer. This string is then converted to a signed integer, an unsigned integer, or a floating-point number.</p>
<dl class="section return"><dt>Returns</dt><dd>token_type::value_unsigned, token_type::value_integer, or token_type::value_float if number could be successfully scanned, token_type::parse_error otherwise</dd></dl>
<dl class="section note"><dt>Note</dt><dd>The scanner is independent of the current locale. Internally, the locale's decimal point is used instead of <code>.</code> to work with the locale-dependent converters. </dd></dl>
</div>
</div>
<a id="ad89dec0ac0f4e851925a0499e043b18b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad89dec0ac0f4e851925a0499e043b18b">&#9670;&nbsp;</a></span>scan_literal()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename BasicJsonType , typename InputAdapterType &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">token_type <a class="el" href="classnlohmann_1_1detail_1_1lexer.html">nlohmann::detail::lexer</a>&lt; BasicJsonType, InputAdapterType &gt;::scan_literal </td>
<td>(</td>
<td class="paramtype">const char_type *&#160;</td>
<td class="paramname"><em>literal_text</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::size_t&#160;</td>
<td class="paramname"><em>length</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">token_type&#160;</td>
<td class="paramname"><em>return_type</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">literal_text</td><td>the literal text to expect </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">length</td><td>the length of the passed literal text </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">return_type</td><td>the token type to return on success </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ab5811afe1c3efb0b769f7733b8373c6f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab5811afe1c3efb0b769f7733b8373c6f">&#9670;&nbsp;</a></span>unget()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename BasicJsonType , typename InputAdapterType &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="classnlohmann_1_1detail_1_1lexer.html">nlohmann::detail::lexer</a>&lt; BasicJsonType, InputAdapterType &gt;::unget </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>unget current character (read it again on next get) </p>
<p>We implement unget by setting variable next_unget to true. The input is not changed - we just simulate ungetting by modifying chars_read_total, chars_read_current_line, and token_string. The next call to get() will behave as if the unget character is read again. </p>
</div>
</div>
<a id="ae000b7571480e528dee4b281f63d5b15"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae000b7571480e528dee4b281f63d5b15">&#9670;&nbsp;</a></span>get_token_string()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename BasicJsonType , typename InputAdapterType &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">std::string <a class="el" href="classnlohmann_1_1detail_1_1lexer.html">nlohmann::detail::lexer</a>&lt; BasicJsonType, InputAdapterType &gt;::get_token_string </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>return the last read token (for errors only). Will never contain EOF (an arbitrary value that is not a valid char value, often -1), because 255 may legitimately occur. May contain NUL, which should be escaped. </p>
</div>
</div>
<a id="a7cd7d55de2cd398660bc243c7229caf9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7cd7d55de2cd398660bc243c7229caf9">&#9670;&nbsp;</a></span>skip_bom()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename BasicJsonType , typename InputAdapterType &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool <a class="el" href="classnlohmann_1_1detail_1_1lexer.html">nlohmann::detail::lexer</a>&lt; BasicJsonType, InputAdapterType &gt;::skip_bom </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>skip the UTF-8 byte order mark </p>
<dl class="section return"><dt>Returns</dt><dd>true iff there is no BOM or the correct BOM has been skipped </dd></dl>
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="namespacenlohmann.html">nlohmann</a></li><li class="navelem"><a class="el" href="namespacenlohmann_1_1detail.html">detail</a></li><li class="navelem"><a class="el" href="classnlohmann_1_1detail_1_1lexer.html">lexer</a></li>
<li class="footer">Generated by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.17 </li>
</ul>
</div>
</body>
</html>