Skip to content

Commit a0bce44

Browse files
committed
Remove document_iterator, document::iterator, ParsedJsonIterator
Keep ParsedJson::Iterator only, without template, in same form as it was in 0.2
1 parent 26b1525 commit a0bce44

13 files changed

+102
-147
lines changed

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ SRCHEADERS_WESTMERE=src/westmere/bitmanipulation.h src/westmere/bitmask.h src/we
6161
SRCHEADERS_SRC=src/isadetection.h src/jsoncharutils.h src/simdprune_tables.h src/implementation.cpp src/stage1_find_marks.cpp src/stage2_build_tape.cpp src/document_parser_callbacks.h
6262
SRCHEADERS=$(SRCHEADERS_SRC) $(SRCHEADERS_GENERIC) $(SRCHEADERS_ARM64) $(SRCHEADERS_HASWELL) $(SRCHEADERS_WESTMERE) $(SRCHEADERS_FALLBACK)
6363

64-
INCLUDEHEADERS=include/simdjson.h include/simdjson/common_defs.h include/simdjson/internal/jsonformatutils.h include/simdjson/jsonioutil.h include/simdjson/jsonparser.h include/simdjson/padded_string.h include/simdjson/inline/padded_string.h include/simdjson/document.h include/simdjson/inline/document.h include/simdjson/document_iterator.h include/simdjson/inline/document_iterator.h include/simdjson/document_stream.h include/simdjson/inline/document_stream.h include/simdjson/implementation.h include/simdjson/parsedjson.h include/simdjson/jsonstream.h include/simdjson/inline/jsonstream.h include/simdjson/portability.h include/simdjson/error.h include/simdjson/inline/error.h include/simdjson/simdjson.h include/simdjson/simdjson_version.h
64+
INCLUDEHEADERS=include/simdjson.h include/simdjson/common_defs.h include/simdjson/internal/jsonformatutils.h include/simdjson/jsonioutil.h include/simdjson/jsonparser.h include/simdjson/padded_string.h include/simdjson/inline/padded_string.h include/simdjson/document.h include/simdjson/inline/document.h include/simdjson/parsedjson_iterator.h include/simdjson/inline/parsedjson_iterator.h include/simdjson/document_stream.h include/simdjson/inline/document_stream.h include/simdjson/implementation.h include/simdjson/parsedjson.h include/simdjson/jsonstream.h include/simdjson/inline/jsonstream.h include/simdjson/portability.h include/simdjson/error.h include/simdjson/inline/error.h include/simdjson/simdjson.h include/simdjson/simdjson_version.h
6565

6666
ifeq ($(SIMDJSON_TEST_AMALGAMATED_HEADERS),1)
6767
HEADERS=singleheader/simdjson.h

benchmark/bench_dom_api.cpp

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,10 @@ BENCHMARK(twitter_count);
2626

