mirror of
https://github.com/simdjson/simdjson
synced 2026-06-08 17:27:07 +00:00
b648a5fc0a
* add std::ranges support for On-Demand API (#2382) Add zero-cost range wrappers (array_range, object_range) that satisfy std::ranges::input_range, enabling std::views::transform and other C++20 range adaptors with the On-Demand parser. Uses direct forwarding via simdjson_inline with no value buffering, avoiding the per-element overhead (~20%) of the previous approach. Guarded by SIMDJSON_SUPPORTS_RANGES. * fix: replace non-ASCII em dash in test comment The just_ascii CI check flags any non-ASCII characters in source files. * let us see what we get with this... * minor tweak * minor update * update doc --------- Co-authored-by: Justin Li <justin53@bu.edu>
54 lines
1.3 KiB
C++
54 lines
1.3 KiB
C++
#ifndef SIMDJSON_GENERIC_ONDEMAND_BASE_H
|
|
|
|
#ifndef SIMDJSON_CONDITIONAL_INCLUDE
|
|
#define SIMDJSON_GENERIC_ONDEMAND_BASE_H
|
|
#include "simdjson/generic/base.h"
|
|
#endif // SIMDJSON_CONDITIONAL_INCLUDE
|
|
|
|
namespace simdjson {
|
|
namespace SIMDJSON_IMPLEMENTATION {
|
|
/**
|
|
* A fast, simple, DOM-like interface that parses JSON as you use it.
|
|
*
|
|
* Designed for maximum speed and a lower memory profile.
|
|
*/
|
|
namespace ondemand {
|
|
|
|
/** Represents the depth of a JSON value (number of nested arrays/objects). */
|
|
using depth_t = int32_t;
|
|
|
|
/** @copydoc simdjson::SIMDJSON_IMPLEMENTATION::number_type */
|
|
using number_type = simdjson::SIMDJSON_IMPLEMENTATION::number_type;
|
|
|
|
/** @private Position in the JSON buffer indexes */
|
|
using token_position = const uint32_t *;
|
|
|
|
class array;
|
|
class array_iterator;
|
|
class document;
|
|
class document_reference;
|
|
class document_stream;
|
|
class field;
|
|
class json_iterator;
|
|
enum class json_type;
|
|
struct number;
|
|
class object;
|
|
class object_iterator;
|
|
class parser;
|
|
class raw_json_string;
|
|
class token_iterator;
|
|
class value;
|
|
class value_iterator;
|
|
|
|
#if SIMDJSON_SUPPORTS_RANGES
|
|
class array_range;
|
|
class array_range_iterator;
|
|
class object_range;
|
|
class object_range_iterator;
|
|
#endif // SIMDJSON_SUPPORTS_RANGES
|
|
|
|
} // namespace ondemand
|
|
} // namespace SIMDJSON_IMPLEMENTATION
|
|
} // namespace simdjson
|
|
|
|
#endif // SIMDJSON_GENERIC_ONDEMAND_BASE_H
|