Logo ROOT   6.16/01
Reference Guide
List of all members | Classes | Public Types | Public Member Functions | Static Public Member Functions | Private Attributes | List of all members
nlohmann::basic_json< ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer >::lexer Class Reference

template<template< typename U, typename V, typename... Args > class ObjectType = std::map, template< typename U, typename... Args > class ArrayType = std::vector, class StringType = std::string, class BooleanType = bool, class NumberIntegerType = std::int64_t, class NumberUnsignedType = std::uint64_t, class NumberFloatType = double, template< typename U > class AllocatorType = std::allocator, template< typename T, typename SFINAE=void > class JSONSerializer = adl_serializer>
class nlohmann::basic_json< ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer >::lexer

lexical analysis

This class organizes the lexical analysis during JSON deserialization. The core of it is a scanner generated by re2c that processes a buffer and recognizes tokens according to RFC 7159.

Definition at line 9559 of file json.hpp.

Classes

struct  strtonum
 parse string into a built-in arithmetic type as if the current locale is POSIX. More...
 

Public Types

using lexer_char_t = unsigned char
 the char type to use in the lexer More...
 
enum class  token_type {
  uninitialized , literal_true , literal_false , literal_null ,
  value_string , value_unsigned , value_integer , value_float ,
  begin_array , begin_object , end_array , end_object ,
  name_separator , value_separator , parse_error , end_of_input
}
 token types for the parser More...
 

Public Member Functions

 lexer ()=delete
 
 lexer (const lexer &)=delete
 
 lexer (const lexer_char_t *buff, const size_t len) noexcept
 a lexer from a buffer with given length More...
 
 lexer (std::istream &s)
 a lexer from an input stream More...
 
void fill_line_buffer (size_t n=0)
 append data from the stream to the line buffer More...
 
bool get_number (basic_json &result, const token_type token) const
 return number value for number tokens More...
 
string_t get_string () const
 return string value for string tokens More...
 
string_t get_token_string () const
 return string representation of last read token More...
 
lexer operator= (const lexer &)=delete
 
token_type scan ()
 This function implements a scanner for JSON. More...
 

Static Public Member Functions

static string_t to_unicode (const std::size_t codepoint1, const std::size_t codepoint2=0)
 create a string from one or two Unicode code points More...
 
static std::string token_type_name (const token_type t)
 return name of values of type token_type (only used for errors) More...
 

Private Attributes

token_type last_token_type = token_type::end_of_input
 the last token type More...
 
const lexer_char_tm_content = nullptr
 the buffer pointer More...
 
const lexer_char_tm_cursor = nullptr
 pointer to the current symbol More...
 
const lexer_char_tm_limit = nullptr
 pointer to the end of the buffer More...
 
string_t m_line_buffer {}
 line buffer buffer for m_stream More...
 
string_t m_line_buffer_tmp {}
 used for filling m_line_buffer More...
 
const lexer_char_tm_marker = nullptr
 pointer for backtracking information More...
 
const lexer_char_tm_start = nullptr
 pointer to the beginning of the current symbol More...
 
std::istream * m_stream = nullptr
 optional input stream More...
 

Member Typedef Documentation

◆ lexer_char_t

template<template< typename U, typename V, typename... Args > class ObjectType = std::map, template< typename U, typename... Args > class ArrayType = std::vector, class StringType = std::string, class BooleanType = bool, class NumberIntegerType = std::int64_t, class NumberUnsignedType = std::uint64_t, class NumberFloatType = double, template< typename U > class AllocatorType = std::allocator, template< typename T, typename SFINAE=void > class JSONSerializer = adl_serializer>
using nlohmann::basic_json< ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer >::lexer::lexer_char_t = unsigned char

the char type to use in the lexer

Definition at line 9584 of file json.hpp.

Member Enumeration Documentation

◆ token_type

template<template< typename U, typename V, typename... Args > class ObjectType = std::map, template< typename U, typename... Args > class ArrayType = std::vector, class StringType = std::string, class BooleanType = bool, class NumberIntegerType = std::int64_t, class NumberUnsignedType = std::uint64_t, class NumberFloatType = double, template< typename U > class AllocatorType = std::allocator, template< typename T, typename SFINAE=void > class JSONSerializer = adl_serializer>
enum class nlohmann::basic_json::lexer::token_type
strong

token types for the parser

Enumerator
uninitialized 

indicating the scanner is uninitialized

literal_true 

the true literal

literal_false 

the false literal

literal_null 

the null literal

value_string 

a string – use get_string() for actual value

value_unsigned 

