Skip to content

Commit 80eac14

Browse files
nodejs-github-bottargos
authored andcommitted
deps: update simdjson to 3.13.0
PR-URL: #58629 Reviewed-By: Luigi Pinca <[email protected]> Reviewed-By: Antoine du Hamel <[email protected]> Reviewed-By: Rafael Gonzaga <[email protected]> Reviewed-By: Marco Ippolito <[email protected]>
1 parent dc10238 commit 80eac14

File tree

2 files changed

+328
-26
lines changed

2 files changed

+328
-26
lines changed

deps/simdjson/simdjson.cpp

Lines changed: 162 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/* auto-generated on 2025-03-27 15:01:10 -0400. Do not edit! */
1+
/* auto-generated on 2025-06-04 00:22:10 -0400. Do not edit! */
22
/* including simdjson.cpp: */
33
/* begin file simdjson.cpp */
44
#define SIMDJSON_SRC_SIMDJSON_CPP
@@ -373,7 +373,7 @@ double from_chars(const char *first, const char* end) noexcept;
373373
}
374374

375375
#ifndef SIMDJSON_EXCEPTIONS
376-
#if __cpp_exceptions
376+
#if defined(__cpp_exceptions) || defined(_CPPUNWIND)
377377
#define SIMDJSON_EXCEPTIONS 1
378378
#else
379379
#define SIMDJSON_EXCEPTIONS 0
@@ -576,12 +576,14 @@ double from_chars(const char *first, const char* end) noexcept;
576576
// even if we do not have C++17 support.
577577
#ifdef __cpp_lib_string_view
578578
#define SIMDJSON_HAS_STRING_VIEW
579+
#include <string_view>
579580
#endif
580581

581582
// Some systems have string_view even if we do not have C++17 support,
582583
// and even if __cpp_lib_string_view is undefined, it is the case
583584
// with Apple clang version 11.
584585
// We must handle it. *This is important.*
586+
#ifndef _MSC_VER
585587
#ifndef SIMDJSON_HAS_STRING_VIEW
586588
#if defined __has_include
587589
// do not combine the next #if with the previous one (unsafe)
@@ -597,6 +599,7 @@ double from_chars(const char *first, const char* end) noexcept;
597599
#endif // __has_include (<string_view>)
598600
#endif // defined __has_include
599601
#endif // def SIMDJSON_HAS_STRING_VIEW
602+
#endif // def _MSC_VER
600603
// end of complicated but important routine to try to detect string_view.
601604

