diff --git a/CMakeLists.txt b/CMakeLists.txt index cdf0398e4..6ca301252 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 3.14) project( simdjson # The version number is modified by tools/release.py - VERSION 4.0.4 + VERSION 4.0.5 DESCRIPTION "Parsing gigabytes of JSON per second" HOMEPAGE_URL "https://simdjson.org/" LANGUAGES CXX C diff --git a/Doxyfile b/Doxyfile index 8a6613150..a5e26a063 100644 --- a/Doxyfile +++ b/Doxyfile @@ -38,7 +38,7 @@ PROJECT_NAME = simdjson # could be handy for archiving the generated documentation or if some version # control system is used. -PROJECT_NUMBER = "4.0.4" +PROJECT_NUMBER = "4.0.5" # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer a diff --git a/include/simdjson/simdjson_version.h b/include/simdjson/simdjson_version.h index 35baebf9f..c76eac1fd 100644 --- a/include/simdjson/simdjson_version.h +++ b/include/simdjson/simdjson_version.h @@ -4,7 +4,7 @@ #define SIMDJSON_SIMDJSON_VERSION_H /** The version of simdjson being used (major.minor.revision) */ -#define SIMDJSON_VERSION "4.0.4" +#define SIMDJSON_VERSION "4.0.5" namespace simdjson { enum { @@ -19,7 +19,7 @@ enum { /** * The revision (major.minor.REVISION) of simdjson being used. */ - SIMDJSON_VERSION_REVISION = 4 + SIMDJSON_VERSION_REVISION = 5 }; } // namespace simdjson diff --git a/singleheader/simdjson.cpp b/singleheader/simdjson.cpp index 09a1ed591..444793391 100644 --- a/singleheader/simdjson.cpp +++ b/singleheader/simdjson.cpp @@ -1,4 +1,4 @@ -/* auto-generated on 2025-09-17 18:58:25 -0600. version 4.0.4 Do not edit! */ +/* auto-generated on 2025-09-18 15:16:38 -0600. version 4.0.5 Do not edit! */ /* including simdjson.cpp: */ /* begin file simdjson.cpp */ #define SIMDJSON_SRC_SIMDJSON_CPP diff --git a/singleheader/simdjson.h b/singleheader/simdjson.h index 6060be00f..d43cba637 100644 --- a/singleheader/simdjson.h +++ b/singleheader/simdjson.h @@ -1,4 +1,4 @@ -/* auto-generated on 2025-09-17 18:58:25 -0600. version 4.0.4 Do not edit! */ +/* auto-generated on 2025-09-18 15:16:38 -0600. version 4.0.5 Do not edit! */ /* including simdjson.h: */ /* begin file simdjson.h */ #ifndef SIMDJSON_H @@ -2508,7 +2508,7 @@ namespace std { #define SIMDJSON_SIMDJSON_VERSION_H /** The version of simdjson being used (major.minor.revision) */ -#define SIMDJSON_VERSION "4.0.4" +#define SIMDJSON_VERSION "4.0.5" namespace simdjson { enum { @@ -2523,7 +2523,7 @@ enum { /** * The revision (major.minor.REVISION) of simdjson being used. */ - SIMDJSON_VERSION_REVISION = 4 + SIMDJSON_VERSION_REVISION = 5 }; } // namespace simdjson @@ -44853,7 +44853,9 @@ struct string_constant { */ class string_builder { public: - simdjson_inline string_builder(size_t initial_capacity = 1024); + simdjson_inline string_builder(size_t initial_capacity = DEFAULT_INITIAL_CAPACITY); + + static constexpr size_t DEFAULT_INITIAL_CAPACITY = 1024; /** * Append number (includes Booleans). Booleans are mapped to the strings @@ -45067,7 +45069,7 @@ private: #if !SIMDJSON_STATIC_REFLECTION // fallback implementation until we have static reflection template -simdjson_result to_json(const Z &z, size_t initial_capacity = 1024) { +simdjson_warn_unused simdjson_result to_json(const Z &z, size_t initial_capacity = simdjson::arm64::builder::string_builder::DEFAULT_INITIAL_CAPACITY) { simdjson::arm64::builder::string_builder b(initial_capacity); b.append(z); std::string_view s; @@ -45075,6 +45077,16 @@ simdjson_result to_json(const Z &z, size_t initial_capacity = 1024) if(e) { return e; } return std::string(s); } +template +simdjson_warn_unused simdjson_error to_json(const Z &z, std::string &s, size_t initial_capacity = simdjson::arm64::builder::string_builder::DEFAULT_INITIAL_CAPACITY) { + simdjson::arm64::builder::string_builder b(initial_capacity); + b.append(z); + std::string_view sv; + auto e = b.view().get(sv); + if(e) { return e; } + s.assign(sv.data(), sv.size()); + return simdjson::SUCCESS; +} #endif @@ -46038,7 +46050,7 @@ void append(string_builder &b, const Z &z) { } template -simdjson_result to_json_string(const Z &z, size_t initial_capacity = 1024) { +simdjson_warn_unused simdjson_result to_json_string(const Z &z, size_t initial_capacity = string_builder::DEFAULT_INITIAL_CAPACITY) { string_builder b(initial_capacity); append(b, z); std::string_view s; @@ -46047,8 +46059,8 @@ simdjson_result to_json_string(const Z &z, size_t initial_capacity } template -simdjson_error to_json(const Z &z, std::string &s) { - string_builder b; +simdjson_warn_unused simdjson_error to_json(const Z &z, std::string &s, size_t initial_capacity = string_builder::DEFAULT_INITIAL_CAPACITY) { + string_builder b(initial_capacity); append(b, z); std::string_view view; if(auto e = b.view().get(view); e) { return e; } @@ -46065,9 +46077,13 @@ string_builder& operator<<(string_builder& b, const Z& z) { } // namespace arm64 // Alias the function template to 'to' in the global namespace template -simdjson_result to_json(const Z &z, size_t initial_capacity = 1024) { +simdjson_warn_unused simdjson_result to_json(const Z &z, size_t initial_capacity = arm64::builder::string_builder::DEFAULT_INITIAL_CAPACITY) { return arm64::builder::to_json_string(z, initial_capacity); } +template +simdjson_warn_unused simdjson_error to_json(const Z &z, std::string &s, size_t initial_capacity = arm64::builder::string_builder::DEFAULT_INITIAL_CAPACITY) { + return arm64::builder::to_json(z, s, initial_capacity); +} } // namespace simdjson #endif // SIMDJSON_STATIC_REFLECTION @@ -57867,7 +57883,9 @@ struct string_constant { */ class string_builder { public: - simdjson_inline string_builder(size_t initial_capacity = 1024); + simdjson_inline string_builder(size_t initial_capacity = DEFAULT_INITIAL_CAPACITY); + + static constexpr size_t DEFAULT_INITIAL_CAPACITY = 1024; /** * Append number (includes Booleans). Booleans are mapped to the strings @@ -58081,7 +58099,7 @@ private: #if !SIMDJSON_STATIC_REFLECTION // fallback implementation until we have static reflection template -simdjson_result to_json(const Z &z, size_t initial_capacity = 1024) { +simdjson_warn_unused simdjson_result to_json(const Z &z, size_t initial_capacity = simdjson::fallback::builder::string_builder::DEFAULT_INITIAL_CAPACITY) { simdjson::fallback::builder::string_builder b(initial_capacity); b.append(z); std::string_view s; @@ -58089,6 +58107,16 @@ simdjson_result to_json(const Z &z, size_t initial_capacity = 1024) if(e) { return e; } return std::string(s); } +template +simdjson_warn_unused simdjson_error to_json(const Z &z, std::string &s, size_t initial_capacity = simdjson::fallback::builder::string_builder::DEFAULT_INITIAL_CAPACITY) { + simdjson::fallback::builder::string_builder b(initial_capacity); + b.append(z); + std::string_view sv; + auto e = b.view().get(sv); + if(e) { return e; } + s.assign(sv.data(), sv.size()); + return simdjson::SUCCESS; +} #endif @@ -59052,7 +59080,7 @@ void append(string_builder &b, const Z &z) { } template -simdjson_result to_json_string(const Z &z, size_t initial_capacity = 1024) { +simdjson_warn_unused simdjson_result to_json_string(const Z &z, size_t initial_capacity = string_builder::DEFAULT_INITIAL_CAPACITY) { string_builder b(initial_capacity); append(b, z); std::string_view s; @@ -59061,8 +59089,8 @@ simdjson_result to_json_string(const Z &z, size_t initial_capacity } template -simdjson_error to_json(const Z &z, std::string &s) { - string_builder b; +simdjson_warn_unused simdjson_error to_json(const Z &z, std::string &s, size_t initial_capacity = string_builder::DEFAULT_INITIAL_CAPACITY) { + string_builder b(initial_capacity); append(b, z); std::string_view view; if(auto e = b.view().get(view); e) { return e; } @@ -59079,9 +59107,13 @@ string_builder& operator<<(string_builder& b, const Z& z) { } // namespace fallback // Alias the function template to 'to' in the global namespace template -simdjson_result to_json(const Z &z, size_t initial_capacity = 1024) { +simdjson_warn_unused simdjson_result to_json(const Z &z, size_t initial_capacity = fallback::builder::string_builder::DEFAULT_INITIAL_CAPACITY) { return fallback::builder::to_json_string(z, initial_capacity); } +template +simdjson_warn_unused simdjson_error to_json(const Z &z, std::string &s, size_t initial_capacity = fallback::builder::string_builder::DEFAULT_INITIAL_CAPACITY) { + return fallback::builder::to_json(z, s, initial_capacity); +} } // namespace simdjson #endif // SIMDJSON_STATIC_REFLECTION @@ -71380,7 +71412,9 @@ struct string_constant { */ class string_builder { public: - simdjson_inline string_builder(size_t initial_capacity = 1024); + simdjson_inline string_builder(size_t initial_capacity = DEFAULT_INITIAL_CAPACITY); + + static constexpr size_t DEFAULT_INITIAL_CAPACITY = 1024; /** * Append number (includes Booleans). Booleans are mapped to the strings @@ -71594,7 +71628,7 @@ private: #if !SIMDJSON_STATIC_REFLECTION // fallback implementation until we have static reflection template -simdjson_result to_json(const Z &z, size_t initial_capacity = 1024) { +simdjson_warn_unused simdjson_result to_json(const Z &z, size_t initial_capacity = simdjson::haswell::builder::string_builder::DEFAULT_INITIAL_CAPACITY) { simdjson::haswell::builder::string_builder b(initial_capacity); b.append(z); std::string_view s; @@ -71602,6 +71636,16 @@ simdjson_result to_json(const Z &z, size_t initial_capacity = 1024) if(e) { return e; } return std::string(s); } +template +simdjson_warn_unused simdjson_error to_json(const Z &z, std::string &s, size_t initial_capacity = simdjson::haswell::builder::string_builder::DEFAULT_INITIAL_CAPACITY) { + simdjson::haswell::builder::string_builder b(initial_capacity); + b.append(z); + std::string_view sv; + auto e = b.view().get(sv); + if(e) { return e; } + s.assign(sv.data(), sv.size()); + return simdjson::SUCCESS; +} #endif @@ -72565,7 +72609,7 @@ void append(string_builder &b, const Z &z) { } template -simdjson_result to_json_string(const Z &z, size_t initial_capacity = 1024) { +simdjson_warn_unused simdjson_result to_json_string(const Z &z, size_t initial_capacity = string_builder::DEFAULT_INITIAL_CAPACITY) { string_builder b(initial_capacity); append(b, z); std::string_view s; @@ -72574,8 +72618,8 @@ simdjson_result to_json_string(const Z &z, size_t initial_capacity } template -simdjson_error to_json(const Z &z, std::string &s) { - string_builder b; +simdjson_warn_unused simdjson_error to_json(const Z &z, std::string &s, size_t initial_capacity = string_builder::DEFAULT_INITIAL_CAPACITY) { + string_builder b(initial_capacity); append(b, z); std::string_view view; if(auto e = b.view().get(view); e) { return e; } @@ -72592,9 +72636,13 @@ string_builder& operator<<(string_builder& b, const Z& z) { } // namespace haswell // Alias the function template to 'to' in the global namespace template -simdjson_result to_json(const Z &z, size_t initial_capacity = 1024) { +simdjson_warn_unused simdjson_result to_json(const Z &z, size_t initial_capacity = haswell::builder::string_builder::DEFAULT_INITIAL_CAPACITY) { return haswell::builder::to_json_string(z, initial_capacity); } +template +simdjson_warn_unused simdjson_error to_json(const Z &z, std::string &s, size_t initial_capacity = haswell::builder::string_builder::DEFAULT_INITIAL_CAPACITY) { + return haswell::builder::to_json(z, s, initial_capacity); +} } // namespace simdjson #endif // SIMDJSON_STATIC_REFLECTION @@ -84893,7 +84941,9 @@ struct string_constant { */ class string_builder { public: - simdjson_inline string_builder(size_t initial_capacity = 1024); + simdjson_inline string_builder(size_t initial_capacity = DEFAULT_INITIAL_CAPACITY); + + static constexpr size_t DEFAULT_INITIAL_CAPACITY = 1024; /** * Append number (includes Booleans). Booleans are mapped to the strings @@ -85107,7 +85157,7 @@ private: #if !SIMDJSON_STATIC_REFLECTION // fallback implementation until we have static reflection template -simdjson_result to_json(const Z &z, size_t initial_capacity = 1024) { +simdjson_warn_unused simdjson_result to_json(const Z &z, size_t initial_capacity = simdjson::icelake::builder::string_builder::DEFAULT_INITIAL_CAPACITY) { simdjson::icelake::builder::string_builder b(initial_capacity); b.append(z); std::string_view s; @@ -85115,6 +85165,16 @@ simdjson_result to_json(const Z &z, size_t initial_capacity = 1024) if(e) { return e; } return std::string(s); } +template +simdjson_warn_unused simdjson_error to_json(const Z &z, std::string &s, size_t initial_capacity = simdjson::icelake::builder::string_builder::DEFAULT_INITIAL_CAPACITY) { + simdjson::icelake::builder::string_builder b(initial_capacity); + b.append(z); + std::string_view sv; + auto e = b.view().get(sv); + if(e) { return e; } + s.assign(sv.data(), sv.size()); + return simdjson::SUCCESS; +} #endif @@ -86078,7 +86138,7 @@ void append(string_builder &b, const Z &z) { } template -simdjson_result to_json_string(const Z &z, size_t initial_capacity = 1024) { +simdjson_warn_unused simdjson_result to_json_string(const Z &z, size_t initial_capacity = string_builder::DEFAULT_INITIAL_CAPACITY) { string_builder b(initial_capacity); append(b, z); std::string_view s; @@ -86087,8 +86147,8 @@ simdjson_result to_json_string(const Z &z, size_t initial_capacity } template -simdjson_error to_json(const Z &z, std::string &s) { - string_builder b; +simdjson_warn_unused simdjson_error to_json(const Z &z, std::string &s, size_t initial_capacity = string_builder::DEFAULT_INITIAL_CAPACITY) { + string_builder b(initial_capacity); append(b, z); std::string_view view; if(auto e = b.view().get(view); e) { return e; } @@ -86105,9 +86165,13 @@ string_builder& operator<<(string_builder& b, const Z& z) { } // namespace icelake // Alias the function template to 'to' in the global namespace template -simdjson_result to_json(const Z &z, size_t initial_capacity = 1024) { +simdjson_warn_unused simdjson_result to_json(const Z &z, size_t initial_capacity = icelake::builder::string_builder::DEFAULT_INITIAL_CAPACITY) { return icelake::builder::to_json_string(z, initial_capacity); } +template +simdjson_warn_unused simdjson_error to_json(const Z &z, std::string &s, size_t initial_capacity = icelake::builder::string_builder::DEFAULT_INITIAL_CAPACITY) { + return icelake::builder::to_json(z, s, initial_capacity); +} } // namespace simdjson #endif // SIMDJSON_STATIC_REFLECTION @@ -98521,7 +98585,9 @@ struct string_constant { */ class string_builder { public: - simdjson_inline string_builder(size_t initial_capacity = 1024); + simdjson_inline string_builder(size_t initial_capacity = DEFAULT_INITIAL_CAPACITY); + + static constexpr size_t DEFAULT_INITIAL_CAPACITY = 1024; /** * Append number (includes Booleans). Booleans are mapped to the strings @@ -98735,7 +98801,7 @@ private: #if !SIMDJSON_STATIC_REFLECTION // fallback implementation until we have static reflection template -simdjson_result to_json(const Z &z, size_t initial_capacity = 1024) { +simdjson_warn_unused simdjson_result to_json(const Z &z, size_t initial_capacity = simdjson::ppc64::builder::string_builder::DEFAULT_INITIAL_CAPACITY) { simdjson::ppc64::builder::string_builder b(initial_capacity); b.append(z); std::string_view s; @@ -98743,6 +98809,16 @@ simdjson_result to_json(const Z &z, size_t initial_capacity = 1024) if(e) { return e; } return std::string(s); } +template +simdjson_warn_unused simdjson_error to_json(const Z &z, std::string &s, size_t initial_capacity = simdjson::ppc64::builder::string_builder::DEFAULT_INITIAL_CAPACITY) { + simdjson::ppc64::builder::string_builder b(initial_capacity); + b.append(z); + std::string_view sv; + auto e = b.view().get(sv); + if(e) { return e; } + s.assign(sv.data(), sv.size()); + return simdjson::SUCCESS; +} #endif @@ -99706,7 +99782,7 @@ void append(string_builder &b, const Z &z) { } template -simdjson_result to_json_string(const Z &z, size_t initial_capacity = 1024) { +simdjson_warn_unused simdjson_result to_json_string(const Z &z, size_t initial_capacity = string_builder::DEFAULT_INITIAL_CAPACITY) { string_builder b(initial_capacity); append(b, z); std::string_view s; @@ -99715,8 +99791,8 @@ simdjson_result to_json_string(const Z &z, size_t initial_capacity } template -simdjson_error to_json(const Z &z, std::string &s) { - string_builder b; +simdjson_warn_unused simdjson_error to_json(const Z &z, std::string &s, size_t initial_capacity = string_builder::DEFAULT_INITIAL_CAPACITY) { + string_builder b(initial_capacity); append(b, z); std::string_view view; if(auto e = b.view().get(view); e) { return e; } @@ -99733,9 +99809,13 @@ string_builder& operator<<(string_builder& b, const Z& z) { } // namespace ppc64 // Alias the function template to 'to' in the global namespace template -simdjson_result to_json(const Z &z, size_t initial_capacity = 1024) { +simdjson_warn_unused simdjson_result to_json(const Z &z, size_t initial_capacity = ppc64::builder::string_builder::DEFAULT_INITIAL_CAPACITY) { return ppc64::builder::to_json_string(z, initial_capacity); } +template +simdjson_warn_unused simdjson_error to_json(const Z &z, std::string &s, size_t initial_capacity = ppc64::builder::string_builder::DEFAULT_INITIAL_CAPACITY) { + return ppc64::builder::to_json(z, s, initial_capacity); +} } // namespace simdjson #endif // SIMDJSON_STATIC_REFLECTION @@ -112465,7 +112545,9 @@ struct string_constant { */ class string_builder { public: - simdjson_inline string_builder(size_t initial_capacity = 1024); + simdjson_inline string_builder(size_t initial_capacity = DEFAULT_INITIAL_CAPACITY); + + static constexpr size_t DEFAULT_INITIAL_CAPACITY = 1024; /** * Append number (includes Booleans). Booleans are mapped to the strings @@ -112679,7 +112761,7 @@ private: #if !SIMDJSON_STATIC_REFLECTION // fallback implementation until we have static reflection template -simdjson_result to_json(const Z &z, size_t initial_capacity = 1024) { +simdjson_warn_unused simdjson_result to_json(const Z &z, size_t initial_capacity = simdjson::westmere::builder::string_builder::DEFAULT_INITIAL_CAPACITY) { simdjson::westmere::builder::string_builder b(initial_capacity); b.append(z); std::string_view s; @@ -112687,6 +112769,16 @@ simdjson_result to_json(const Z &z, size_t initial_capacity = 1024) if(e) { return e; } return std::string(s); } +template +simdjson_warn_unused simdjson_error to_json(const Z &z, std::string &s, size_t initial_capacity = simdjson::westmere::builder::string_builder::DEFAULT_INITIAL_CAPACITY) { + simdjson::westmere::builder::string_builder b(initial_capacity); + b.append(z); + std::string_view sv; + auto e = b.view().get(sv); + if(e) { return e; } + s.assign(sv.data(), sv.size()); + return simdjson::SUCCESS; +} #endif @@ -113650,7 +113742,7 @@ void append(string_builder &b, const Z &z) { } template -simdjson_result to_json_string(const Z &z, size_t initial_capacity = 1024) { +simdjson_warn_unused simdjson_result to_json_string(const Z &z, size_t initial_capacity = string_builder::DEFAULT_INITIAL_CAPACITY) { string_builder b(initial_capacity); append(b, z); std::string_view s; @@ -113659,8 +113751,8 @@ simdjson_result to_json_string(const Z &z, size_t initial_capacity } template -simdjson_error to_json(const Z &z, std::string &s) { - string_builder b; +simdjson_warn_unused simdjson_error to_json(const Z &z, std::string &s, size_t initial_capacity = string_builder::DEFAULT_INITIAL_CAPACITY) { + string_builder b(initial_capacity); append(b, z); std::string_view view; if(auto e = b.view().get(view); e) { return e; } @@ -113677,9 +113769,13 @@ string_builder& operator<<(string_builder& b, const Z& z) { } // namespace westmere // Alias the function template to 'to' in the global namespace template -simdjson_result to_json(const Z &z, size_t initial_capacity = 1024) { +simdjson_warn_unused simdjson_result to_json(const Z &z, size_t initial_capacity = westmere::builder::string_builder::DEFAULT_INITIAL_CAPACITY) { return westmere::builder::to_json_string(z, initial_capacity); } +template +simdjson_warn_unused simdjson_error to_json(const Z &z, std::string &s, size_t initial_capacity = westmere::builder::string_builder::DEFAULT_INITIAL_CAPACITY) { + return westmere::builder::to_json(z, s, initial_capacity); +} } // namespace simdjson #endif // SIMDJSON_STATIC_REFLECTION @@ -125886,7 +125982,9 @@ struct string_constant { */ class string_builder { public: - simdjson_inline string_builder(size_t initial_capacity = 1024); + simdjson_inline string_builder(size_t initial_capacity = DEFAULT_INITIAL_CAPACITY); + + static constexpr size_t DEFAULT_INITIAL_CAPACITY = 1024; /** * Append number (includes Booleans). Booleans are mapped to the strings @@ -126100,7 +126198,7 @@ private: #if !SIMDJSON_STATIC_REFLECTION // fallback implementation until we have static reflection template -simdjson_result to_json(const Z &z, size_t initial_capacity = 1024) { +simdjson_warn_unused simdjson_result to_json(const Z &z, size_t initial_capacity = simdjson::lsx::builder::string_builder::DEFAULT_INITIAL_CAPACITY) { simdjson::lsx::builder::string_builder b(initial_capacity); b.append(z); std::string_view s; @@ -126108,6 +126206,16 @@ simdjson_result to_json(const Z &z, size_t initial_capacity = 1024) if(e) { return e; } return std::string(s); } +template +simdjson_warn_unused simdjson_error to_json(const Z &z, std::string &s, size_t initial_capacity = simdjson::lsx::builder::string_builder::DEFAULT_INITIAL_CAPACITY) { + simdjson::lsx::builder::string_builder b(initial_capacity); + b.append(z); + std::string_view sv; + auto e = b.view().get(sv); + if(e) { return e; } + s.assign(sv.data(), sv.size()); + return simdjson::SUCCESS; +} #endif @@ -127071,7 +127179,7 @@ void append(string_builder &b, const Z &z) { } template -simdjson_result to_json_string(const Z &z, size_t initial_capacity = 1024) { +simdjson_warn_unused simdjson_result to_json_string(const Z &z, size_t initial_capacity = string_builder::DEFAULT_INITIAL_CAPACITY) { string_builder b(initial_capacity); append(b, z); std::string_view s; @@ -127080,8 +127188,8 @@ simdjson_result to_json_string(const Z &z, size_t initial_capacity } template -simdjson_error to_json(const Z &z, std::string &s) { - string_builder b; +simdjson_warn_unused simdjson_error to_json(const Z &z, std::string &s, size_t initial_capacity = string_builder::DEFAULT_INITIAL_CAPACITY) { + string_builder b(initial_capacity); append(b, z); std::string_view view; if(auto e = b.view().get(view); e) { return e; } @@ -127098,9 +127206,13 @@ string_builder& operator<<(string_builder& b, const Z& z) { } // namespace lsx // Alias the function template to 'to' in the global namespace template -simdjson_result to_json(const Z &z, size_t initial_capacity = 1024) { +simdjson_warn_unused simdjson_result to_json(const Z &z, size_t initial_capacity = lsx::builder::string_builder::DEFAULT_INITIAL_CAPACITY) { return lsx::builder::to_json_string(z, initial_capacity); } +template +simdjson_warn_unused simdjson_error to_json(const Z &z, std::string &s, size_t initial_capacity = lsx::builder::string_builder::DEFAULT_INITIAL_CAPACITY) { + return lsx::builder::to_json(z, s, initial_capacity); +} } // namespace simdjson #endif // SIMDJSON_STATIC_REFLECTION @@ -139320,7 +139432,9 @@ struct string_constant { */ class string_builder { public: - simdjson_inline string_builder(size_t initial_capacity = 1024); + simdjson_inline string_builder(size_t initial_capacity = DEFAULT_INITIAL_CAPACITY); + + static constexpr size_t DEFAULT_INITIAL_CAPACITY = 1024; /** * Append number (includes Booleans). Booleans are mapped to the strings @@ -139534,7 +139648,7 @@ private: #if !SIMDJSON_STATIC_REFLECTION // fallback implementation until we have static reflection template -simdjson_result to_json(const Z &z, size_t initial_capacity = 1024) { +simdjson_warn_unused simdjson_result to_json(const Z &z, size_t initial_capacity = simdjson::lasx::builder::string_builder::DEFAULT_INITIAL_CAPACITY) { simdjson::lasx::builder::string_builder b(initial_capacity); b.append(z); std::string_view s; @@ -139542,6 +139656,16 @@ simdjson_result to_json(const Z &z, size_t initial_capacity = 1024) if(e) { return e; } return std::string(s); } +template +simdjson_warn_unused simdjson_error to_json(const Z &z, std::string &s, size_t initial_capacity = simdjson::lasx::builder::string_builder::DEFAULT_INITIAL_CAPACITY) { + simdjson::lasx::builder::string_builder b(initial_capacity); + b.append(z); + std::string_view sv; + auto e = b.view().get(sv); + if(e) { return e; } + s.assign(sv.data(), sv.size()); + return simdjson::SUCCESS; +} #endif @@ -140505,7 +140629,7 @@ void append(string_builder &b, const Z &z) { } template -simdjson_result to_json_string(const Z &z, size_t initial_capacity = 1024) { +simdjson_warn_unused simdjson_result to_json_string(const Z &z, size_t initial_capacity = string_builder::DEFAULT_INITIAL_CAPACITY) { string_builder b(initial_capacity); append(b, z); std::string_view s; @@ -140514,8 +140638,8 @@ simdjson_result to_json_string(const Z &z, size_t initial_capacity } template -simdjson_error to_json(const Z &z, std::string &s) { - string_builder b; +simdjson_warn_unused simdjson_error to_json(const Z &z, std::string &s, size_t initial_capacity = string_builder::DEFAULT_INITIAL_CAPACITY) { + string_builder b(initial_capacity); append(b, z); std::string_view view; if(auto e = b.view().get(view); e) { return e; } @@ -140532,9 +140656,13 @@ string_builder& operator<<(string_builder& b, const Z& z) { } // namespace lasx // Alias the function template to 'to' in the global namespace template -simdjson_result to_json(const Z &z, size_t initial_capacity = 1024) { +simdjson_warn_unused simdjson_result to_json(const Z &z, size_t initial_capacity = lasx::builder::string_builder::DEFAULT_INITIAL_CAPACITY) { return lasx::builder::to_json_string(z, initial_capacity); } +template +simdjson_warn_unused simdjson_error to_json(const Z &z, std::string &s, size_t initial_capacity = lasx::builder::string_builder::DEFAULT_INITIAL_CAPACITY) { + return lasx::builder::to_json(z, s, initial_capacity); +} } // namespace simdjson #endif // SIMDJSON_STATIC_REFLECTION diff --git a/singleheader/singleheader.zip b/singleheader/singleheader.zip index b88c12d2f..9c3e6c26c 100644 Binary files a/singleheader/singleheader.zip and b/singleheader/singleheader.zip differ