Compare commits

...

4 Commits

Author SHA1 Message Date
Daniel Lemire 6d909a5d12 Deprecated method. 2022-10-04 10:07:18 -04:00
Daniel Lemire b4c0cad4fe Documentation tweak. 2022-10-04 10:02:34 -04:00
Daniel Lemire 0c284d07b1 Removing max_depth from ondemand::parser 2022-10-04 09:58:37 -04:00
Daniel Lemire 7d30aecf0c Removing start_positions. 2022-10-04 09:52:40 -04:00
2 changed files with 7 additions and 16 deletions
@@ -8,15 +8,12 @@ simdjson_inline parser::parser(size_t max_capacity) noexcept
simdjson_warn_unused simdjson_inline error_code parser::allocate(size_t new_capacity, size_t new_max_depth) noexcept { simdjson_warn_unused simdjson_inline error_code parser::allocate(size_t new_capacity, size_t new_max_depth) noexcept {
if (new_capacity > max_capacity()) { return CAPACITY; } if (new_capacity > max_capacity()) { return CAPACITY; }
if (string_buf && new_capacity == capacity() && new_max_depth == max_depth()) { return SUCCESS; } if (string_buf && new_capacity == capacity()) { return SUCCESS; }
// string_capacity copied from document::allocate // string_capacity copied from document::allocate
_capacity = 0; _capacity = 0;
size_t string_capacity = SIMDJSON_ROUNDUP_N(5 * new_capacity / 3 + SIMDJSON_PADDING, 64); size_t string_capacity = SIMDJSON_ROUNDUP_N(5 * new_capacity / 3 + SIMDJSON_PADDING, 64);
string_buf.reset(new (std::nothrow) uint8_t[string_capacity]); string_buf.reset(new (std::nothrow) uint8_t[string_capacity]);
#if SIMDJSON_DEVELOPMENT_CHECKS
start_positions.reset(new (std::nothrow) token_position[new_max_depth]);
#endif
if (implementation) { if (implementation) {
SIMDJSON_TRY( implementation->set_capacity(new_capacity) ); SIMDJSON_TRY( implementation->set_capacity(new_capacity) );
SIMDJSON_TRY( implementation->set_max_depth(new_max_depth) ); SIMDJSON_TRY( implementation->set_max_depth(new_max_depth) );
@@ -24,7 +21,6 @@ simdjson_warn_unused simdjson_inline error_code parser::allocate(size_t new_capa
SIMDJSON_TRY( simdjson::get_active_implementation()->create_dom_parser_implementation(new_capacity, new_max_depth, implementation) ); SIMDJSON_TRY( simdjson::get_active_implementation()->create_dom_parser_implementation(new_capacity, new_max_depth, implementation) );
} }
_capacity = new_capacity; _capacity = new_capacity;
_max_depth = new_max_depth;
return SUCCESS; return SUCCESS;
} }
@@ -33,7 +29,7 @@ simdjson_warn_unused simdjson_inline simdjson_result<document> parser::iterate(p
// Allocate if needed // Allocate if needed
if (capacity() < json.length() || !string_buf) { if (capacity() < json.length() || !string_buf) {
SIMDJSON_TRY( allocate(json.length(), max_depth()) ); SIMDJSON_TRY( allocate(json.length()) );
} }
// Run stage 1. // Run stage 1.
@@ -76,7 +72,7 @@ simdjson_warn_unused simdjson_inline simdjson_result<json_iterator> parser::iter
// Allocate if needed // Allocate if needed
if (capacity() < json.length()) { if (capacity() < json.length()) {
SIMDJSON_TRY( allocate(json.length(), max_depth()) ); SIMDJSON_TRY( allocate(json.length()) );
} }
// Run stage 1. // Run stage 1.
@@ -104,10 +100,10 @@ simdjson_inline size_t parser::capacity() const noexcept {
simdjson_inline size_t parser::max_capacity() const noexcept { simdjson_inline size_t parser::max_capacity() const noexcept {
return _max_capacity; return _max_capacity;
} }
// deprecated method
simdjson_inline size_t parser::max_depth() const noexcept { simdjson_inline size_t parser::max_depth() const noexcept {
return _max_depth; return DEFAULT_MAX_DEPTH;
} }
simdjson_inline void parser::set_max_capacity(size_t max_capacity) noexcept { simdjson_inline void parser::set_max_capacity(size_t max_capacity) noexcept {
if(max_capacity < dom::MINIMAL_DOCUMENT_CAPACITY) { if(max_capacity < dom::MINIMAL_DOCUMENT_CAPACITY) {
_max_capacity = max_capacity; _max_capacity = max_capacity;
+2 -7
View File
@@ -230,15 +230,14 @@ public:
/** The maximum capacity of this parser (the largest document it is allowed to process). */ /** The maximum capacity of this parser (the largest document it is allowed to process). */
simdjson_inline size_t max_capacity() const noexcept; simdjson_inline size_t max_capacity() const noexcept;
simdjson_inline void set_max_capacity(size_t max_capacity) noexcept; simdjson_inline void set_max_capacity(size_t max_capacity) noexcept;
/** The maximum depth of this parser (the most deeply nested objects and arrays it can process). */ /** Deprecated method. */
simdjson_inline size_t max_depth() const noexcept; simdjson_inline size_t max_depth() const noexcept;
/** /**
* Ensure this parser has enough memory to process JSON documents up to `capacity` bytes in length * Ensure this parser has enough memory to process JSON documents up to `capacity` bytes in length
* and `max_depth` depth. * and `max_depth` depth.
* *
* @param capacity The new capacity. * @param capacity The new capacity.
* @param max_depth The new max_depth. Defaults to DEFAULT_MAX_DEPTH. * @param max_depth The new max_depth. Defaults to DEFAULT_MAX_DEPTH. (This parameter has no effect.)
* @return The error, if there is one. * @return The error, if there is one.
*/ */
simdjson_warn_unused error_code allocate(size_t capacity, size_t max_depth=DEFAULT_MAX_DEPTH) noexcept; simdjson_warn_unused error_code allocate(size_t capacity, size_t max_depth=DEFAULT_MAX_DEPTH) noexcept;
@@ -278,11 +277,7 @@ private:
std::unique_ptr<internal::dom_parser_implementation> implementation{}; std::unique_ptr<internal::dom_parser_implementation> implementation{};
size_t _capacity{0}; size_t _capacity{0};
size_t _max_capacity; size_t _max_capacity;
size_t _max_depth{DEFAULT_MAX_DEPTH};
std::unique_ptr<uint8_t[]> string_buf{}; std::unique_ptr<uint8_t[]> string_buf{};
#if SIMDJSON_DEVELOPMENT_CHECKS
std::unique_ptr<token_position[]> start_positions{};
#endif
friend class json_iterator; friend class json_iterator;
friend class document_stream; friend class document_stream;