an unsigned integer – use get_number() for actual value

value_integer 

a signed integer – use get_number() for actual value

value_float 

an floating point number – use get_number() for actual value

begin_array 

the character for array begin [

begin_object 

the character for object begin {

end_array 

the character for array end ]

end_object 

the character for object end }

name_separator 

the name separator :

value_separator 

the value separator ,

parse_error 

indicating a parse error

end_of_input 

indicating the end of the input buffer

Definition at line 9563 of file json.hpp.

Constructor & Destructor Documentation

◆ lexer() [1/4]

template<template< typename U, typename V, typename... Args > class ObjectType = std::map, template< typename U, typename... Args > class ArrayType = std::vector, class StringType = std::string, class BooleanType = bool, class NumberIntegerType = std::int64_t, class NumberUnsignedType = std::uint64_t, class NumberFloatType = double, template< typename U > class AllocatorType = std::allocator, template< typename T, typename SFINAE=void > class JSONSerializer = adl_serializer>
nlohmann::basic_json< ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer >::lexer::lexer ( const lexer_char_t buff,
const size_t  len 
)
inlinenoexcept

a lexer from a buffer with given length

Definition at line 9587 of file json.hpp.

◆ lexer() [2/4]

template<template< typename U, typename V, typename... Args > class ObjectType = std::map, template< typename U, typename... Args > class ArrayType = std::vector, class StringType = std::string, class BooleanType = bool, class NumberIntegerType = std::int64_t, class NumberUnsignedType = std::uint64_t, class NumberFloatType = double, template< typename U > class AllocatorType = std::allocator, template< typename T, typename SFINAE=void > class JSONSerializer = adl_serializer>
nlohmann::basic_json< ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer >::lexer::lexer ( std::istream &  s)
inlineexplicit

a lexer from an input stream

Definition at line 9596 of file json.hpp.

◆ lexer() [3/4]

template<template< typename U, typename V, typename... Args > class ObjectType = std::map, template< typename U, typename... Args > class ArrayType = std::vector, class StringType = std::string, class BooleanType = bool, class NumberIntegerType = std::int64_t, class NumberUnsignedType = std::uint64_t, class NumberFloatType = double, template< typename U > class AllocatorType = std::allocator, template< typename T, typename SFINAE=void > class JSONSerializer = adl_serializer>
nlohmann::basic_json< ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer >::lexer::lexer ( )
delete

◆ lexer() [4/4]

template<template< typename U, typename V, typename... Args > class ObjectType = std::map, template< typename U, typename... Args > class ArrayType = std::vector, class StringType = std::string, class BooleanType = bool, class NumberIntegerType = std::int64_t, class NumberUnsignedType = std::uint64_t, class NumberFloatType = double, template< typename U > class AllocatorType = std::allocator, template< typename T, typename SFINAE=void > class JSONSerializer = adl_serializer>
nlohmann::basic_json< ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer >::lexer::lexer ( const lexer )
delete

Member Function Documentation

◆ fill_line_buffer()

template<template< typename U, typename V, typename... Args > class ObjectType = std::map, template< typename U, typename... Args > class ArrayType = std::vector, class StringType = std::string, class BooleanType = bool, class NumberIntegerType = std::int64_t, class NumberUnsignedType = std::uint64_t, class NumberFloatType = double, template< typename U > class AllocatorType = std::allocator, template< typename T, typename SFINAE=void > class JSONSerializer = adl_serializer>
void nlohmann::basic_json< ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer >::lexer::fill_line_buffer ( size_t  n = 0)
inline

append data from the stream to the line buffer

This function is called by the scan() function when the end of the buffer (m_limit) is reached and the m_cursor pointer cannot be incremented without leaving the limits of the line buffer. Note re2c decides when to call this function.

If the lexer reads from contiguous storage, there is no trailing null byte. Therefore, this function must make sure to add these padding null bytes.

If the lexer reads from an input stream, this function reads the next line of the input.

Precondition
p p p p p p u u u u u x . . . . . . ^ ^ ^ ^ m_content m_start | m_limit m_cursor
Postcondition
u u u u u x x x x x x x . . . . . . ^ ^ ^ | m_cursor m_limit m_start m_content

Definition at line 10849 of file json.hpp.

◆ get_number()

template<template< typename U, typename V, typename... Args > class ObjectType = std::map, template< typename U, typename... Args > class ArrayType = std::vector, class StringType = std::string, class BooleanType = bool, class NumberIntegerType = std::int64_t, class NumberUnsignedType = std::uint64_t, class NumberFloatType = double, template< typename U > class AllocatorType = std::allocator, template< typename T, typename SFINAE=void > class JSONSerializer = adl_serializer>
bool nlohmann::basic_json< ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer >::lexer::get_number ( basic_json result,
const token_type  token 
) const
inline