602605
//
@@ -2607,6 +2610,7 @@ struct simdjson_result_base : protected std::pair<T, error_code> {
26072610
* @throw simdjson_error if there was an error.
26082611
*/
26092612
simdjson_inline operator T&&() && noexcept(false);
2613+
26102614
#endif // SIMDJSON_EXCEPTIONS
26112615

26122616
/**
@@ -2663,7 +2667,17 @@ struct simdjson_result : public internal::simdjson_result_base<T> {
26632667
* @param value The variable to assign the value to. May not be set if there is an error.
26642668
*/
26652669
simdjson_warn_unused simdjson_inline error_code get(T &value) && noexcept;
2666-
2670+
//
2671+
/**
2672+
* Copy the value to a provided std::string, only enabled for std::string_view.
2673+
*
2674+
* @param value The variable to assign the value to. May not be set if there is an error.
2675+
*/
2676+
simdjson_warn_unused simdjson_inline error_code get(std::string &value) && noexcept
2677+
#if SIMDJSON_SUPPORTS_DESERIALIZATION
2678+
requires (!std::is_same_v<T, std::string>)
2679+
#endif // SIMDJSON_SUPPORTS_DESERIALIZATION
2680+
;
26672681
/**
26682682
* The error.
26692683
*/
@@ -4663,6 +4677,23 @@ simdjson_warn_unused simdjson_inline error_code simdjson_result<T>::get(T &value
46634677
return std::forward<internal::simdjson_result_base<T>>(*this).get(value);
46644678
}
46654679

4680+
template<typename T>
4681+
simdjson_warn_unused simdjson_inline error_code
4682+
simdjson_result<T>::get(std::string &value) && noexcept
4683+
#if SIMDJSON_SUPPORTS_DESERIALIZATION
4684+
requires (!std::is_same_v<T, std::string>)
4685+
#endif // SIMDJSON_SUPPORTS_DESERIALIZATION
4686+
{
4687+
// SFINAE : n'active que pour T = std::string_view
4688+
static_assert(std::is_same<T, std::string_view>::value, "simdjson_result<T>::get(std::string&) n'est disponible que pour T = std::string_view");
4689+
std::string_view v;
4690+
error_code error = std::forward<simdjson_result<T>>(*this).get(v);
4691+
if (!error) {
4692+
value.assign(v.data(), v.size());
4693+
}
4694+
return error;
4695+
}
4696+
46664697
template<typename T>
46674698
simdjson_inline error_code simdjson_result<T>::error() const noexcept {
46684699
return internal::simdjson_result_base<T>::error();
@@ -9726,7 +9757,16 @@ simdjson_inline error_code parse_number(const uint8_t *const src, W &writer) {
97269757
if (i > uint64_t(INT64_MAX)) {
97279758
WRITE_UNSIGNED(i, src, writer);
97289759
} else {
9729-
WRITE_INTEGER(negative ? (~i+1) : i, src, writer);
9760+
#if SIMDJSON_MINUS_ZERO_AS_FLOAT
9761+
if(i == 0 && negative) {
9762+
// We have to write -0.0 instead of 0
9763+
WRITE_DOUBLE(-0.0, src, writer);
9764+
} else {
9765+
WRITE_INTEGER(negative ? (~i+1) : i, src, writer);
9766+
}
9767+
#else
9768+
WRITE_INTEGER(negative ? (~i+1) : i, src, writer);
9769+
#endif
97309770
}
97319771
if (jsoncharutils::is_not_structural_or_whitespace(*p)) { return INVALID_NUMBER(src); }
97329772
return SUCCESS;
@@ -10187,6 +10227,12 @@ simdjson_unused simdjson_inline simdjson_result<number_type> get_number_type(con
1018710227
if (simdjson_unlikely(digit_count == 19 && memcmp(src, smaller_big_integer, 19) > 0)) {
1018810228
return number_type::big_integer;
1018910229
}
10230+
#if SIMDJSON_MINUS_ZERO_AS_FLOAT
10231+
if(digit_count == 1 && src[0] == '0') {
10232+
// We have to write -0.0 instead of 0
10233+
return number_type::floating_point_number;
10234+
}
10235+
#endif
1019010236
return number_type::signed_integer;
1019110237
}
1019210238
// Let us check if we have a big integer (>=2**64).
@@ -16086,7 +16132,16 @@ simdjson_inline error_code parse_number(const uint8_t *const src, W &writer) {
1608616132
if (i > uint64_t(INT64_MAX)) {
1608716133
WRITE_UNSIGNED(i, src, writer);
1608816134
} else {
16089-
WRITE_INTEGER(negative ? (~i+1) : i, src, writer);
16135+
#if SIMDJSON_MINUS_ZERO_AS_FLOAT
16136+
if(i == 0 && negative) {
16137+
// We have to write -0.0 instead of 0
16138+
WRITE_DOUBLE(-0.0, src, writer);
16139+
} else {
16140+
WRITE_INTEGER(negative ? (~i+1) : i, src, writer);
16141+
}
16142+
#else
16143+
WRITE_INTEGER(negative ? (~i+1) : i, src, writer);
16144+
#endif
1609016145
}
1609116146
if (jsoncharutils::is_not_structural_or_whitespace(*p)) { return INVALID_NUMBER(src); }
1609216147
return SUCCESS;
@@ -16547,6 +16602,12 @@ simdjson_unused simdjson_inline simdjson_result<number_type> get_number_type(con
1654716602
if (simdjson_unlikely(digit_count == 19 && memcmp(src, smaller_big_integer, 19) > 0)) {
1654816603
return number_type::big_integer;
1654916604
}
16605+
#if SIMDJSON_MINUS_ZERO_AS_FLOAT
16606+
if(digit_count == 1 && src[0] == '0') {
16607+
// We have to write -0.0 instead of 0
16608+
return number_type::floating_point_number;
16609+
}
16610+
#endif
1655016611
return number_type::signed_integer;
1655116612
}
1655216613
// Let us check if we have a big integer (>=2**64).
@@ -22310,7 +22371,16 @@ simdjson_inline error_code parse_number(const uint8_t *const src, W &writer) {
2231022371
if (i > uint64_t(INT64_MAX)) {
2231122372
WRITE_UNSIGNED(i, src, writer);
2231222373
} else {
22313-
WRITE_INTEGER(negative ? (~i+1) : i, src, writer);
22374+
#if SIMDJSON_MINUS_ZERO_AS_FLOAT
22375+
if(i == 0 && negative) {
22376+
// We have to write -0.0 instead of 0
22377+
WRITE_DOUBLE(-0.0, src, writer);
22378+
} else {
22379+
WRITE_INTEGER(negative ? (~i+1) : i, src, writer);
22380+
}
22381+
#else
22382+
WRITE_INTEGER(negative ? (~i+1) : i, src, writer);
22383+
#endif
2231422384
}
2231522385
if (jsoncharutils::is_not_structural_or_whitespace(*p)) { return INVALID_NUMBER(src); }
2231622386
return SUCCESS;
@@ -22771,6 +22841,12 @@ simdjson_unused simdjson_inline simdjson_result<number_type> get_number_type(con
2277122841
if (simdjson_unlikely(digit_count == 19 && memcmp(src, smaller_big_integer, 19) > 0)) {
2277222842
return number_type::big_integer;
2277322843
}
22844+
#if SIMDJSON_MINUS_ZERO_AS_FLOAT
22845+
if(digit_count == 1 && src[0] == '0') {
22846+
// We have to write -0.0 instead of 0
22847+
return number_type::floating_point_number;
22848+
}
22849+
#endif
2277422850
return number_type::signed_integer;
2277522851
}
2277622852
// Let us check if we have a big integer (>=2**64).
@@ -28690,7 +28766,16 @@ simdjson_inline error_code parse_number(const uint8_t *const src, W &writer) {
2869028766
if (i > uint64_t(INT64_MAX)) {
2869128767
WRITE_UNSIGNED(i, src, writer);
2869228768
} else {
28693-
WRITE_INTEGER(negative ? (~i+1) : i, src, writer);
28769+
#if SIMDJSON_MINUS_ZERO_AS_FLOAT
28770+
if(i == 0 && negative) {
28771+
// We have to write -0.0 instead of 0
28772+
WRITE_DOUBLE(-0.0, src, writer);
28773+
} else {
28774+
WRITE_INTEGER(negative ? (~i+1) : i, src, writer);
28775+
}
28776+
#else
28777+
WRITE_INTEGER(negative ? (~i+1) : i, src, writer);
28778+
#endif
2869428779
}
2869528780
if (jsoncharutils::is_not_structural_or_whitespace(*p)) { return INVALID_NUMBER(src); }
2869628781
return SUCCESS;
@@ -29151,6 +29236,12 @@ simdjson_unused simdjson_inline simdjson_result<number_type> get_number_type(con
2915129236
if (simdjson_unlikely(digit_count == 19 && memcmp(src, smaller_big_integer, 19) > 0)) {
2915229237
return number_type::big_integer;
2915329238
}
29239+
#if SIMDJSON_MINUS_ZERO_AS_FLOAT
29240+
if(digit_count == 1 && src[0] == '0') {
29241+
// We have to write -0.0 instead of 0
29242+
return number_type::floating_point_number;
29243+
}
29244+
#endif
2915429245
return number_type::signed_integer;
2915529246
}
2915629247
// Let us check if we have a big integer (>=2**64).
@@ -35432,7 +35523,16 @@ simdjson_inline error_code parse_number(const uint8_t *const src, W &writer) {
3543235523
if (i > uint64_t(INT64_MAX)) {
3543335524
WRITE_UNSIGNED(i, src, writer);
3543435525
} else {
35435-
WRITE_INTEGER(negative ? (~i+1) : i, src, writer);
35526+
#if SIMDJSON_MINUS_ZERO_AS_FLOAT
35527+
if(i == 0 && negative) {
35528+
// We have to write -0.0 instead of 0
35529+
WRITE_DOUBLE(-0.0, src, writer);
35530+
} else {
35531+
WRITE_INTEGER(negative ? (~i+1) : i, src, writer);
35532+
}
35533+
#else
35534+
WRITE_INTEGER(negative ? (~i+1) : i, src, writer);
35535+
#endif
3543635536
}
3543735537
if (jsoncharutils::is_not_structural_or_whitespace(*p)) { return INVALID_NUMBER(src); }
3543835538
return SUCCESS;
@@ -35893,6 +35993,12 @@ simdjson_unused simdjson_inline simdjson_result<number_type> get_number_type(con
3589335993
if (simdjson_unlikely(digit_count == 19 && memcmp(src, smaller_big_integer, 19) > 0)) {
3589435994
return number_type::big_integer;
3589535995
}
35996+
#if SIMDJSON_MINUS_ZERO_AS_FLOAT
35997+
if(digit_count == 1 && src[0] == '0') {
35998+
// We have to write -0.0 instead of 0
35999+
return number_type::floating_point_number;
36000+
}
36001+
#endif
3589636002
return number_type::signed_integer;
3589736003
}
3589836004
// Let us check if we have a big integer (>=2**64).
@@ -41998,7 +42104,16 @@ simdjson_inline error_code parse_number(const uint8_t *const src, W &writer) {
4199842104
if (i > uint64_t(INT64_MAX)) {
4199942105
WRITE_UNSIGNED(i, src, writer);
4200042106
} else {
42001-
WRITE_INTEGER(negative ? (~i+1) : i, src, writer);
42107+
#if SIMDJSON_MINUS_ZERO_AS_FLOAT
42108+
if(i == 0 && negative) {
42109+
// We have to write -0.0 instead of 0
42110+
WRITE_DOUBLE(-0.0, src, writer);
42111+
} else {
42112+
WRITE_INTEGER(negative ? (~i+1) : i, src, writer);
42113+
}
42114+
#else
42115+
WRITE_INTEGER(negative ? (~i+1) : i, src, writer);
42116+
#endif
4200242117
}
4200342118
if (jsoncharutils::is_not_structural_or_whitespace(*p)) { return INVALID_NUMBER(src); }
4200442119
return SUCCESS;
@@ -42459,6 +42574,12 @@ simdjson_unused simdjson_inline simdjson_result<number_type> get_number_type(con
4245942574
if (simdjson_unlikely(digit_count == 19 && memcmp(src, smaller_big_integer, 19) > 0)) {
4246042575
return number_type::big_integer;
4246142576
}
42577+
#if SIMDJSON_MINUS_ZERO_AS_FLOAT
42578+
if(digit_count == 1 && src[0] == '0') {
42579+
// We have to write -0.0 instead of 0
42580+
return number_type::floating_point_number;
42581+
}
42582+
#endif
4246242583
return number_type::signed_integer;
4246342584
}
4246442585
// Let us check if we have a big integer (>=2**64).
@@ -48009,7 +48130,16 @@ simdjson_inline error_code parse_number(const uint8_t *const src, W &writer) {
4800948130
if (i > uint64_t(INT64_MAX)) {
4801048131
WRITE_UNSIGNED(i, src, writer);
4801148132
} else {
48012-
WRITE_INTEGER(negative ? (~i+1) : i, src, writer);
48133+
#if SIMDJSON_MINUS_ZERO_AS_FLOAT
48134+
if(i == 0 && negative) {
48135+
// We have to write -0.0 instead of 0
48136+
WRITE_DOUBLE(-0.0, src, writer);
48137+
} else {
48138+
WRITE_INTEGER(negative ? (~i+1) : i, src, writer);
48139+
}
48140+
#else
48141+
WRITE_INTEGER(negative ? (~i+1) : i, src, writer);
48142+
#endif
4801348143
}
4801448144
if (jsoncharutils::is_not_structural_or_whitespace(*p)) { return INVALID_NUMBER(src); }
4801548145
return SUCCESS;
@@ -48470,6 +48600,12 @@ simdjson_unused simdjson_inline simdjson_result<number_type> get_number_type(con
4847048600
if (simdjson_unlikely(digit_count == 19 && memcmp(src, smaller_big_integer, 19) > 0)) {
4847148601
return number_type::big_integer;
4847248602
}
48603+
#if SIMDJSON_MINUS_ZERO_AS_FLOAT
48604+
if(digit_count == 1 && src[0] == '0') {
48605+
// We have to write -0.0 instead of 0
48606+
return number_type::floating_point_number;
48607+
}
48608+
#endif
4847348609
return number_type::signed_integer;
4847448610
}
4847548611
// Let us check if we have a big integer (>=2**64).
@@ -53619,7 +53755,16 @@ simdjson_inline error_code parse_number(const uint8_t *const src, W &writer) {
5361953755
if (i > uint64_t(INT64_MAX)) {
5362053756
WRITE_UNSIGNED(i, src, writer);
5362153757
} else {
53622-
WRITE_INTEGER(negative ? (~i+1) : i, src, writer);
53758+
#if SIMDJSON_MINUS_ZERO_AS_FLOAT
53759+
if(i == 0 && negative) {
53760+
// We have to write -0.0 instead of 0
53761+
WRITE_DOUBLE(-0.0, src, writer);
53762+
} else {
53763+
WRITE_INTEGER(negative ? (~i+1) : i, src, writer);
53764+
}
53765+
#else
53766+
WRITE_INTEGER(negative ? (~i+1) : i, src, writer);
53767+
#endif
5362353768
}
5362453769
if (jsoncharutils::is_not_structural_or_whitespace(*p)) { return INVALID_NUMBER(src); }
5362553770
return SUCCESS;
@@ -54080,6 +54225,12 @@ simdjson_unused simdjson_inline simdjson_result<number_type> get_number_type(con
5408054225
if (simdjson_unlikely(digit_count == 19 && memcmp(src, smaller_big_integer, 19) > 0)) {
5408154226
return number_type::big_integer;
5408254227
}
54228+
#if SIMDJSON_MINUS_ZERO_AS_FLOAT
54229+
if(digit_count == 1 && src[0] == '0') {
54230+
// We have to write -0.0 instead of 0
54231+
return number_type::floating_point_number;
54232+
}
54233+
#endif
5408354234
return number_type::signed_integer;
5408454235
}
5408554236
// Let us check if we have a big integer (>=2**64).

0 commit comments

Comments
 (0)