Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
A
Actor Framework
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
cpp-libs
Actor Framework
Commits
4b9e5e2a
Commit
4b9e5e2a
authored
May 02, 2022
by
Dominik Charousset
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'topic/neverlord/json'
parents
21328c0f
d8e9b092
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
7 additions
and
4 deletions
+7
-4
libcaf_core/src/json_reader.cpp
libcaf_core/src/json_reader.cpp
+7
-4
No files found.
libcaf_core/src/json_reader.cpp
View file @
4b9e5e2a
...
@@ -166,6 +166,7 @@ void json_reader::revert() {
...
@@ -166,6 +166,7 @@ void json_reader::revert() {
err_
.
reset
();
err_
.
reset
();
st_
->
clear
();
st_
->
clear
();
st_
->
emplace_back
(
root_
);
st_
->
emplace_back
(
root_
);
field_
.
clear
();
}
}
}
}
...
@@ -173,6 +174,7 @@ void json_reader::reset() {
...
@@ -173,6 +174,7 @@ void json_reader::reset() {
buf_
.
reclaim
();
buf_
.
reclaim
();
st_
=
nullptr
;
st_
=
nullptr
;
err_
.
reset
();
err_
.
reset
();
field_
.
clear
();
}
}
// -- interface functions ------------------------------------------------------
// -- interface functions ------------------------------------------------------
...
@@ -260,8 +262,8 @@ bool json_reader::end_object() {
...
@@ -260,8 +262,8 @@ bool json_reader::end_object() {
bool
json_reader
::
begin_field
(
std
::
string_view
name
)
{
bool
json_reader
::
begin_field
(
std
::
string_view
name
)
{
SCOPE
(
position
::
object
);
SCOPE
(
position
::
object
);
if
(
auto
member
=
find_member
(
top
<
position
::
object
>
(),
name
))
{
field_
.
push_back
(
name
);
field_
.
push_back
(
name
);
if
(
auto
member
=
find_member
(
top
<
position
::
object
>
(),
name
))
{
push
(
member
->
val
);
push
(
member
->
val
);
return
true
;
return
true
;
}
else
{
}
else
{
...
@@ -273,10 +275,10 @@ bool json_reader::begin_field(std::string_view name) {
...
@@ -273,10 +275,10 @@ bool json_reader::begin_field(std::string_view name) {
bool
json_reader
::
begin_field
(
std
::
string_view
name
,
bool
&
is_present
)
{
bool
json_reader
::
begin_field
(
std
::
string_view
name
,
bool
&
is_present
)
{
SCOPE
(
position
::
object
);
SCOPE
(
position
::
object
);
field_
.
push_back
(
name
);
if
(
auto
member
=
find_member
(
top
<
position
::
object
>
(),
name
);
if
(
auto
member
=
find_member
(
top
<
position
::
object
>
(),
name
);
member
!=
nullptr
member
!=
nullptr
&&
member
->
val
->
data
.
index
()
!=
detail
::
json
::
value
::
null_index
)
{
&&
member
->
val
->
data
.
index
()
!=
detail
::
json
::
value
::
null_index
)
{
field_
.
push_back
(
name
);
push
(
member
->
val
);
push
(
member
->
val
);
is_present
=
true
;
is_present
=
true
;
}
else
{
}
else
{
...
@@ -304,6 +306,7 @@ bool json_reader::begin_field(std::string_view name,
...
@@ -304,6 +306,7 @@ bool json_reader::begin_field(std::string_view name,
bool
json_reader
::
begin_field
(
std
::
string_view
name
,
bool
&
is_present
,
bool
json_reader
::
begin_field
(
std
::
string_view
name
,
bool
&
is_present
,
span
<
const
type_id_t
>
types
,
size_t
&
index
)
{
span
<
const
type_id_t
>
types
,
size_t
&
index
)
{
SCOPE
(
position
::
object
);
SCOPE
(
position
::
object
);
field_
.
push_back
(
name
);
if
(
auto
member
=
find_member
(
top
<
position
::
object
>
(),
name
);
if
(
auto
member
=
find_member
(
top
<
position
::
object
>
(),
name
);
member
!=
nullptr
member
!=
nullptr
&&
member
->
val
->
data
.
index
()
!=
detail
::
json
::
value
::
null_index
)
{
&&
member
->
val
->
data
.
index
()
!=
detail
::
json
::
value
::
null_index
)
{
...
@@ -312,7 +315,6 @@ bool json_reader::begin_field(std::string_view name, bool& is_present,
...
@@ -312,7 +315,6 @@ bool json_reader::begin_field(std::string_view name, bool& is_present,
if
(
auto
i
=
std
::
find
(
types
.
begin
(),
types
.
end
(),
id
);
if
(
auto
i
=
std
::
find
(
types
.
begin
(),
types
.
end
(),
id
);
i
!=
types
.
end
())
{
i
!=
types
.
end
())
{
index
=
static_cast
<
size_t
>
(
std
::
distance
(
types
.
begin
(),
i
));
index
=
static_cast
<
size_t
>
(
std
::
distance
(
types
.
begin
(),
i
));
field_
.
push_back
(
name
);
push
(
member
->
val
);
push
(
member
->
val
);
is_present
=
true
;
is_present
=
true
;
return
true
;
return
true
;
...
@@ -327,6 +329,7 @@ bool json_reader::end_field() {
...
@@ -327,6 +329,7 @@ bool json_reader::end_field() {
SCOPE
(
position
::
object
);
SCOPE
(
position
::
object
);
// Note: no pop() here, because the value(s) were already consumed. Only
// Note: no pop() here, because the value(s) were already consumed. Only
// update the field_ for debugging.
// update the field_ for debugging.
if
(
!
field_
.
empty
())
field_
.
pop_back
();
field_
.
pop_back
();
return
true
;
return
true
;
}
}
...
...
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