return number value for number tokens

This function translates the last token into the most appropriate number type (either integer, unsigned integer or floating point), which is passed back to the caller via the result parameter.

integral numbers that don't fit into the the range of the respective type are parsed as number_float_t

floating-point values do not satisfy std::isfinite predicate are converted to value_t::null

throws if the entire string [m_start .. m_cursor) cannot be interpreted as a number

Parameters
[out]resultbasic_json object to receive the number.
[in]tokenthe type of the number token

Definition at line 11259 of file json.hpp.

◆ get_string()

template<template< typename U, typename V, typename... Args > class ObjectType = std::map, template< typename U, typename... Args > class ArrayType = std::vector, class StringType = std::string, class BooleanType = bool, class NumberIntegerType = std::int64_t, class NumberUnsignedType = std::uint64_t, class NumberFloatType = double, template< typename U > class AllocatorType = std::allocator, template< typename T, typename SFINAE=void > class JSONSerializer = adl_serializer>
string_t nlohmann::basic_json< ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer >::lexer::get_string ( ) const
inline

return string value for string tokens

The function iterates the characters between the opening and closing quotes of the string value. The complete string is the range [m_start,m_cursor). Consequently, we iterate from m_start+1 to m_cursor-1.

We differentiate two cases:

  1. Escaped characters. In this case, a new character is constructed according to the nature of the escape. Some escapes create new characters (e.g., "\\n" is replaced by "\n"), some are copied as is (e.g., "\\\\"). Furthermore, Unicode escapes of the shape "\\uxxxx" need special care. In this case, to_unicode takes care of the construction of the values.
  2. Unescaped characters are copied as is.
Precondition
m_cursor - m_start >= 2, meaning the length of the last token is at least 2 bytes which is trivially true for any string (which consists of at least two quotes).
" c1 c2 c3 ... "
^                ^
m_start          m_cursor
@complexity Linear in the length of the string.
Lemma: The loop body will always terminate.
Proof (by contradiction): Assume the loop body does not terminate. As the loop body does not contain another loop, one of the called functions must never return. The called functions are std::strtoul and to_unicode. Neither function can loop forever, so the loop body will never loop forever which contradicts the assumption that the loop body does not terminate, q.e.d.
Lemma: The loop condition for the for loop is eventually false.
Proof (by contradiction): Assume the loop does not terminate. Due to the above lemma, this can only be due to a tautological loop condition; that is, the loop condition i < m_cursor - 1 must always be true. Let x be the change of i for any loop iteration. Then m_start + 1 + x < m_cursor - 1 must hold to loop indefinitely. This can be rephrased to m_cursor - m_start - 2 > x. With the precondition, we x <= 0, meaning that the loop condition holds indefinitely if i is always decreased. However, observe that the value of i is strictly increasing with each iteration, as it is incremented by 1 in the iteration expression and never decremented inside the loop body. Hence, the loop condition will eventually be false which contradicts the assumption that the loop condition is a tautology, q.e.d.
Returns
string value of current token without opening and closing quotes
Exceptions
std::out_of_rangeif to_unicode fails

Definition at line 10975 of file json.hpp.

◆ get_token_string()

template<template< typename U, typename V, typename... Args > class ObjectType = std::map, template< typename U, typename... Args > class ArrayType = std::vector, class StringType = std::string, class BooleanType = bool, class NumberIntegerType = std::int64_t, class NumberUnsignedType = std::uint64_t, class NumberFloatType = double, template< typename U > class AllocatorType = std::allocator, template< typename T, typename SFINAE=void > class JSONSerializer = adl_serializer>
string_t nlohmann::basic_json< ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer >::lexer::get_token_string ( ) const
inline

return string representation of last read token

Definition at line 10911 of file json.hpp.

◆ operator=()

template<template< typename U, typename V, typename... Args > class ObjectType = std::map, template< typename U, typename... Args > class ArrayType = std::vector, class StringType = std::string, class BooleanType = bool, class NumberIntegerType = std::int64_t, class NumberUnsignedType = std::uint64_t, class NumberFloatType = double, template< typename U > class AllocatorType = std::allocator, template< typename T, typename SFINAE=void > class JSONSerializer = adl_serializer>
lexer nlohmann::basic_json< ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer >::lexer::operator= ( const lexer )
delete

◆ scan()

