Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
J
json
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Chen Yisong
json
Commits
6151b056
Unverified
Commit
6151b056
authored
Aug 10, 2017
by
Niels Lohmann
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
🔨
cleanup
parent
a46afd40
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
41 additions
and
210 deletions
+41
-210
json.hpp
src/json.hpp
+41
-210
No files found.
src/json.hpp
View file @
6151b056
...
@@ -463,13 +463,9 @@ inline bool operator<(const value_t lhs, const value_t rhs) noexcept
...
@@ -463,13 +463,9 @@ inline bool operator<(const value_t lhs, const value_t rhs) noexcept
};
};
// discarded values are not comparable
// discarded values are not comparable
if
(
lhs
==
value_t
::
discarded
or
rhs
==
value_t
::
discarded
)
return
lhs
!=
value_t
::
discarded
and
rhs
!=
value_t
::
discarded
and
{
order
[
static_cast
<
std
::
size_t
>
(
lhs
)]
<
order
[
static_cast
<
std
::
size_t
>
(
rhs
)];
return
false
;
}
return
order
[
static_cast
<
std
::
size_t
>
(
lhs
)]
<
order
[
static_cast
<
std
::
size_t
>
(
rhs
)];
}
}
...
@@ -1007,11 +1003,10 @@ void get_arithmetic_value(const BasicJsonType& j, ArithmeticType& val)
...
@@ -1007,11 +1003,10 @@ void get_arithmetic_value(const BasicJsonType& j, ArithmeticType& val)
val
=
static_cast
<
ArithmeticType
>
(
*
j
.
template
get_ptr
<
const
typename
BasicJsonType
::
number_float_t
*>
());
val
=
static_cast
<
ArithmeticType
>
(
*
j
.
template
get_ptr
<
const
typename
BasicJsonType
::
number_float_t
*>
());
break
;
break
;
}
}
default
:
default
:
{
JSON_THROW
(
type_error
::
create
(
302
,
"type must be number, but is "
+
std
::
string
(
j
.
type_name
())));
JSON_THROW
(
type_error
::
create
(
302
,
"type must be number, but is "
+
std
::
string
(
j
.
type_name
())));
}
}
}
}
}
template
<
typename
BasicJsonType
>
template
<
typename
BasicJsonType
>
...
@@ -1198,11 +1193,10 @@ void from_json(const BasicJsonType& j, ArithmeticType& val)
...
@@ -1198,11 +1193,10 @@ void from_json(const BasicJsonType& j, ArithmeticType& val)
val
=
static_cast
<
ArithmeticType
>
(
*
j
.
template
get_ptr
<
const
typename
BasicJsonType
::
boolean_t
*>
());
val
=
static_cast
<
ArithmeticType
>
(
*
j
.
template
get_ptr
<
const
typename
BasicJsonType
::
boolean_t
*>
());
break
;
break
;
}
}
default
:
default
:
{
JSON_THROW
(
type_error
::
create
(
302
,
"type must be number, but is "
+
std
::
string
(
j
.
type_name
())));
JSON_THROW
(
type_error
::
create
(
302
,
"type must be number, but is "
+
std
::
string
(
j
.
type_name
())));
}
}
}
}
}
template
<
typename
BasicJsonType
,
typename
...
Args
>
template
<
typename
BasicJsonType
,
typename
...
Args
>
...
@@ -1629,13 +1623,10 @@ class lexer
...
@@ -1629,13 +1623,10 @@ class lexer
return
"end of input"
;
return
"end of input"
;
case
token_type
:
:
literal_or_value
:
case
token_type
:
:
literal_or_value
:
return
"'[', '{', or a literal"
;
return
"'[', '{', or a literal"
;
default:
default:
// catch non-enum values
{
// catch non-enum values
return
"unknown token"
;
// LCOV_EXCL_LINE
return
"unknown token"
;
// LCOV_EXCL_LINE
}
}
}
}
}
explicit
lexer
(
detail
::
input_adapter_t
adapter
)
explicit
lexer
(
detail
::
input_adapter_t
adapter
)
:
ia
(
adapter
),
decimal_point_char
(
get_decimal_point
())
{}
:
ia
(
adapter
),
decimal_point_char
(
get_decimal_point
())
{}
...
@@ -2339,10 +2330,8 @@ scan_number_zero:
...
@@ -2339,10 +2330,8 @@ scan_number_zero:
}
}
default
:
default
:
{
goto
scan_number_done
;
goto
scan_number_done
;
}
}
}
scan_number_any1
:
scan_number_any1
:
// state: we just parsed a number 0-9 (maybe with a leading minus sign)
// state: we just parsed a number 0-9 (maybe with a leading minus sign)
...
@@ -2377,10 +2366,8 @@ scan_number_any1:
...
@@ -2377,10 +2366,8 @@ scan_number_any1:
}
}
default
:
default
:
{
goto
scan_number_done
;
goto
scan_number_done
;
}
}
}
scan_number_decimal1
:
scan_number_decimal1
:
// state: we just parsed a decimal point
// state: we just parsed a decimal point
...
@@ -2436,10 +2423,8 @@ scan_number_decimal2:
...
@@ -2436,10 +2423,8 @@ scan_number_decimal2:
}
}
default
:
default
:
{
goto
scan_number_done
;
goto
scan_number_done
;
}
}
}
scan_number_exponent
:
scan_number_exponent
:
// we just parsed an exponent
// we just parsed an exponent
...
@@ -2522,10 +2507,8 @@ scan_number_any2:
...
@@ -2522,10 +2507,8 @@ scan_number_any2:
}
}
default
:
default
:
{
goto
scan_number_done
;
goto
scan_number_done
;
}
}
}
scan_number_done
:
scan_number_done
:
// unget the character after the number (we only read it to know that
// unget the character after the number (we only read it to know that
...
@@ -2911,12 +2894,8 @@ class parser
...
@@ -2911,12 +2894,8 @@ class parser
return
false
;
return
false
;
}
}
if
(
strict
and
get_token
()
!=
token_type
::
end_of_input
)
// strict => last token must be EOF
{
return
not
strict
or
(
get_token
()
==
token_type
::
end_of_input
);
return
false
;
}
return
true
;
}
}
private
:
private
:
...
@@ -3156,11 +3135,8 @@ class parser
...
@@ -3156,11 +3135,8 @@ class parser
JSON_THROW
(
out_of_range
::
create
(
406
,
"number overflow parsing '"
+
JSON_THROW
(
out_of_range
::
create
(
406
,
"number overflow parsing '"
+
m_lexer
.
get_token_string
()
+
"'"
));
m_lexer
.
get_token_string
()
+
"'"
));
}
}
else
{
expect
(
token_type
::
uninitialized
);
expect
(
token_type
::
uninitialized
);
}
}
}
break
;
break
;
}
}
...
@@ -3297,17 +3273,12 @@ class parser
...
@@ -3297,17 +3273,12 @@ class parser
case
token_type
:
:
value_integer
:
case
token_type
:
:
value_integer
:
case
token_type
:
:
value_string
:
case
token_type
:
:
value_string
:
case
token_type
:
:
value_unsigned
:
case
token_type
:
:
value_unsigned
:
{
return
true
;
return
true
;
}
default
:
default
:
// the last token was unexpected
{
// the last token was unexpected
return
false
;
return
false
;
}
}
}
}
}
/// get next token from lexer
/// get next token from lexer
token_type
get_token
()
token_type
get_token
()
...
@@ -3740,9 +3711,7 @@ class iter_impl : public std::iterator<std::random_access_iterator_tag, BasicJso
...
@@ -3740,9 +3711,7 @@ class iter_impl : public std::iterator<std::random_access_iterator_tag, BasicJso
}
}
case
value_t
:
:
null
:
case
value_t
:
:
null
:
{
JSON_THROW
(
invalid_iterator
::
create
(
214
,
"cannot get value"
));
JSON_THROW
(
invalid_iterator
::
create
(
214
,
"cannot get value"
));
}
default
:
default
:
{
{
...
@@ -3893,21 +3862,15 @@ class iter_impl : public std::iterator<std::random_access_iterator_tag, BasicJso
...
@@ -3893,21 +3862,15 @@ class iter_impl : public std::iterator<std::random_access_iterator_tag, BasicJso
switch
(
m_object
->
m_type
)
switch
(
m_object
->
m_type
)
{
{
case
value_t
:
:
object
:
case
value_t
:
:
object
:
{
return
(
m_it
.
object_iterator
==
other
.
m_it
.
object_iterator
);
return
(
m_it
.
object_iterator
==
other
.
m_it
.
object_iterator
);
}
case
value_t
:
:
array
:
case
value_t
:
:
array
:
{
return
(
m_it
.
array_iterator
==
other
.
m_it
.
array_iterator
);
return
(
m_it
.
array_iterator
==
other
.
m_it
.
array_iterator
);
}
default
:
default
:
{
return
(
m_it
.
primitive_iterator
==
other
.
m_it
.
primitive_iterator
);
return
(
m_it
.
primitive_iterator
==
other
.
m_it
.
primitive_iterator
);
}
}
}
}
}
/*!
/*!
@brief comparison: not equal
@brief comparison: not equal
...
@@ -3935,21 +3898,15 @@ class iter_impl : public std::iterator<std::random_access_iterator_tag, BasicJso
...
@@ -3935,21 +3898,15 @@ class iter_impl : public std::iterator<std::random_access_iterator_tag, BasicJso
switch
(
m_object
->
m_type
)
switch
(
m_object
->
m_type
)
{
{
case
value_t
:
:
object
:
case
value_t
:
:
object
:
{
JSON_THROW
(
invalid_iterator
::
create
(
213
,
"cannot compare order of object iterators"
));
JSON_THROW
(
invalid_iterator
::
create
(
213
,
"cannot compare order of object iterators"
));
}
case
value_t
:
:
array
:
case
value_t
:
:
array
:
{
return
(
m_it
.
array_iterator
<
other
.
m_it
.
array_iterator
);
return
(
m_it
.
array_iterator
<
other
.
m_it
.
array_iterator
);
}
default
:
default
:
{
return
(
m_it
.
primitive_iterator
<
other
.
m_it
.
primitive_iterator
);
return
(
m_it
.
primitive_iterator
<
other
.
m_it
.
primitive_iterator
);
}
}
}
}
}
/*!
/*!
@brief comparison: less than or equal
@brief comparison: less than or equal
...
@@ -3989,9 +3946,7 @@ class iter_impl : public std::iterator<std::random_access_iterator_tag, BasicJso
...
@@ -3989,9 +3946,7 @@ class iter_impl : public std::iterator<std::random_access_iterator_tag, BasicJso
switch
(
m_object
->
m_type
)
switch
(
m_object
->
m_type
)
{
{
case
value_t
:
:
object
:
case
value_t
:
:
object
:
{
JSON_THROW
(
invalid_iterator
::
create
(
209
,
"cannot use offsets with object iterators"
));
JSON_THROW
(
invalid_iterator
::
create
(
209
,
"cannot use offsets with object iterators"
));
}
case
value_t
:
:
array
:
case
value_t
:
:
array
:
{
{
...
@@ -4062,21 +4017,15 @@ class iter_impl : public std::iterator<std::random_access_iterator_tag, BasicJso
...
@@ -4062,21 +4017,15 @@ class iter_impl : public std::iterator<std::random_access_iterator_tag, BasicJso
switch
(
m_object
->
m_type
)
switch
(
m_object
->
m_type
)
{
{
case
value_t
:
:
object
:
case
value_t
:
:
object
:
{
JSON_THROW
(
invalid_iterator
::
create
(
209
,
"cannot use offsets with object iterators"
));
JSON_THROW
(
invalid_iterator
::
create
(
209
,
"cannot use offsets with object iterators"
));
}
case
value_t
:
:
array
:
case
value_t
:
:
array
:
{
return
m_it
.
array_iterator
-
other
.
m_it
.
array_iterator
;
return
m_it
.
array_iterator
-
other
.
m_it
.
array_iterator
;
}
default
:
default
:
{
return
m_it
.
primitive_iterator
-
other
.
m_it
.
primitive_iterator
;
return
m_it
.
primitive_iterator
-
other
.
m_it
.
primitive_iterator
;
}
}
}
}
}
/*!
/*!
@brief access to successor
@brief access to successor
...
@@ -4089,19 +4038,13 @@ class iter_impl : public std::iterator<std::random_access_iterator_tag, BasicJso
...
@@ -4089,19 +4038,13 @@ class iter_impl : public std::iterator<std::random_access_iterator_tag, BasicJso
switch
(
m_object
->
m_type
)
switch
(
m_object
->
m_type
)
{
{
case
value_t
:
:
object
:
case
value_t
:
:
object
:
{
JSON_THROW
(
invalid_iterator
::
create
(
208
,
"cannot use operator[] for object iterators"
));
JSON_THROW
(
invalid_iterator
::
create
(
208
,
"cannot use operator[] for object iterators"
));
}
case
value_t
:
:
array
:
case
value_t
:
:
array
:
{
return
*
std
::
next
(
m_it
.
array_iterator
,
n
);
return
*
std
::
next
(
m_it
.
array_iterator
,
n
);
}
case
value_t
:
:
null
:
case
value_t
:
:
null
:
{
JSON_THROW
(
invalid_iterator
::
create
(
214
,
"cannot get value"
));
JSON_THROW
(
invalid_iterator
::
create
(
214
,
"cannot get value"
));
}
default
:
default
:
{
{
...
@@ -4193,23 +4136,17 @@ template<typename IteratorType> class iteration_proxy
...
@@ -4193,23 +4136,17 @@ template<typename IteratorType> class iteration_proxy
{
{
// use integer array index as key
// use integer array index as key
case
value_t
:
:
array
:
case
value_t
:
:
array
:
{
return
std
::
to_string
(
array_index
);
return
std
::
to_string
(
array_index
);
}
// use key from the object
// use key from the object
case
value_t
:
:
object
:
case
value_t
:
:
object
:
{
return
anchor
.
key
();
return
anchor
.
key
();
}
// use an empty key for all primitive types
// use an empty key for all primitive types
default
:
default
:
{
return
""
;
return
""
;
}
}
}
}
}
/// return value of the iterator
/// return value of the iterator
typename
IteratorType
::
reference
value
()
const
typename
IteratorType
::
reference
value
()
const
...
@@ -4486,9 +4423,7 @@ class binary_reader
...
@@ -4486,9 +4423,7 @@ class binary_reader
{
{
// EOF
// EOF
case
std
:
:
char_traits
<
char
>::
eof
()
:
case
std
:
:
char_traits
<
char
>::
eof
()
:
{
JSON_THROW
(
parse_error
::
create
(
110
,
chars_read
,
"unexpected end of input"
));
JSON_THROW
(
parse_error
::
create
(
110
,
chars_read
,
"unexpected end of input"
));
}
// Integer 0x00..0x17 (0..23)
// Integer 0x00..0x17 (0..23)
case
0x00
:
case
0x00
:
...
@@ -4515,29 +4450,19 @@ class binary_reader
...
@@ -4515,29 +4450,19 @@ class binary_reader
case
0x15
:
case
0x15
:
case
0x16
:
case
0x16
:
case
0x17
:
case
0x17
:
{
return
static_cast
<
number_unsigned_t
>
(
current
);
return
static_cast
<
number_unsigned_t
>
(
current
);
}
case
0x18
:
// Unsigned integer (one-byte uint8_t follows)
case
0x18
:
// Unsigned integer (one-byte uint8_t follows)
{
return
get_number
<
uint8_t
>
();
return
get_number
<
uint8_t
>
();
}
case
0x19
:
// Unsigned integer (two-byte uint16_t follows)
case
0x19
:
// Unsigned integer (two-byte uint16_t follows)
{
return
get_number
<
uint16_t
>
();
return
get_number
<
uint16_t
>
();
}
case
0x1a
:
// Unsigned integer (four-byte uint32_t follows)
case
0x1a
:
// Unsigned integer (four-byte uint32_t follows)
{
return
get_number
<
uint32_t
>
();
return
get_number
<
uint32_t
>
();
}
case
0x1b
:
// Unsigned integer (eight-byte uint64_t follows)
case
0x1b
:
// Unsigned integer (eight-byte uint64_t follows)
{
return
get_number
<
uint64_t
>
();
return
get_number
<
uint64_t
>
();
}
// Negative integer -1-0x00..-1-0x17 (-1..-24)
// Negative integer -1-0x00..-1-0x17 (-1..-24)
case
0x20
:
case
0x20
:
...
@@ -4564,9 +4489,7 @@ class binary_reader
...
@@ -4564,9 +4489,7 @@ class binary_reader
case
0x35
:
case
0x35
:
case
0x36
:
case
0x36
:
case
0x37
:
case
0x37
:
{
return
static_cast
<
int8_t
>
(
0x20
-
1
-
current
);
return
static_cast
<
int8_t
>
(
0x20
-
1
-
current
);
}
case
0x38
:
// Negative integer (one-byte uint8_t follows)
case
0x38
:
// Negative integer (one-byte uint8_t follows)
{
{
...
@@ -4896,9 +4819,7 @@ class binary_reader
...
@@ -4896,9 +4819,7 @@ class binary_reader
{
{
// EOF
// EOF
case
std
:
:
char_traits
<
char
>::
eof
()
:
case
std
:
:
char_traits
<
char
>::
eof
()
:
{
JSON_THROW
(
parse_error
::
create
(
110
,
chars_read
,
"unexpected end of input"
));
JSON_THROW
(
parse_error
::
create
(
110
,
chars_read
,
"unexpected end of input"
));
}
// positive fixint
// positive fixint
case
0x00
:
case
0x00
:
...
@@ -5029,9 +4950,7 @@ class binary_reader
...
@@ -5029,9 +4950,7 @@ class binary_reader
case
0x7d
:
case
0x7d
:
case
0x7e
:
case
0x7e
:
case
0x7f
:
case
0x7f
:
{
return
static_cast
<
number_unsigned_t
>
(
current
);
return
static_cast
<
number_unsigned_t
>
(
current
);
}
// fixmap
// fixmap
case
0x80
:
case
0x80
:
...
@@ -5122,81 +5041,51 @@ class binary_reader
...
@@ -5122,81 +5041,51 @@ class binary_reader
case
0xbd
:
case
0xbd
:
case
0xbe
:
case
0xbe
:
case
0xbf
:
case
0xbf
:
{
return
get_msgpack_string
();
return
get_msgpack_string
();
}
case
0xc0
:
// nil
case
0xc0
:
// nil
{
return
value_t
::
null
;
return
value_t
::
null
;
}
case
0xc2
:
// false
case
0xc2
:
// false
{
return
false
;
return
false
;
}
case
0xc3
:
// true
case
0xc3
:
// true
{
return
true
;
return
true
;
}
case
0xca
:
// float 32
case
0xca
:
// float 32
{
return
get_number
<
float
>
();
return
get_number
<
float
>
();
}
case
0xcb
:
// float 64
case
0xcb
:
// float 64
{
return
get_number
<
double
>
();
return
get_number
<
double
>
();
}
case
0xcc
:
// uint 8
case
0xcc
:
// uint 8
{
return
get_number
<
uint8_t
>
();
return
get_number
<
uint8_t
>
();
}
case
0xcd
:
// uint 16
case
0xcd
:
// uint 16
{
return
get_number
<
uint16_t
>
();
return
get_number
<
uint16_t
>
();
}
case
0xce
:
// uint 32
case
0xce
:
// uint 32
{
return
get_number
<
uint32_t
>
();
return
get_number
<
uint32_t
>
();
}
case
0xcf
:
// uint 64
case
0xcf
:
// uint 64
{
return
get_number
<
uint64_t
>
();
return
get_number
<
uint64_t
>
();
}
case
0xd0
:
// int 8
case
0xd0
:
// int 8
{
return
get_number
<
int8_t
>
();
return
get_number
<
int8_t
>
();
}
case
0xd1
:
// int 16
case
0xd1
:
// int 16
{
return
get_number
<
int16_t
>
();
return
get_number
<
int16_t
>
();
}
case
0xd2
:
// int 32
case
0xd2
:
// int 32
{
return
get_number
<
int32_t
>
();
return
get_number
<
int32_t
>
();
}
case
0xd3
:
// int 64
case
0xd3
:
// int 64
{
return
get_number
<
int64_t
>
();
return
get_number
<
int64_t
>
();
}
case
0xd9
:
// str 8
case
0xd9
:
// str 8
case
0xda
:
// str 16
case
0xda
:
// str 16
case
0xdb
:
// str 32
case
0xdb
:
// str 32
{
return
get_msgpack_string
();
return
get_msgpack_string
();
}
case
0xdc
:
// array 16
case
0xdc
:
// array 16
{
{
...
@@ -5279,9 +5168,7 @@ class binary_reader
...
@@ -5279,9 +5168,7 @@ class binary_reader
case
0xfd
:
case
0xfd
:
case
0xfe
:
case
0xfe
:
case
0xff
:
case
0xff
:
{
return
static_cast
<
int8_t
>
(
current
);
return
static_cast
<
int8_t
>
(
current
);
}
default
:
// anything else
default
:
// anything else
{
{
...
@@ -5718,9 +5605,8 @@ class binary_writer
...
@@ -5718,9 +5605,8 @@ class binary_writer
break
;
break
;
}
}
case
value_t
:
:
number_float
:
case
value_t
:
:
number_float
:
// Double-Precision Float
{
{
// Double-Precision Float
oa
->
write_character
(
static_cast
<
CharType
>
(
0xfb
));
oa
->
write_character
(
static_cast
<
CharType
>
(
0xfb
));
write_number
(
j
.
m_value
.
number_float
);
write_number
(
j
.
m_value
.
number_float
);
break
;
break
;
...
@@ -5844,11 +5730,9 @@ class binary_writer
...
@@ -5844,11 +5730,9 @@ class binary_writer
}
}
default
:
default
:
{
break
;
break
;
}
}
}
}
}
/*!
/*!
@brief[in] j JSON value to serialize
@brief[in] j JSON value to serialize
...
@@ -5857,16 +5741,14 @@ class binary_writer
...
@@ -5857,16 +5741,14 @@ class binary_writer
{
{
switch
(
j
.
type
())
switch
(
j
.
type
())
{
{
case
value_t
:
:
null
:
case
value_t
:
:
null
:
// nil
{
{
// nil
oa
->
write_character
(
static_cast
<
CharType
>
(
0xc0
));
oa
->
write_character
(
static_cast
<
CharType
>
(
0xc0
));
break
;
break
;
}
}
case
value_t
:
:
boolean
:
case
value_t
:
:
boolean
:
// true and false
{
{
// true and false
oa
->
write_character
(
j
.
m_value
.
boolean
oa
->
write_character
(
j
.
m_value
.
boolean
?
static_cast
<
CharType
>
(
0xc3
)
?
static_cast
<
CharType
>
(
0xc3
)
:
static_cast
<
CharType
>
(
0xc2
));
:
static_cast
<
CharType
>
(
0xc2
));
...
@@ -5983,9 +5865,8 @@ class binary_writer
...
@@ -5983,9 +5865,8 @@ class binary_writer
break
;
break
;
}
}
case
value_t
:
:
number_float
:
case
value_t
:
:
number_float
:
// float 64
{
{
// float 64
oa
->
write_character
(
static_cast
<
CharType
>
(
0xcb
));
oa
->
write_character
(
static_cast
<
CharType
>
(
0xcb
));
write_number
(
j
.
m_value
.
number_float
);
write_number
(
j
.
m_value
.
number_float
);
break
;
break
;
...
@@ -6088,11 +5969,9 @@ class binary_writer
...
@@ -6088,11 +5969,9 @@ class binary_writer
}
}
default
:
default
:
{
break
;
break
;
}
}
}
}
}
private
:
private
:
/*
/*
...
@@ -6481,7 +6360,7 @@ class serializer
...
@@ -6481,7 +6360,7 @@ class serializer
return
res
;
return
res
;
}
}
static
void
escape_codepoint
(
int
codepoint
,
string_t
&
result
,
size_t
&
pos
)
static
void
escape_codepoint
(
int
codepoint
,
string_t
&
result
,
s
td
::
s
ize_t
&
pos
)
{
{
// expecting a proper codepoint
// expecting a proper codepoint
assert
(
0x00
<=
codepoint
and
codepoint
<=
0x10FFFF
);
assert
(
0x00
<=
codepoint
and
codepoint
<=
0x10FFFF
);
...
@@ -6563,56 +6442,49 @@ class serializer
...
@@ -6563,56 +6442,49 @@ class serializer
{
{
switch
(
s
[
i
])
switch
(
s
[
i
])
{
{
// quotation mark (0x22)
case
'"'
:
// quotation mark (0x22)
case
'"'
:
{
{
result
[
pos
+
1
]
=
'"'
;
result
[
pos
+
1
]
=
'"'
;
pos
+=
2
;
pos
+=
2
;
break
;
break
;
}
}
// reverse solidus (0x5c)
case
'\\'
:
// reverse solidus (0x5c)
case
'\\'
:
{
{
// nothing to change
// nothing to change
pos
+=
2
;
pos
+=
2
;
break
;
break
;
}
}
// backspace (0x08)
case
'\b'
:
// backspace (0x08)
case
'\b'
:
{
{
result
[
pos
+
1
]
=
'b'
;
result
[
pos
+
1
]
=
'b'
;
pos
+=
2
;
pos
+=
2
;
break
;
break
;
}
}
// formfeed (0x0c)
case
'\f'
:
// formfeed (0x0c)
case
'\f'
:
{
{
result
[
pos
+
1
]
=
'f'
;
result
[
pos
+
1
]
=
'f'
;
pos
+=
2
;
pos
+=
2
;
break
;
break
;
}
}
// newline (0x0a)
case
'\n'
:
// newline (0x0a)
case
'\n'
:
{
{
result
[
pos
+
1
]
=
'n'
;
result
[
pos
+
1
]
=
'n'
;
pos
+=
2
;
pos
+=
2
;
break
;
break
;
}
}
// carriage return (0x0d)
case
'\r'
:
// carriage return (0x0d)
case
'\r'
:
{
{
result
[
pos
+
1
]
=
'r'
;
result
[
pos
+
1
]
=
'r'
;
pos
+=
2
;
pos
+=
2
;
break
;
break
;
}
}
// horizontal tab (0x09)
case
'\t'
:
// horizontal tab (0x09)
case
'\t'
:
{
{
result
[
pos
+
1
]
=
't'
;
result
[
pos
+
1
]
=
't'
;
pos
+=
2
;
pos
+=
2
;
...
@@ -6780,7 +6652,7 @@ class serializer
...
@@ -6780,7 +6652,7 @@ class serializer
// negative value indicates an error
// negative value indicates an error
assert
(
len
>
0
);
assert
(
len
>
0
);
// check if buffer was large enough
// check if buffer was large enough
assert
(
static_cast
<
size_t
>
(
len
)
<
number_buffer
.
size
());
assert
(
static_cast
<
s
td
::
s
ize_t
>
(
len
)
<
number_buffer
.
size
());
// erase thousands separator
// erase thousands separator
if
(
thousands_sep
!=
'\0'
)
if
(
thousands_sep
!=
'\0'
)
...
@@ -6805,7 +6677,7 @@ class serializer
...
@@ -6805,7 +6677,7 @@ class serializer
}
}
}
}
o
->
write_characters
(
number_buffer
.
data
(),
static_cast
<
size_t
>
(
len
));
o
->
write_characters
(
number_buffer
.
data
(),
static_cast
<
s
td
::
s
ize_t
>
(
len
));
// determine if need to append ".0"
// determine if need to append ".0"
const
bool
value_is_int_like
=
const
bool
value_is_int_like
=
...
@@ -8710,10 +8582,8 @@ class basic_json
...
@@ -8710,10 +8582,8 @@ class basic_json
}
}
default
:
default
:
{
break
;
break
;
}
}
}
switch
(
m_type
)
switch
(
m_type
)
{
{
...
@@ -8762,11 +8632,9 @@ class basic_json
...
@@ -8762,11 +8632,9 @@ class basic_json
}
}
default
:
default
:
{
JSON_THROW
(
invalid_iterator
::
create
(
206
,
"cannot construct with iterators from "
+
JSON_THROW
(
invalid_iterator
::
create
(
206
,
"cannot construct with iterators from "
+
std
::
string
(
first
.
m_object
->
type_name
())));
std
::
string
(
first
.
m_object
->
type_name
())));
}
}
}
assert_invariant
();
assert_invariant
();
}
}
...
@@ -8851,10 +8719,8 @@ class basic_json
...
@@ -8851,10 +8719,8 @@ class basic_json
}
}
default
:
default
:
{
break
;
break
;
}
}
}
assert_invariant
();
assert_invariant
();
}
}
...
@@ -10648,10 +10514,8 @@ class basic_json
...
@@ -10648,10 +10514,8 @@ class basic_json
}
}
default
:
default
:
{
JSON_THROW
(
type_error
::
create
(
307
,
"cannot use erase() with "
+
std
::
string
(
type_name
())));
JSON_THROW
(
type_error
::
create
(
307
,
"cannot use erase() with "
+
std
::
string
(
type_name
())));
}
}
}
return
result
;
return
result
;
}
}
...
@@ -10758,10 +10622,8 @@ class basic_json
...
@@ -10758,10 +10622,8 @@ class basic_json
}
}
default
:
default
:
{
JSON_THROW
(
type_error
::
create
(
307
,
"cannot use erase() with "
+
std
::
string
(
type_name
())));
JSON_THROW
(
type_error
::
create
(
307
,
"cannot use erase() with "
+
std
::
string
(
type_name
())));
}
}
}
return
result
;
return
result
;
}
}
...
@@ -11529,11 +11391,9 @@ class basic_json
...
@@ -11529,11 +11391,9 @@ class basic_json
}
}
default
:
default
:
{
break
;
break
;
}
}
}
}
}
/*!
/*!
@brief add an object to an array
@brief add an object to an array
...
@@ -12238,43 +12098,33 @@ class basic_json
...
@@ -12238,43 +12098,33 @@ class basic_json
switch
(
lhs_type
)
switch
(
lhs_type
)
{
{
case
value_t
:
:
array
:
case
value_t
:
:
array
:
{
return
(
*
lhs
.
m_value
.
array
==
*
rhs
.
m_value
.
array
);
return
(
*
lhs
.
m_value
.
array
==
*
rhs
.
m_value
.
array
);
}
case
value_t
:
:
object
:
case
value_t
:
:
object
:
{
return
(
*
lhs
.
m_value
.
object
==
*
rhs
.
m_value
.
object
);
return
(
*
lhs
.
m_value
.
object
==
*
rhs
.
m_value
.
object
);
}
case
value_t
:
:
null
:
case
value_t
:
:
null
:
{
return
true
;
return
true
;
}
case
value_t
:
:
string
:
case
value_t
:
:
string
:
{
return
(
*
lhs
.
m_value
.
string
==
*
rhs
.
m_value
.
string
);
return
(
*
lhs
.
m_value
.
string
==
*
rhs
.
m_value
.
string
);
}
case
value_t
:
:
boolean
:
case
value_t
:
:
boolean
:
{
return
(
lhs
.
m_value
.
boolean
==
rhs
.
m_value
.
boolean
);
return
(
lhs
.
m_value
.
boolean
==
rhs
.
m_value
.
boolean
);
}
case
value_t
:
:
number_integer
:
case
value_t
:
:
number_integer
:
{
return
(
lhs
.
m_value
.
number_integer
==
rhs
.
m_value
.
number_integer
);
return
(
lhs
.
m_value
.
number_integer
==
rhs
.
m_value
.
number_integer
);
}
case
value_t
:
:
number_unsigned
:
case
value_t
:
:
number_unsigned
:
{
return
(
lhs
.
m_value
.
number_unsigned
==
rhs
.
m_value
.
number_unsigned
);
return
(
lhs
.
m_value
.
number_unsigned
==
rhs
.
m_value
.
number_unsigned
);
}
case
value_t
:
:
number_float
:
case
value_t
:
:
number_float
:
{
return
(
lhs
.
m_value
.
number_float
==
rhs
.
m_value
.
number_float
);
return
(
lhs
.
m_value
.
number_float
==
rhs
.
m_value
.
number_float
);
}
default
:
default
:
{
return
false
;
return
false
;
}
}
}
}
}
else
if
(
lhs_type
==
value_t
::
number_integer
and
rhs_type
==
value_t
::
number_float
)
else
if
(
lhs_type
==
value_t
::
number_integer
and
rhs_type
==
value_t
::
number_float
)
{
{
return
(
static_cast
<
number_float_t
>
(
lhs
.
m_value
.
number_integer
)
==
rhs
.
m_value
.
number_float
);
return
(
static_cast
<
number_float_t
>
(
lhs
.
m_value
.
number_integer
)
==
rhs
.
m_value
.
number_float
);
...
@@ -12402,43 +12252,33 @@ class basic_json
...
@@ -12402,43 +12252,33 @@ class basic_json
switch
(
lhs_type
)
switch
(
lhs_type
)
{
{
case
value_t
:
:
array
:
case
value_t
:
:
array
:
{
return
(
*
lhs
.
m_value
.
array
)
<
(
*
rhs
.
m_value
.
array
);
return
(
*
lhs
.
m_value
.
array
)
<
(
*
rhs
.
m_value
.
array
);
}
case
value_t
:
:
object
:
case
value_t
:
:
object
:
{
return
*
lhs
.
m_value
.
object
<
*
rhs
.
m_value
.
object
;
return
*
lhs
.
m_value
.
object
<
*
rhs
.
m_value
.
object
;
}
case
value_t
:
:
null
:
case
value_t
:
:
null
:
{
return
false
;
return
false
;
}
case
value_t
:
:
string
:
case
value_t
:
:
string
:
{
return
*
lhs
.
m_value
.
string
<
*
rhs
.
m_value
.
string
;
return
*
lhs
.
m_value
.
string
<
*
rhs
.
m_value
.
string
;
}
case
value_t
:
:
boolean
:
case
value_t
:
:
boolean
:
{
return
lhs
.
m_value
.
boolean
<
rhs
.
m_value
.
boolean
;
return
lhs
.
m_value
.
boolean
<
rhs
.
m_value
.
boolean
;
}
case
value_t
:
:
number_integer
:
case
value_t
:
:
number_integer
:
{
return
lhs
.
m_value
.
number_integer
<
rhs
.
m_value
.
number_integer
;
return
lhs
.
m_value
.
number_integer
<
rhs
.
m_value
.
number_integer
;
}
case
value_t
:
:
number_unsigned
:
case
value_t
:
:
number_unsigned
:
{
return
lhs
.
m_value
.
number_unsigned
<
rhs
.
m_value
.
number_unsigned
;
return
lhs
.
m_value
.
number_unsigned
<
rhs
.
m_value
.
number_unsigned
;
}
case
value_t
:
:
number_float
:
case
value_t
:
:
number_float
:
{
return
lhs
.
m_value
.
number_float
<
rhs
.
m_value
.
number_float
;
return
lhs
.
m_value
.
number_float
<
rhs
.
m_value
.
number_float
;
}
default
:
default
:
{
return
false
;
return
false
;
}
}
}
}
}
else
if
(
lhs_type
==
value_t
::
number_integer
and
rhs_type
==
value_t
::
number_float
)
else
if
(
lhs_type
==
value_t
::
number_integer
and
rhs_type
==
value_t
::
number_float
)
{
{
return
static_cast
<
number_float_t
>
(
lhs
.
m_value
.
number_integer
)
<
rhs
.
m_value
.
number_float
;
return
static_cast
<
number_float_t
>
(
lhs
.
m_value
.
number_integer
)
<
rhs
.
m_value
.
number_float
;
...
@@ -14105,11 +13945,9 @@ json_pointer::get_and_create(NLOHMANN_BASIC_JSON_TPL& j) const
...
@@ -14105,11 +13945,9 @@ json_pointer::get_and_create(NLOHMANN_BASIC_JSON_TPL& j) const
single value; that is, with an empty list of reference tokens.
single value; that is, with an empty list of reference tokens.
*/
*/
default
:
default
:
{
JSON_THROW
(
detail
::
type_error
::
create
(
313
,
"invalid value to unflatten"
));
JSON_THROW
(
detail
::
type_error
::
create
(
313
,
"invalid value to unflatten"
));
}
}
}
}
}
return
*
result
;
return
*
result
;
}
}
...
@@ -14179,11 +14017,9 @@ json_pointer::get_unchecked(NLOHMANN_BASIC_JSON_TPL* ptr) const
...
@@ -14179,11 +14017,9 @@ json_pointer::get_unchecked(NLOHMANN_BASIC_JSON_TPL* ptr) const
}
}
default
:
default
:
{
JSON_THROW
(
detail
::
out_of_range
::
create
(
404
,
"unresolved reference token '"
+
reference_token
+
"'"
));
JSON_THROW
(
detail
::
out_of_range
::
create
(
404
,
"unresolved reference token '"
+
reference_token
+
"'"
));
}
}
}
}
}
return
*
ptr
;
return
*
ptr
;
}
}
...
@@ -14235,11 +14071,9 @@ json_pointer::get_checked(NLOHMANN_BASIC_JSON_TPL* ptr) const
...
@@ -14235,11 +14071,9 @@ json_pointer::get_checked(NLOHMANN_BASIC_JSON_TPL* ptr) const
}
}
default
:
default
:
{
JSON_THROW
(
detail
::
out_of_range
::
create
(
404
,
"unresolved reference token '"
+
reference_token
+
"'"
));
JSON_THROW
(
detail
::
out_of_range
::
create
(
404
,
"unresolved reference token '"
+
reference_token
+
"'"
));
}
}
}
}
}
return
*
ptr
;
return
*
ptr
;
}
}
...
@@ -14292,11 +14126,9 @@ json_pointer::get_unchecked(const NLOHMANN_BASIC_JSON_TPL* ptr) const
...
@@ -14292,11 +14126,9 @@ json_pointer::get_unchecked(const NLOHMANN_BASIC_JSON_TPL* ptr) const
}
}
default
:
default
:
{
JSON_THROW
(
detail
::
out_of_range
::
create
(
404
,
"unresolved reference token '"
+
reference_token
+
"'"
));
JSON_THROW
(
detail
::
out_of_range
::
create
(
404
,
"unresolved reference token '"
+
reference_token
+
"'"
));
}
}
}
}
}
return
*
ptr
;
return
*
ptr
;
}
}
...
@@ -14348,11 +14180,9 @@ json_pointer::get_checked(const NLOHMANN_BASIC_JSON_TPL* ptr) const
...
@@ -14348,11 +14180,9 @@ json_pointer::get_checked(const NLOHMANN_BASIC_JSON_TPL* ptr) const
}
}
default
:
default
:
{
JSON_THROW
(
detail
::
out_of_range
::
create
(
404
,
"unresolved reference token '"
+
reference_token
+
"'"
));
JSON_THROW
(
detail
::
out_of_range
::
create
(
404
,
"unresolved reference token '"
+
reference_token
+
"'"
));
}
}
}
}
}
return
*
ptr
;
return
*
ptr
;
}
}
...
@@ -14491,9 +14321,10 @@ struct hash<nlohmann::json>
...
@@ -14491,9 +14321,10 @@ struct hash<nlohmann::json>
};
};
/// specialization for std::less<value_t>
/// specialization for std::less<value_t>
/// @note: do not remove the space after '<',
/// see https://github.com/nlohmann/json/pull/679
template
<>
template
<>
struct
less
<
::
nlohmann
::
detail
::
value_t
>
// do not remove the space after '<',
struct
less
<
::
nlohmann
::
detail
::
value_t
>
// see https://github.com/nlohmann/json/pull/679
{
{
/*!
/*!
@brief compare two value_t enum values
@brief compare two value_t enum values
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment