Require value to be deleted after most value conversions
This commit is contained in:
parent
21fe42b28c
commit
26d7881b80
|
@ -44,7 +44,9 @@ simdjson_really_inline document::operator raw_json_string() & noexcept(false) {
|
|||
simdjson_really_inline document::operator bool() noexcept(false) { return as_value(); }
|
||||
#endif
|
||||
|
||||
simdjson_really_inline simdjson_result<array::iterator> document::begin() & noexcept { return as_value().begin(); }
|
||||
simdjson_really_inline simdjson_result<array::iterator> document::begin() & noexcept {
|
||||
return as_value().get_array().begin();
|
||||
}
|
||||
simdjson_really_inline simdjson_result<array::iterator> document::end() & noexcept { return {}; }
|
||||
simdjson_really_inline simdjson_result<value> document::operator[](std::string_view key) & noexcept { return as_value()[key]; }
|
||||
|
||||
|
|
|
@ -33,94 +33,119 @@ simdjson_really_inline value value::start(json_iterator_ref &&iter) noexcept {
|
|||
return { std::forward<json_iterator_ref>(iter), iter->advance() };
|
||||
}
|
||||
|
||||
simdjson_really_inline simdjson_result<array> value::get_array() noexcept {
|
||||
simdjson_really_inline simdjson_result<array> value::get_array() && noexcept {
|
||||
if (*json != '[') {
|
||||
log_error("not an array");
|
||||
iter.release(); // Communicate that we have handled the value PERF TODO elided, right?
|
||||
return INCORRECT_TYPE;
|
||||
}
|
||||
return array::started(std::move(iter));
|
||||
return array::started(std::forward<json_iterator_ref>(iter));
|
||||
}
|
||||
simdjson_really_inline simdjson_result<object> value::get_object() noexcept {
|
||||
simdjson_really_inline simdjson_result<object> value::get_object() && noexcept {
|
||||
if (*json != '{') {
|
||||
log_error("not an object");
|
||||
iter.release(); // Communicate that we have handled the value PERF TODO elided, right?
|
||||
return INCORRECT_TYPE;
|
||||
}
|
||||
return object::started(std::move(iter));
|
||||
return object::started(std::forward<json_iterator_ref>(iter));
|
||||
}
|
||||
simdjson_really_inline simdjson_result<raw_json_string> value::get_raw_json_string() noexcept {
|
||||
simdjson_really_inline simdjson_result<raw_json_string> value::get_raw_json_string() && noexcept {
|
||||
log_value("string");
|
||||
if (*json != '"') { log_error("not a string"); return INCORRECT_TYPE; }
|
||||
auto result = raw_json_string{&json[1]};
|
||||
iter.release(); // Communicate that we have handled the value PERF TODO elided, right?
|
||||
return result;
|
||||
}
|
||||
simdjson_really_inline simdjson_result<std::string_view> value::get_string() noexcept {
|
||||
log_value("string");
|
||||
if (*json != '"') { log_error("not a string"); return INCORRECT_TYPE; }
|
||||
return raw_json_string{&json[1]};
|
||||
}
|
||||
simdjson_really_inline simdjson_result<std::string_view> value::get_string() && noexcept {
|
||||
log_value("string");
|
||||
if (*json != '"') {
|
||||
log_error("not a string");
|
||||
iter.release(); // Communicate that we have handled the value PERF TODO elided, right?
|
||||
return INCORRECT_TYPE;
|
||||
}
|
||||
auto result = raw_json_string{&json[1]}.unescape(iter->current_string_buf_loc);
|
||||
iter.release(); // Communicate that we have handled the value PERF TODO elided, right?
|
||||
return result;
|
||||
}
|
||||
simdjson_really_inline simdjson_result<double> value::get_double() noexcept {
|
||||
simdjson_really_inline simdjson_result<double> value::get_double() && noexcept {
|
||||
log_value("double");
|
||||
iter.release(); // Communicate that we have handled the value PERF TODO elided, right?
|
||||
double result;
|
||||
error_code error;
|
||||
if ((error = stage2::numberparsing::parse_double(json).get(result))) { log_error("not a double"); return error; }
|
||||
iter.release(); // Communicate that we have handled the value PERF TODO elided, right?
|
||||
return result;
|
||||
}
|
||||
simdjson_really_inline simdjson_result<uint64_t> value::get_uint64() noexcept {
|
||||
simdjson_really_inline simdjson_result<uint64_t> value::get_uint64() && noexcept {
|
||||
log_value("unsigned");
|
||||
iter.release(); // Communicate that we have handled the value PERF TODO elided, right?
|
||||
uint64_t result;
|
||||
error_code error;
|
||||
if ((error = stage2::numberparsing::parse_unsigned(json).get(result))) { log_error("not a unsigned integer"); return error; }
|
||||
iter.release(); // Communicate that we have handled the value PERF TODO elided, right?
|
||||
return result;
|
||||
}
|
||||
simdjson_really_inline simdjson_result<int64_t> value::get_int64() noexcept {
|
||||
simdjson_really_inline simdjson_result<int64_t> value::get_int64() && noexcept {
|
||||
log_value("integer");
|
||||
iter.release(); // Communicate that we have handled the value PERF TODO elided, right?
|
||||
int64_t result;
|
||||
error_code error;
|
||||
if ((error = stage2::numberparsing::parse_integer(json).get(result))) { log_error("not an integer"); return error; }
|
||||
iter.release(); // Communicate that we have handled the value PERF TODO elided, right?
|
||||
return result;
|
||||
}
|
||||
simdjson_really_inline simdjson_result<bool> value::get_bool() noexcept {
|
||||
simdjson_really_inline simdjson_result<bool> value::get_bool() && noexcept {
|
||||
log_value("bool");
|
||||
iter.release(); // Communicate that we have handled the value PERF TODO elided, right?
|
||||
auto not_true = stage2::atomparsing::str4ncmp(json, "true");
|
||||
auto not_false = stage2::atomparsing::str4ncmp(json, "fals") | (json[4] ^ 'e');
|
||||
bool error = (not_true && not_false) || stage2::is_not_structural_or_whitespace(json[not_true ? 5 : 4]);
|
||||
if (error) { log_error("not a boolean"); return INCORRECT_TYPE; }
|
||||
iter.release(); // Communicate that we have handled the value PERF TODO elided, right?
|
||||
return simdjson_result<bool>(!not_true, error ? INCORRECT_TYPE : SUCCESS);
|
||||
}
|
||||
simdjson_really_inline bool value::is_null() noexcept {
|
||||
simdjson_really_inline bool value::is_null() & noexcept {
|
||||
log_value("null");
|
||||
// Since it's a *reference*, we may want to check something other than is_null() if it isn't null,
|
||||
// so we don't release the iterator unless it is actually null
|
||||
if (stage2::atomparsing::str4ncmp(json, "null")) { return false; }
|
||||
iter.release(); // Communicate that we have handled the value PERF TODO elided, right?
|
||||
return true;
|
||||
}
|
||||
simdjson_really_inline bool value::is_null() && noexcept {
|
||||
log_value("null");
|
||||
iter.release(); // Communicate that we have handled the value PERF TODO elided, right?
|
||||
if (stage2::atomparsing::str4ncmp(json, "null")) { return false; }
|
||||
return true;
|
||||
}
|
||||
|
||||
#if SIMDJSON_EXCEPTIONS
|
||||
simdjson_really_inline value::operator array() noexcept(false) { return get_array(); }
|
||||
simdjson_really_inline value::operator object() noexcept(false) { return get_object(); }
|
||||
simdjson_really_inline value::operator uint64_t() noexcept(false) { return get_uint64(); }
|
||||
simdjson_really_inline value::operator int64_t() noexcept(false) { return get_int64(); }
|
||||
simdjson_really_inline value::operator double() noexcept(false) { return get_double(); }
|
||||
simdjson_really_inline value::operator std::string_view() noexcept(false) { return get_string(); }
|
||||
simdjson_really_inline value::operator raw_json_string() noexcept(false) { return get_raw_json_string(); }
|
||||
simdjson_really_inline value::operator bool() noexcept(false) { return get_bool(); }
|
||||
simdjson_really_inline value::operator array() && noexcept(false) {
|
||||
return std::forward<value>(*this).get_array();
|
||||
}
|
||||
simdjson_really_inline value::operator object() && noexcept(false) {
|
||||
return std::forward<value>(*this).get_object();
|
||||
}
|
||||
simdjson_really_inline value::operator uint64_t() && noexcept(false) {
|
||||
return std::forward<value>(*this).get_uint64();
|
||||
}
|
||||
simdjson_really_inline value::operator int64_t() && noexcept(false) {
|
||||
return std::forward<value>(*this).get_int64();
|
||||
}
|
||||
simdjson_really_inline value::operator double() && noexcept(false) {
|
||||
return std::forward<value>(*this).get_double();
|
||||
}
|
||||
simdjson_really_inline value::operator std::string_view() && noexcept(false) {
|
||||
return std::forward<value>(*this).get_string();
|
||||
}
|
||||
simdjson_really_inline value::operator raw_json_string() && noexcept(false) {
|
||||
return std::forward<value>(*this).get_raw_json_string();
|
||||
}
|
||||
simdjson_really_inline value::operator bool() && noexcept(false) {
|
||||
return std::forward<value>(*this).get_bool();
|
||||
}
|
||||
#endif
|
||||
|
||||
simdjson_really_inline simdjson_result<array::iterator> value::begin() noexcept { return get_array().begin(); }
|
||||
simdjson_really_inline simdjson_result<array::iterator> value::end() noexcept { return {}; }
|
||||
// TODO this CANNOT be reused. Each time you try, it will get you a new object.
|
||||
// Probably make it move-only to avoid this issue.
|
||||
simdjson_really_inline simdjson_result<value> value::operator[](std::string_view key) noexcept {
|
||||
return get_object()[key];
|
||||
simdjson_really_inline simdjson_result<value> value::operator[](std::string_view key) && noexcept {
|
||||
return std::forward<value>(*this).get_object()[key];
|
||||
}
|
||||
simdjson_really_inline simdjson_result<value> value::operator[](const char *key) noexcept {
|
||||
return get_object()[key];
|
||||
simdjson_really_inline simdjson_result<value> value::operator[](const char *key) && noexcept {
|
||||
return std::forward<value>(*this).get_object()[key];
|
||||
}
|
||||
|
||||
simdjson_really_inline void value::log_value(const char *type) const noexcept {
|
||||
|
@ -163,90 +188,94 @@ simdjson_really_inline simdjson_result<SIMDJSON_IMPLEMENTATION::ondemand::value>
|
|||
|
||||
simdjson_really_inline simdjson_result<SIMDJSON_IMPLEMENTATION::ondemand::array::iterator> simdjson_result<SIMDJSON_IMPLEMENTATION::ondemand::value>::begin() noexcept {
|
||||
if (error()) { return error(); }
|
||||
return std::move(first.begin());
|
||||
return std::move(first).get_array().begin();
|
||||
}
|
||||
simdjson_really_inline simdjson_result<SIMDJSON_IMPLEMENTATION::ondemand::array::iterator> simdjson_result<SIMDJSON_IMPLEMENTATION::ondemand::value>::end() noexcept {
|
||||
if (error()) { return error(); }
|
||||
return std::move(first.end());
|
||||
return {};
|
||||
}
|
||||
simdjson_really_inline simdjson_result<SIMDJSON_IMPLEMENTATION::ondemand::value> simdjson_result<SIMDJSON_IMPLEMENTATION::ondemand::value>::operator[](std::string_view key) noexcept {
|
||||
if (error()) { return error(); }
|
||||
return first[key];
|
||||
return std::forward<SIMDJSON_IMPLEMENTATION::ondemand::value>(first)[key];
|
||||
}
|
||||
simdjson_really_inline simdjson_result<SIMDJSON_IMPLEMENTATION::ondemand::value> simdjson_result<SIMDJSON_IMPLEMENTATION::ondemand::value>::operator[](const char *key) noexcept {
|
||||
if (error()) { return error(); }
|
||||
return first[key];
|
||||
return std::forward<SIMDJSON_IMPLEMENTATION::ondemand::value>(first)[key];
|
||||
}
|
||||
|
||||
simdjson_really_inline simdjson_result<SIMDJSON_IMPLEMENTATION::ondemand::array> simdjson_result<SIMDJSON_IMPLEMENTATION::ondemand::value>::get_array() noexcept {
|
||||
simdjson_really_inline simdjson_result<SIMDJSON_IMPLEMENTATION::ondemand::array> simdjson_result<SIMDJSON_IMPLEMENTATION::ondemand::value>::get_array() && noexcept {
|
||||
if (error()) { return error(); }
|
||||
return first.get_array();
|
||||
return std::forward<SIMDJSON_IMPLEMENTATION::ondemand::value>(first).get_array();
|
||||
}
|
||||
simdjson_really_inline simdjson_result<SIMDJSON_IMPLEMENTATION::ondemand::object> simdjson_result<SIMDJSON_IMPLEMENTATION::ondemand::value>::get_object() noexcept {
|
||||
simdjson_really_inline simdjson_result<SIMDJSON_IMPLEMENTATION::ondemand::object> simdjson_result<SIMDJSON_IMPLEMENTATION::ondemand::value>::get_object() && noexcept {
|
||||
if (error()) { return error(); }
|
||||
return first.get_object();
|
||||
return std::forward<SIMDJSON_IMPLEMENTATION::ondemand::value>(first).get_object();
|
||||
}
|
||||
simdjson_really_inline simdjson_result<uint64_t> simdjson_result<SIMDJSON_IMPLEMENTATION::ondemand::value>::get_uint64() noexcept {
|
||||
simdjson_really_inline simdjson_result<uint64_t> simdjson_result<SIMDJSON_IMPLEMENTATION::ondemand::value>::get_uint64() && noexcept {
|
||||
if (error()) { return error(); }
|
||||
return first.get_uint64();
|
||||
return std::forward<SIMDJSON_IMPLEMENTATION::ondemand::value>(first).get_uint64();
|
||||
}
|
||||
simdjson_really_inline simdjson_result<int64_t> simdjson_result<SIMDJSON_IMPLEMENTATION::ondemand::value>::get_int64() noexcept {
|
||||
simdjson_really_inline simdjson_result<int64_t> simdjson_result<SIMDJSON_IMPLEMENTATION::ondemand::value>::get_int64() && noexcept {
|
||||
if (error()) { return error(); }
|
||||
return first.get_int64();
|
||||
return std::forward<SIMDJSON_IMPLEMENTATION::ondemand::value>(first).get_int64();
|
||||
}
|
||||
simdjson_really_inline simdjson_result<double> simdjson_result<SIMDJSON_IMPLEMENTATION::ondemand::value>::get_double() noexcept {
|
||||
simdjson_really_inline simdjson_result<double> simdjson_result<SIMDJSON_IMPLEMENTATION::ondemand::value>::get_double() && noexcept {
|
||||
if (error()) { return error(); }
|
||||
return first.get_double();
|
||||
return std::forward<SIMDJSON_IMPLEMENTATION::ondemand::value>(first).get_double();
|
||||
}
|
||||
simdjson_really_inline simdjson_result<std::string_view> simdjson_result<SIMDJSON_IMPLEMENTATION::ondemand::value>::get_string() noexcept {
|
||||
simdjson_really_inline simdjson_result<std::string_view> simdjson_result<SIMDJSON_IMPLEMENTATION::ondemand::value>::get_string() && noexcept {
|
||||
if (error()) { return error(); }
|
||||
return first.get_string();
|
||||
return std::forward<SIMDJSON_IMPLEMENTATION::ondemand::value>(first).get_string();
|
||||
}
|
||||
simdjson_really_inline simdjson_result<SIMDJSON_IMPLEMENTATION::ondemand::raw_json_string> simdjson_result<SIMDJSON_IMPLEMENTATION::ondemand::value>::get_raw_json_string() noexcept {
|
||||
simdjson_really_inline simdjson_result<SIMDJSON_IMPLEMENTATION::ondemand::raw_json_string> simdjson_result<SIMDJSON_IMPLEMENTATION::ondemand::value>::get_raw_json_string() && noexcept {
|
||||
if (error()) { return error(); }
|
||||
return first.get_raw_json_string();
|
||||
return std::forward<SIMDJSON_IMPLEMENTATION::ondemand::value>(first).get_raw_json_string();
|
||||
}
|
||||
simdjson_really_inline simdjson_result<bool> simdjson_result<SIMDJSON_IMPLEMENTATION::ondemand::value>::get_bool() noexcept {
|
||||
simdjson_really_inline simdjson_result<bool> simdjson_result<SIMDJSON_IMPLEMENTATION::ondemand::value>::get_bool() && noexcept {
|
||||
if (error()) { return error(); }
|
||||
return first.get_bool();
|
||||
return std::forward<SIMDJSON_IMPLEMENTATION::ondemand::value>(first).get_bool();
|
||||
}
|
||||
simdjson_really_inline bool simdjson_result<SIMDJSON_IMPLEMENTATION::ondemand::value>::is_null() noexcept {
|
||||
simdjson_really_inline bool simdjson_result<SIMDJSON_IMPLEMENTATION::ondemand::value>::is_null() & noexcept {
|
||||
if (error()) { return false; }
|
||||
return first.is_null();
|
||||
}
|
||||
simdjson_really_inline bool simdjson_result<SIMDJSON_IMPLEMENTATION::ondemand::value>::is_null() && noexcept {
|
||||
if (error()) { return false; }
|
||||
return std::forward<SIMDJSON_IMPLEMENTATION::ondemand::value>(first).is_null();
|
||||
}
|
||||
|
||||
#if SIMDJSON_EXCEPTIONS
|
||||
simdjson_really_inline simdjson_result<SIMDJSON_IMPLEMENTATION::ondemand::value>::operator SIMDJSON_IMPLEMENTATION::ondemand::array() noexcept(false) {
|
||||
simdjson_really_inline simdjson_result<SIMDJSON_IMPLEMENTATION::ondemand::value>::operator SIMDJSON_IMPLEMENTATION::ondemand::array() && noexcept(false) {
|
||||
if (error()) { throw simdjson_error(error()); }
|
||||
return first;
|
||||
return std::forward<SIMDJSON_IMPLEMENTATION::ondemand::value>(first);
|
||||
}
|
||||
simdjson_really_inline simdjson_result<SIMDJSON_IMPLEMENTATION::ondemand::value>::operator SIMDJSON_IMPLEMENTATION::ondemand::object() noexcept(false) {
|
||||
simdjson_really_inline simdjson_result<SIMDJSON_IMPLEMENTATION::ondemand::value>::operator SIMDJSON_IMPLEMENTATION::ondemand::object() && noexcept(false) {
|
||||
if (error()) { throw simdjson_error(error()); }
|
||||
return first;
|
||||
return std::forward<SIMDJSON_IMPLEMENTATION::ondemand::value>(first);
|
||||
}
|
||||
simdjson_really_inline simdjson_result<SIMDJSON_IMPLEMENTATION::ondemand::value>::operator uint64_t() noexcept(false) {
|
||||
simdjson_really_inline simdjson_result<SIMDJSON_IMPLEMENTATION::ondemand::value>::operator uint64_t() && noexcept(false) {
|
||||
if (error()) { throw simdjson_error(error()); }
|
||||
return first;
|
||||
return std::forward<SIMDJSON_IMPLEMENTATION::ondemand::value>(first);
|
||||
}
|
||||
simdjson_really_inline simdjson_result<SIMDJSON_IMPLEMENTATION::ondemand::value>::operator int64_t() noexcept(false) {
|
||||
simdjson_really_inline simdjson_result<SIMDJSON_IMPLEMENTATION::ondemand::value>::operator int64_t() && noexcept(false) {
|
||||
if (error()) { throw simdjson_error(error()); }
|
||||
return first;
|
||||
return std::forward<SIMDJSON_IMPLEMENTATION::ondemand::value>(first);
|
||||
}
|
||||
simdjson_really_inline simdjson_result<SIMDJSON_IMPLEMENTATION::ondemand::value>::operator double() noexcept(false) {
|
||||
simdjson_really_inline simdjson_result<SIMDJSON_IMPLEMENTATION::ondemand::value>::operator double() && noexcept(false) {
|
||||
if (error()) { throw simdjson_error(error()); }
|
||||
return first;
|
||||
return std::forward<SIMDJSON_IMPLEMENTATION::ondemand::value>(first);
|
||||
}
|
||||
simdjson_really_inline simdjson_result<SIMDJSON_IMPLEMENTATION::ondemand::value>::operator std::string_view() noexcept(false) {
|
||||
simdjson_really_inline simdjson_result<SIMDJSON_IMPLEMENTATION::ondemand::value>::operator std::string_view() && noexcept(false) {
|
||||
if (error()) { throw simdjson_error(error()); }
|
||||
return first;
|
||||
return std::forward<SIMDJSON_IMPLEMENTATION::ondemand::value>(first);
|
||||
}
|
||||
simdjson_really_inline simdjson_result<SIMDJSON_IMPLEMENTATION::ondemand::value>::operator SIMDJSON_IMPLEMENTATION::ondemand::raw_json_string() noexcept(false) {
|
||||
simdjson_really_inline simdjson_result<SIMDJSON_IMPLEMENTATION::ondemand::value>::operator SIMDJSON_IMPLEMENTATION::ondemand::raw_json_string() && noexcept(false) {
|
||||
if (error()) { throw simdjson_error(error()); }
|
||||
return first;
|
||||
return std::forward<SIMDJSON_IMPLEMENTATION::ondemand::value>(first);
|
||||
}
|
||||
simdjson_really_inline simdjson_result<SIMDJSON_IMPLEMENTATION::ondemand::value>::operator bool() noexcept(false) {
|
||||
simdjson_really_inline simdjson_result<SIMDJSON_IMPLEMENTATION::ondemand::value>::operator bool() && noexcept(false) {
|
||||
if (error()) { throw simdjson_error(error()); }
|
||||
return first;
|
||||
return std::forward<SIMDJSON_IMPLEMENTATION::ondemand::value>(first);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
|
@ -27,31 +27,30 @@ public:
|
|||
// TODO assert if two values are ever alive at the same time, to ensure they get destroyed
|
||||
simdjson_really_inline ~value() noexcept;
|
||||
simdjson_really_inline void skip() noexcept;
|
||||
simdjson_really_inline simdjson_result<array> get_array() noexcept;
|
||||
simdjson_really_inline simdjson_result<object> get_object() noexcept;
|
||||
simdjson_really_inline simdjson_result<uint64_t> get_uint64() noexcept;
|
||||
simdjson_really_inline simdjson_result<int64_t> get_int64() noexcept;
|
||||
simdjson_really_inline simdjson_result<double> get_double() noexcept;
|
||||
simdjson_really_inline simdjson_result<std::string_view> get_string() noexcept;
|
||||
simdjson_really_inline simdjson_result<raw_json_string> get_raw_json_string() noexcept;
|
||||
simdjson_really_inline simdjson_result<bool> get_bool() noexcept;
|
||||
simdjson_really_inline bool is_null() noexcept;
|
||||
simdjson_really_inline simdjson_result<array> get_array() && noexcept;
|
||||
simdjson_really_inline simdjson_result<object> get_object() && noexcept;
|
||||
simdjson_really_inline simdjson_result<uint64_t> get_uint64() && noexcept;
|
||||
simdjson_really_inline simdjson_result<int64_t> get_int64() && noexcept;
|
||||
simdjson_really_inline simdjson_result<double> get_double() && noexcept;
|
||||
simdjson_really_inline simdjson_result<std::string_view> get_string() && noexcept;
|
||||
simdjson_really_inline simdjson_result<raw_json_string> get_raw_json_string() && noexcept;
|
||||
simdjson_really_inline simdjson_result<bool> get_bool() && noexcept;
|
||||
simdjson_really_inline bool is_null() & noexcept;
|
||||
simdjson_really_inline bool is_null() && noexcept;
|
||||
|
||||
#if SIMDJSON_EXCEPTIONS
|
||||
simdjson_really_inline operator array() noexcept(false);
|
||||
simdjson_really_inline operator object() noexcept(false);
|
||||
simdjson_really_inline operator uint64_t() noexcept(false);
|
||||
simdjson_really_inline operator int64_t() noexcept(false);
|
||||
simdjson_really_inline operator double() noexcept(false);
|
||||
simdjson_really_inline operator std::string_view() noexcept(false);
|
||||
simdjson_really_inline operator raw_json_string() noexcept(false);
|
||||
simdjson_really_inline operator bool() noexcept(false);
|
||||
simdjson_really_inline operator array() && noexcept(false);
|
||||
simdjson_really_inline operator object() && noexcept(false);
|
||||
simdjson_really_inline operator uint64_t() && noexcept(false);
|
||||
simdjson_really_inline operator int64_t() && noexcept(false);
|
||||
simdjson_really_inline operator double() && noexcept(false);
|
||||
simdjson_really_inline operator std::string_view() && noexcept(false);
|
||||
simdjson_really_inline operator raw_json_string() && noexcept(false);
|
||||
simdjson_really_inline operator bool() && noexcept(false);
|
||||
#endif
|
||||
|
||||
simdjson_really_inline simdjson_result<array::iterator> begin() noexcept;
|
||||
simdjson_really_inline simdjson_result<array::iterator> end() noexcept;
|
||||
simdjson_really_inline simdjson_result<value> operator[](std::string_view key) noexcept;
|
||||
simdjson_really_inline simdjson_result<value> operator[](const char *key) noexcept;
|
||||
simdjson_really_inline simdjson_result<value> operator[](std::string_view key) && noexcept;
|
||||
simdjson_really_inline simdjson_result<value> operator[](const char *key) && noexcept;
|
||||
|
||||
protected:
|
||||
/**
|
||||
|
@ -98,25 +97,26 @@ public:
|
|||
simdjson_really_inline simdjson_result(SIMDJSON_IMPLEMENTATION::ondemand::value &&value, error_code error) noexcept; ///< @private
|
||||
simdjson_really_inline simdjson_result(error_code error) noexcept; ///< @private
|
||||
|
||||
simdjson_really_inline simdjson_result<SIMDJSON_IMPLEMENTATION::ondemand::array> get_array() noexcept;
|
||||
simdjson_really_inline simdjson_result<SIMDJSON_IMPLEMENTATION::ondemand::object> get_object() noexcept;
|
||||
simdjson_really_inline simdjson_result<uint64_t> get_uint64() noexcept;
|
||||
simdjson_really_inline simdjson_result<int64_t> get_int64() noexcept;
|
||||
simdjson_really_inline simdjson_result<double> get_double() noexcept;
|
||||
simdjson_really_inline simdjson_result<std::string_view> get_string() noexcept;
|
||||
simdjson_really_inline simdjson_result<SIMDJSON_IMPLEMENTATION::ondemand::raw_json_string> get_raw_json_string() noexcept;
|
||||
simdjson_really_inline simdjson_result<bool> get_bool() noexcept;
|
||||
simdjson_really_inline bool is_null() noexcept;
|
||||
simdjson_really_inline simdjson_result<SIMDJSON_IMPLEMENTATION::ondemand::array> get_array() && noexcept;
|
||||
simdjson_really_inline simdjson_result<SIMDJSON_IMPLEMENTATION::ondemand::object> get_object() && noexcept;
|
||||
simdjson_really_inline simdjson_result<uint64_t> get_uint64() && noexcept;
|
||||
simdjson_really_inline simdjson_result<int64_t> get_int64() && noexcept;
|
||||
simdjson_really_inline simdjson_result<double> get_double() && noexcept;
|
||||
simdjson_really_inline simdjson_result<std::string_view> get_string() && noexcept;
|
||||
simdjson_really_inline simdjson_result<SIMDJSON_IMPLEMENTATION::ondemand::raw_json_string> get_raw_json_string() && noexcept;
|
||||
simdjson_really_inline simdjson_result<bool> get_bool() && noexcept;
|
||||
simdjson_really_inline bool is_null() & noexcept;
|
||||
simdjson_really_inline bool is_null() && noexcept;
|
||||
|
||||
#if SIMDJSON_EXCEPTIONS
|
||||
simdjson_really_inline operator SIMDJSON_IMPLEMENTATION::ondemand::array() noexcept(false);
|
||||
simdjson_really_inline operator SIMDJSON_IMPLEMENTATION::ondemand::object() noexcept(false);
|
||||
simdjson_really_inline operator uint64_t() noexcept(false);
|
||||
simdjson_really_inline operator int64_t() noexcept(false);
|
||||
simdjson_really_inline operator double() noexcept(false);
|
||||
simdjson_really_inline operator std::string_view() noexcept(false);
|
||||
simdjson_really_inline operator SIMDJSON_IMPLEMENTATION::ondemand::raw_json_string() noexcept(false);
|
||||
simdjson_really_inline operator bool() noexcept(false);
|
||||
simdjson_really_inline operator SIMDJSON_IMPLEMENTATION::ondemand::array() && noexcept(false);
|
||||
simdjson_really_inline operator SIMDJSON_IMPLEMENTATION::ondemand::object() && noexcept(false);
|
||||
simdjson_really_inline operator uint64_t() && noexcept(false);
|
||||
simdjson_really_inline operator int64_t() && noexcept(false);
|
||||
simdjson_really_inline operator double() && noexcept(false);
|
||||
simdjson_really_inline operator std::string_view() && noexcept(false);
|
||||
simdjson_really_inline operator SIMDJSON_IMPLEMENTATION::ondemand::raw_json_string() && noexcept(false);
|
||||
simdjson_really_inline operator bool() && noexcept(false);
|
||||
#endif
|
||||
|
||||
simdjson_really_inline simdjson_result<SIMDJSON_IMPLEMENTATION::ondemand::array::iterator> begin() noexcept;
|
||||
|
|
Loading…
Reference in New Issue