template<template< typename U, typename V, typename... Args > class ObjectType = std::map, template< typename U, typename... Args > class ArrayType = std::vector, class StringType = std::string, class BooleanType = bool, class NumberIntegerType = std::int64_t, class NumberUnsignedType = std::uint64_t, class NumberFloatType = double, template< typename U > class AllocatorType = std::allocator, template< typename T, typename SFINAE=void > class JSONSerializer = adl_serializer>
token_type nlohmann::basic_json< ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer >::lexer::scan ( )
inline

This function implements a scanner for JSON.

It is specified using regular expressions that try to follow RFC 7159 as close as possible. These regular expressions are then translated into a minimized deterministic finite automaton (DFA) by the tool re2c. As a result, the translated code for this function consists of a large block of code with goto jumps.

Returns
the class of the next token read from the buffer

@complexity Linear in the length of the input.
Proposition: The loop below will always terminate for finite input.
Proof (by contradiction): Assume a finite input. To loop forever, the loop must never hit code with a break statement. The only code snippets without a break statement are the continue statements for whitespace and byte-order-marks. To loop forever, the input must be an infinite sequence of whitespace or byte-order-marks. This contradicts the assumption of finite input, q.e.d.

Definition at line 9773 of file json.hpp.

◆ to_unicode()

template<template< typename U, typename V, typename... Args > class ObjectType = std::map, template< typename U, typename... Args > class ArrayType = std::vector, class StringType = std::string, class BooleanType = bool, class NumberIntegerType = std::int64_t, class NumberUnsignedType = std::uint64_t, class NumberFloatType = double, template< typename U > class AllocatorType = std::allocator, template< typename T, typename SFINAE=void > class JSONSerializer = adl_serializer>
static string_t nlohmann::basic_json< ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer >::lexer::to_unicode ( const std::size_t  codepoint1,
const std::size_t  codepoint2 = 0 
)
inlinestatic

create a string from one or two Unicode code points

There are two cases: (1) codepoint1 is in the Basic Multilingual Plane (U+0000 through U+FFFF) and codepoint2 is 0, or (2) codepoint1 and codepoint2 are a UTF-16 surrogate pair to represent a code point above U+FFFF.

Parameters
[in]codepoint1the code point (can be high surrogate)
[in]codepoint2the code point (can be low surrogate or 0)
Returns
string representation of the code point; the length of the result string is between 1 and 4 characters.
Exceptions
std::out_of_rangeif code point is > 0x10ffff; example: "code points above 0x10FFFF are invalid"
std::invalid_argumentif the low surrogate is invalid; example: ""missing or wrong low surrogate""

@complexity Constant.

See also
http://en.wikipedia.org/wiki/UTF-8#Sample_code

Definition at line 9645 of file json.hpp.

◆ token_type_name()

template<template< typename U, typename V, typename... Args > class ObjectType = std::map, template< typename U, typename... Args > class ArrayType = std::vector, class StringType = std::string, class BooleanType = bool, class NumberIntegerType = std::int64_t, class NumberUnsignedType = std::uint64_t, class NumberFloatType = double, template< typename U > class AllocatorType = std::allocator, template< typename T, typename SFINAE=void > class JSONSerializer = adl_serializer>
static std::string nlohmann::basic_json< ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer >::lexer::token_type_name ( const token_type  t)
inlinestatic

return name of values of type token_type (only used for errors)

Definition at line 9710 of file json.hpp.

Member Data Documentation

◆ last_token_type

template<template< typename U, typename V, typename... Args > class ObjectType = std::map, template< typename U, typename... Args > class ArrayType = std::vector, class StringType = std::string, class BooleanType = bool, class NumberIntegerType = std::int64_t, class NumberUnsignedType = std::uint64_t, class NumberFloatType = double, template< typename U > class AllocatorType = std::allocator, template< typename T, typename SFINAE=void > class JSONSerializer = adl_serializer>
token_type nlohmann::basic_json< ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer >::lexer::last_token_type = token_type::end_of_input
private

the last token type

Definition at line 11345 of file json.hpp.

◆ m_content

template<template< typename U, typename V, typename... Args > class ObjectType = std::map, template< typename U, typename... Args > class ArrayType = std::vector, class StringType = std::string, class BooleanType = bool, class NumberIntegerType = std::int64_t, class NumberUnsignedType = std::uint64_t, class NumberFloatType = double, template< typename U > class AllocatorType = std::allocator, template< typename T, typename SFINAE=void > class JSONSerializer = adl_serializer>
const lexer_char_t* nlohmann::basic_json< ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer >::lexer::m_content = nullptr
private

the buffer pointer

