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
3a80823f
Unverified
Commit
3a80823f
authored
Jul 11, 2020
by
Niels Lohmann
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
🔀
merge develop branch and resolve conflicts
parent
9c212851
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
89 additions
and
3 deletions
+89
-3
ordered_map.hpp
include/nlohmann/ordered_map.hpp
+1
-1
json.hpp
single_include/nlohmann/json.hpp
+88
-2
No files found.
include/nlohmann/ordered_map.hpp
View file @
3a80823f
...
@@ -12,7 +12,7 @@ namespace nlohmann
...
@@ -12,7 +12,7 @@ namespace nlohmann
/// for use within nlohmann::basic_json<ordered_map>
/// for use within nlohmann::basic_json<ordered_map>
template
<
class
Key
,
class
T
,
class
IgnoredLess
=
std
::
less
<
Key
>
,
template
<
class
Key
,
class
T
,
class
IgnoredLess
=
std
::
less
<
Key
>
,
class
Allocator
=
std
::
allocator
<
std
::
pair
<
const
Key
,
T
>>>
class
Allocator
=
std
::
allocator
<
std
::
pair
<
const
Key
,
T
>>>
struct
ordered_map
:
std
::
vector
<
std
::
pair
<
const
Key
,
T
>
,
Allocator
>
struct
ordered_map
:
std
::
vector
<
std
::
pair
<
const
Key
,
T
>
,
Allocator
>
{
{
using
key_type
=
Key
;
using
key_type
=
Key
;
using
mapped_type
=
T
;
using
mapped_type
=
T
;
...
...
single_include/nlohmann/json.hpp
View file @
3a80823f
...
@@ -2822,6 +2822,19 @@ uses the standard template types.
...
@@ -2822,6 +2822,19 @@ uses the standard template types.
@since version 1.0.0
@since version 1.0.0
*/
*/
using
json
=
basic_json
<>
;
using
json
=
basic_json
<>
;
template
<
class
Key
,
class
T
,
class
IgnoredLess
,
class
Allocator
>
struct
ordered_map
;
/*!
@brief ordered JSON class
This type preserves the insertion order of object keys.
@since version 3.9.0
*/
using
ordered_json
=
basic_json
<
nlohmann
::
ordered_map
>
;
}
// namespace nlohmann
}
// namespace nlohmann
#endif // INCLUDE_NLOHMANN_JSON_FWD_HPP_
#endif // INCLUDE_NLOHMANN_JSON_FWD_HPP_
...
@@ -16000,6 +16013,79 @@ class serializer
...
@@ -16000,6 +16013,79 @@ class serializer
// #include <nlohmann/json_fwd.hpp>
// #include <nlohmann/json_fwd.hpp>
// #include <nlohmann/ordered_map.hpp>
#include <functional> // less
#include <memory> // allocator
#include <utility> // pair
#include <vector> // vector
namespace
nlohmann
{
/// ordered_map: a minimal map-like container that preserves insertion order
/// for use within nlohmann::basic_json<ordered_map>
template
<
class
Key
,
class
T
,
class
IgnoredLess
=
std
::
less
<
Key
>
,
class
Allocator
=
std
::
allocator
<
std
::
pair
<
const
Key
,
T
>>>
struct
ordered_map
:
std
::
vector
<
std
::
pair
<
const
Key
,
T
>
,
Allocator
>
{
using
key_type
=
Key
;
using
mapped_type
=
T
;
using
Container
=
std
::
vector
<
std
::
pair
<
const
Key
,
T
>
,
Allocator
>
;
using
typename
Container
::
iterator
;
using
typename
Container
::
size_type
;
using
typename
Container
::
value_type
;
// Explicit constructors instead of `using Container::Container`
// otherwise older compilers choke on it (GCC <= 5.5, xcode <= 9.4)
ordered_map
(
const
Allocator
&
alloc
=
Allocator
())
:
Container
{
alloc
}
{}
template
<
class
It
>
ordered_map
(
It
first
,
It
last
,
const
Allocator
&
alloc
=
Allocator
())
:
Container
{
first
,
last
,
alloc
}
{}
ordered_map
(
std
::
initializer_list
<
T
>
init
,
const
Allocator
&
alloc
=
Allocator
()
)
:
Container
{
init
,
alloc
}
{}
std
::
pair
<
iterator
,
bool
>
emplace
(
key_type
&&
key
,
T
&&
t
)
{
for
(
auto
it
=
this
->
begin
();
it
!=
this
->
end
();
++
it
)
{
if
(
it
->
first
==
key
)
{
return
{
it
,
false
};
}
}
Container
::
emplace_back
(
key
,
t
);
return
{
--
this
->
end
(),
true
};
}
T
&
operator
[](
Key
&&
key
)
{
return
emplace
(
std
::
move
(
key
),
T
{}).
first
->
second
;
}
size_type
erase
(
const
Key
&
key
)
{
for
(
auto
it
=
this
->
begin
();
it
!=
this
->
end
();
++
it
)
{
if
(
it
->
first
==
key
)
{
// Since we cannot move const Keys, re-construct them in place
for
(
auto
next
=
it
;
++
next
!=
this
->
end
();
++
it
)
{
it
->~
value_type
();
// Destroy but keep allocation
new
(
&*
it
)
value_type
{
std
::
move
(
*
next
)};
}
Container
::
pop_back
();
return
1
;
}
}
return
0
;
}
};
}
// namespace nlohmann
/*!
/*!
@brief namespace for Niels Lohmann
@brief namespace for Niels Lohmann
...
@@ -16126,7 +16212,7 @@ class basic_json
...
@@ -16126,7 +16212,7 @@ class basic_json
detail
::
parser_callback_t
<
basic_json
>
cb
=
nullptr
,
detail
::
parser_callback_t
<
basic_json
>
cb
=
nullptr
,
const
bool
allow_exceptions
=
true
,
const
bool
allow_exceptions
=
true
,
const
bool
ignore_comments
=
false
const
bool
ignore_comments
=
false
)
)
{
{
return
::
nlohmann
::
detail
::
parser
<
basic_json
,
InputAdapterType
>
(
std
::
move
(
adapter
),
return
::
nlohmann
::
detail
::
parser
<
basic_json
,
InputAdapterType
>
(
std
::
move
(
adapter
),
std
::
move
(
cb
),
allow_exceptions
,
ignore_comments
);
std
::
move
(
cb
),
allow_exceptions
,
ignore_comments
);
...
@@ -24662,7 +24748,7 @@ template<>
...
@@ -24662,7 +24748,7 @@ template<>
inline
void
swap
<
nlohmann
::
json
>
(
nlohmann
::
json
&
j1
,
nlohmann
::
json
&
j2
)
noexcept
(
inline
void
swap
<
nlohmann
::
json
>
(
nlohmann
::
json
&
j1
,
nlohmann
::
json
&
j2
)
noexcept
(
is_nothrow_move_constructible
<
nlohmann
::
json
>::
value
and
is_nothrow_move_constructible
<
nlohmann
::
json
>::
value
and
is_nothrow_move_assignable
<
nlohmann
::
json
>::
value
is_nothrow_move_assignable
<
nlohmann
::
json
>::
value
)
)
{
{
j1
.
swap
(
j2
);
j1
.
swap
(
j2
);
}
}
...
...
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