2727
static void iterator_twitter_count(State& state) {
2828
// Prints the number of results in twitter.json
29-
document doc = document::load(JSON_TEST_PATH);
29+
padded_string json = padded_string::load(JSON_TEST_PATH);
30+
ParsedJson pj = build_parsed_json(json);
3031
for (auto _ : state) {
31-
document::iterator iter(doc);
32+
ParsedJson::Iterator iter(pj);
3233
// uint64_t result_count = doc["search_metadata"]["count"];
3334
if (!iter.move_to_key("search_metadata")) { return; }
3435
if (!iter.move_to_key("count")) { return; }
@@ -116,10 +117,11 @@ BENCHMARK(error_code_twitter_default_profile);
116117

117118
static void iterator_twitter_default_profile(State& state) {
118119
// Count unique users with a default profile.
119-
document doc = document::load(JSON_TEST_PATH);
120+
padded_string json = padded_string::load(JSON_TEST_PATH);
121+
ParsedJson pj = build_parsed_json(json);
120122
for (auto _ : state) {
121123
set<string_view> default_users;
122-
document::iterator iter(doc);
124+
ParsedJson::Iterator iter(pj);
123125

124126
// for (document::object tweet : doc["statuses"].as_array()) {
125127
if (!(iter.move_to_key("statuses") && iter.is_array())) { return; }
@@ -180,10 +182,11 @@ BENCHMARK(error_code_twitter_image_sizes);
180182

181183
static void iterator_twitter_image_sizes(State& state) {
182184
// Count unique image sizes
183-
document doc = document::load(JSON_TEST_PATH);
185+
padded_string json = padded_string::load(JSON_TEST_PATH);
186+
ParsedJson pj = build_parsed_json(json);
184187
for (auto _ : state) {
185188
set<tuple<uint64_t, uint64_t>> image_sizes;
186-
document::iterator iter(doc);
189+
ParsedJson::Iterator iter(pj);
187190

188191
// for (document::object tweet : doc["statuses"].as_array()) {
189192
if (!(iter.move_to_key("statuses") && iter.is_array())) { return; }

benchmark/distinctuseridcompetition.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ void print_vec(const std::vector<int64_t> &v) {
3030
std::cout << std::endl;
3131
}
3232

33-
void simdjson_scan(std::vector<int64_t> &answer, simdjson::document::iterator i) {
33+
void simdjson_scan(std::vector<int64_t> &answer, simdjson::ParsedJson::Iterator i) {
3434
while (i.move_forward()) {
3535
if (i.get_scope_type() == '{') {
3636
bool found_user = (i.get_string_length() == 4) &&
@@ -49,18 +49,18 @@ void simdjson_scan(std::vector<int64_t> &answer, simdjson::document::iterator i)
4949
}
5050

5151
__attribute__((noinline)) std::vector<int64_t>
52-
simdjson_just_dom(simdjson::document &doc) {
52+
simdjson_just_dom(simdjson::ParsedJson &pj) {
5353
std::vector<int64_t> answer;
54-
simdjson_scan(answer, doc);
54+
simdjson_scan(answer, pj);
5555
remove_duplicates(answer);
5656
return answer;
5757
}
5858

5959
__attribute__((noinline)) std::vector<int64_t>
6060
simdjson_compute_stats(const simdjson::padded_string &p) {
6161
std::vector<int64_t> answer;
62-
auto [doc, error] = simdjson::document::parse(p);
63-
simdjson_scan(answer, doc);
62+
ParsedJson pj = simdjson::build_parsed_json(p);
63+
simdjson_scan(answer, pj);
6464
remove_duplicates(answer);
6565
return answer;
6666
}
@@ -319,7 +319,7 @@ int main(int argc, char *argv[]) {
319319
volume, !just_data);
320320
BEST_TIME("sasjon (just parse) ", sasjon_just_parse(p), false, , repeat,
321321
volume, !just_data);
322-
auto [dsimdjson, dsimdjson_error] = simdjson::document::parse(p);
322+
ParsedJson dsimdjson = build_parsed_json(p);
323323
BEST_TIME("simdjson (just dom) ", simdjson_just_dom(dsimdjson).size(), size,
324324
, repeat, volume, !just_data);
325325
char *buffer = (char *)malloc(p.size());

fuzz/fuzz_dump.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) {
5050
if (!pj.is_valid()) {
5151
throw 1;
5252
}
53-
simdjson::ParsedJson::Iterator pjh(pj.doc);
53+
simdjson::ParsedJson::Iterator pjh(pj);
5454
if (pjh.is_ok()) {
5555
compute_dump(pjh);
5656
}

include/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,23 +3,23 @@ set(SIMDJSON_INCLUDE
33
${SIMDJSON_INCLUDE_DIR}/simdjson.h
44
${SIMDJSON_INCLUDE_DIR}/simdjson/common_defs.h
55
${SIMDJSON_INCLUDE_DIR}/simdjson/compiler_check.h
6-
${SIMDJSON_INCLUDE_DIR}/simdjson/document_iterator.h
76
${SIMDJSON_INCLUDE_DIR}/simdjson/document_stream.h
87
${SIMDJSON_INCLUDE_DIR}/simdjson/document.h
98
${SIMDJSON_INCLUDE_DIR}/simdjson/error.h
109
${SIMDJSON_INCLUDE_DIR}/simdjson/implementation.h
1110
${SIMDJSON_INCLUDE_DIR}/simdjson/inline/document_stream.h
12-
${SIMDJSON_INCLUDE_DIR}/simdjson/inline/document_iterator.h
1311
${SIMDJSON_INCLUDE_DIR}/simdjson/inline/document.h
1412
${SIMDJSON_INCLUDE_DIR}/simdjson/inline/error.h
1513
${SIMDJSON_INCLUDE_DIR}/simdjson/inline/jsonstream.h
1614
${SIMDJSON_INCLUDE_DIR}/simdjson/inline/padded_string.h
15+
${SIMDJSON_INCLUDE_DIR}/simdjson/inline/parsedjson_iterator.h
1716
${SIMDJSON_INCLUDE_DIR}/simdjson/internal/jsonformatutils.h
1817
${SIMDJSON_INCLUDE_DIR}/simdjson/jsonioutil.h
1918
${SIMDJSON_INCLUDE_DIR}/simdjson/jsonparser.h
2019
${SIMDJSON_INCLUDE_DIR}/simdjson/jsonstream.h
2120
${SIMDJSON_INCLUDE_DIR}/simdjson/padded_string.h
2221
${SIMDJSON_INCLUDE_DIR}/simdjson/parsedjson.h
22+
${SIMDJSON_INCLUDE_DIR}/simdjson/parsedjson_iterator.h
2323
${SIMDJSON_INCLUDE_DIR}/simdjson/portability.h
2424
${SIMDJSON_INCLUDE_DIR}/simdjson/simdjson_version.h
2525
${SIMDJSON_INCLUDE_DIR}/simdjson/simdjson.h

include/simdjson.h

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,18 +12,17 @@
1212
#include "simdjson/document_stream.h"
1313

1414
// Deprecated API
15-
#include "simdjson/parsedjsoniterator.h"
1615
#include "simdjson/jsonparser.h"
1716
#include "simdjson/parsedjson.h"
17+
#include "simdjson/parsedjson_iterator.h"
1818
#include "simdjson/jsonstream.h"
19-
#include "simdjson/document_iterator.h"
2019

2120
// Inline functions
2221
#include "simdjson/inline/document.h"
23-
#include "simdjson/inline/document_iterator.h"
2422
#include "simdjson/inline/document_stream.h"
2523
#include "simdjson/inline/error.h"
2624
#include "simdjson/inline/jsonstream.h"
2725
#include "simdjson/inline/padded_string.h"
26+
#include "simdjson/inline/parsedjson_iterator.h"
2827

2928
#endif // SIMDJSON_H

include/simdjson/document.h

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,6 @@ class tape_ref;
1818

1919
namespace simdjson {
2020

21-
template<size_t max_depth> class document_iterator;
22-
2321
/**
2422
* A parsed JSON document.
2523
*
@@ -68,9 +66,6 @@ class document {
6866
class object_result;
6967
class stream_result;
7068

71-
// Nested classes. See definitions later in file.
72-
using iterator = document_iterator<DEFAULT_MAX_DEPTH>;
73-
7469
/**
7570
* Get the root element of this document as a JSON array.
7671
*/
@@ -1760,7 +1755,9 @@ class document::parser {
17601755
WARN_UNUSED inline bool allocate_capacity(size_t capacity, size_t max_depth = DEFAULT_MAX_DEPTH) noexcept;
17611756

17621757
// type aliases for backcompat
1763-
using Iterator = document::iterator;
1758+
/** @deprecated Use the new DOM API instead */
1759+
class Iterator;
1760+
/** @deprecated Use simdjson_error instead */
17641761
using InvalidJSON = simdjson_error;
17651762

17661763
// Next location to write to in the tape
@@ -1894,7 +1891,7 @@ class document::parser {
18941891
inline const document &get_document() const noexcept(false);
18951892
#endif // SIMDJSON_EXCEPTIONS
18961893

1897-
template<size_t max_depth> friend class document_iterator;
1894+
friend class document::parser::Iterator;
18981895
friend class document::stream;
18991896
}; // class parser
19001897

0 commit comments

Comments
 (0)