Definition at line 11335 of file json.hpp.

◆ m_cursor

template<template< typename U, typename V, typename... Args > class ObjectType = std::map, template< typename U, typename... Args > class ArrayType = std::vector, class StringType = std::string, class BooleanType = bool, class NumberIntegerType = std::int64_t, class NumberUnsignedType = std::uint64_t, class NumberFloatType = double, template< typename U > class AllocatorType = std::allocator, template< typename T, typename SFINAE=void > class JSONSerializer = adl_serializer>
const lexer_char_t* nlohmann::basic_json< ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer >::lexer::m_cursor = nullptr
private

pointer to the current symbol

Definition at line 11341 of file json.hpp.

◆ m_limit

template<template< typename U, typename V, typename... Args > class ObjectType = std::map, template< typename U, typename... Args > class ArrayType = std::vector, class StringType = std::string, class BooleanType = bool, class NumberIntegerType = std::int64_t, class NumberUnsignedType = std::uint64_t, class NumberFloatType = double, template< typename U > class AllocatorType = std::allocator, template< typename T, typename SFINAE=void > class JSONSerializer = adl_serializer>
const lexer_char_t* nlohmann::basic_json< ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer >::lexer::m_limit = nullptr
private

pointer to the end of the buffer

Definition at line 11343 of file json.hpp.

◆ m_line_buffer

template<template< typename U, typename V, typename... Args > class ObjectType = std::map, template< typename U, typename... Args > class ArrayType = std::vector, class StringType = std::string, class BooleanType = bool, class NumberIntegerType = std::int64_t, class NumberUnsignedType = std::uint64_t, class NumberFloatType = double, template< typename U > class AllocatorType = std::allocator, template< typename T, typename SFINAE=void > class JSONSerializer = adl_serializer>
string_t nlohmann::basic_json< ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer >::lexer::m_line_buffer {}
private

line buffer buffer for m_stream

Definition at line 11331 of file json.hpp.

◆ m_line_buffer_tmp

template<template< typename U, typename V, typename... Args > class ObjectType = std::map, template< typename U, typename... Args > class ArrayType = std::vector, class StringType = std::string, class BooleanType = bool, class NumberIntegerType = std::int64_t, class NumberUnsignedType = std::uint64_t, class NumberFloatType = double, template< typename U > class AllocatorType = std::allocator, template< typename T, typename SFINAE=void > class JSONSerializer = adl_serializer>
string_t nlohmann::basic_json< ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer >::lexer::m_line_buffer_tmp {}
private

used for filling m_line_buffer

Definition at line 11333 of file json.hpp.

◆ m_marker

template<template< typename U, typename V, typename... Args > class ObjectType = std::map, template< typename U, typename... Args > class ArrayType = std::vector, class StringType = std::string, class BooleanType = bool, class NumberIntegerType = std::int64_t, class NumberUnsignedType = std::uint64_t, class NumberFloatType = double, template< typename U > class AllocatorType = std::allocator, template< typename T, typename SFINAE=void > class JSONSerializer = adl_serializer>
const lexer_char_t* nlohmann::basic_json< ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer >::lexer::m_marker = nullptr
private

pointer for backtracking information

Definition at line 11339 of file json.hpp.

◆ m_start

template<template< typename U, typename V, typename... Args > class ObjectType = std::map, template< typename U, typename... Args > class ArrayType = std::vector, class StringType = std::string, class BooleanType = bool, class NumberIntegerType = std::int64_t, class NumberUnsignedType = std::uint64_t, class NumberFloatType = double, template< typename U > class AllocatorType = std::allocator, template< typename T, typename SFINAE=void > class JSONSerializer = adl_serializer>
const lexer_char_t* nlohmann::basic_json< ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer >::lexer::m_start = nullptr
private

pointer to the beginning of the current symbol

Definition at line 11337 of file json.hpp.

◆ m_stream

template<template< typename U, typename V, typename... Args > class ObjectType = std::map, template< typename U, typename... Args > class ArrayType = std::vector, class StringType = std::string, class BooleanType = bool, class NumberIntegerType = std::int64_t, class NumberUnsignedType = std::uint64_t, class NumberFloatType = double, template< typename U > class AllocatorType = std::allocator, template< typename T, typename SFINAE=void > class JSONSerializer = adl_serializer>
std::istream* nlohmann::basic_json< ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer >::lexer::m_stream = nullptr
private

optional input stream

Definition at line 11329 of file json.hpp.

Libraries for nlohmann::basic_json< ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer >::lexer:
[legend]

The documentation for this class was generated from the following file: