File tree 5 files changed +17
-17
lines changed
include/simdjson/generic/ondemand
5 files changed +17
-17
lines changed Original file line number Diff line number Diff line change @@ -47,13 +47,13 @@ simdjson_really_inline bool Iter::Run(const padded_string &json) {
47
47
tweet tweet;
48
48
49
49
if (!iter.start_object () || !iter.find_field_raw (" created_at" )) { return false ; }
50
- tweet.created_at = iter.consume_raw_json_string (). value (). unescape (iter );
50
+ tweet.created_at = iter.consume_string ( );
51
51
52
52
if (!iter.has_next_field () || !iter.find_field_raw (" id" )) { return false ; }
53
53
tweet.id = iter.consume_uint64 ();
54
54
55
55
if (!iter.has_next_field () || !iter.find_field_raw (" text" )) { return false ; }
56
- tweet.text = iter.consume_raw_json_string (). value (). unescape (iter );
56
+ tweet.text = iter.consume_string ( );
57
57
58
58
if (!iter.has_next_field () || !iter.find_field_raw (" in_reply_to_status_id" )) { return false ; }
59
59
if (!iter.is_null ()) {
@@ -66,7 +66,7 @@ simdjson_really_inline bool Iter::Run(const padded_string &json) {
66
66
tweet.user .id = iter.consume_uint64 ();
67
67
68
68
if (!iter.has_next_field () || !iter.find_field_raw (" screen_name" )) { return false ; }
69
- tweet.user .screen_name = iter.consume_raw_json_string (). value (). unescape (iter );
69
+ tweet.user .screen_name = iter.consume_string ( );
70
70
71
71
if (iter.skip_container ()) { return false ; } // Skip the rest of the user object
72
72
}
Original file line number Diff line number Diff line change @@ -15,7 +15,7 @@ simdjson_really_inline document::~document() noexcept {
15
15
}
16
16
17
17
simdjson_really_inline void document::assert_at_start () const noexcept {
18
- SIMDJSON_ASSUME (json != nullptr );
18
+ SIMDJSON_ASSUME (json != nullptr && iter. is_alive () );
19
19
}
20
20
simdjson_really_inline document document::start (json_iterator &&iter) noexcept {
21
21
auto json = iter.advance ();
Original file line number Diff line number Diff line change @@ -2,12 +2,13 @@ namespace simdjson {
2
2
namespace SIMDJSON_IMPLEMENTATION {
3
3
namespace ondemand {
4
4
5
- #ifdef SIMDJSON_ONDEMAND_SAFETY_RAILS
6
5
simdjson_really_inline json_iterator::json_iterator (json_iterator &&other) noexcept
7
6
: token_iterator(std::forward<token_iterator>(other)),
8
7
parser{other.parser },
9
- current_string_buf_loc{other.current_string_buf_loc },
10
- active_lease_depth{other.active_lease_depth }
8
+ current_string_buf_loc{other.current_string_buf_loc }
9
+ #ifdef SIMDJSON_ONDEMAND_SAFETY_RAILS
10
+ , active_lease_depth{other.active_lease_depth }
11
+ #endif
11
12
{
12
13
other.parser = nullptr ;
13
14
}
@@ -16,11 +17,12 @@ simdjson_really_inline json_iterator &json_iterator::operator=(json_iterator &&o
16
17
index = other.index ;
17
18
parser = other.parser ;
18
19
current_string_buf_loc = other.current_string_buf_loc ;
20
+ #ifdef SIMDJSON_ONDEMAND_SAFETY_RAILS
19
21
active_lease_depth = other.active_lease_depth ;
22
+ #endif
20
23
other.parser = nullptr ;
21
24
return *this ;
22
25
}
23
- #endif
24
26
25
27
simdjson_really_inline json_iterator::json_iterator (ondemand::parser *_parser) noexcept
26
28
: token_iterator(_parser->dom_parser.buf, _parser->dom_parser.structural_indexes.get()),
Original file line number Diff line number Diff line change @@ -18,13 +18,11 @@ class json_iterator_ref;
18
18
class json_iterator : public token_iterator {
19
19
public:
20
20
simdjson_really_inline json_iterator () noexcept = default;
21
- #ifdef SIMDJSON_ONDEMAND_SAFETY_RAILS
22
21
simdjson_really_inline json_iterator (json_iterator &&other) noexcept ;
23
22
simdjson_really_inline json_iterator &operator =(json_iterator &&other) noexcept ;
23
+ #ifdef SIMDJSON_ONDEMAND_SAFETY_RAILS
24
24
simdjson_really_inline ~json_iterator () noexcept ;
25
25
#else
26
- simdjson_really_inline json_iterator (json_iterator &&other) noexcept = default;
27
- simdjson_really_inline json_iterator &operator =(json_iterator &&other) noexcept = default ;
28
26
simdjson_really_inline ~json_iterator () noexcept = default ;
29
27
#endif
30
28
simdjson_really_inline json_iterator (const json_iterator &other) noexcept = delete;
Original file line number Diff line number Diff line change @@ -40,15 +40,15 @@ simdjson_really_inline simdjson_result<T> value::consume_if_success(simdjson_res
40
40
}
41
41
42
42
simdjson_really_inline simdjson_result<array> value::get_array () noexcept {
43
- bool is_empty ;
44
- SIMDJSON_TRY ( iter->start_array (json).get (is_empty ) );
45
- if (is_empty ) { iter.release (); }
43
+ bool has_value ;
44
+ SIMDJSON_TRY ( iter->start_array (json).get (has_value ) );
45
+ if (!has_value ) { iter.release (); }
46
46
return array (std::move (iter));
47
47
}
48
48
simdjson_really_inline simdjson_result<object> value::get_object () noexcept {
49
- bool is_empty ;
50
- SIMDJSON_TRY ( iter->start_object (json).get (is_empty ) );
51
- if (is_empty ) { iter.release (); }
49
+ bool has_value ;
50
+ SIMDJSON_TRY ( iter->start_object (json).get (has_value ) );
51
+ if (!has_value ) { iter.release (); }
52
52
return object (std::move (iter));
53
53
}
54
54
simdjson_really_inline simdjson_result<raw_json_string> value::get_raw_json_string () noexcept {
You can’t perform that action at this time.
0 commit comments