2#ifndef SIMDJSON_CONVERT_H
3#define SIMDJSON_CONVERT_H
5#include "simdjson/ondemand.h"
8#if SIMDJSON_SUPPORTS_CONCEPTS
21template <
typename parser_type = ondemand::parser*>
25 ondemand::document m_doc;
29 static constexpr bool is_nothrow_gettable =
requires(ondemand::document doc) {
30 { doc.get<T>() }
noexcept;
33 explicit auto_parser(parser_type &&parser, ondemand::document &&doc)
noexcept requires(!std::is_pointer_v<parser_type>);
34 explicit auto_parser(parser_type &&parser, padded_string_view
const str)
noexcept requires(!std::is_pointer_v<parser_type>);
35 explicit auto_parser(std::remove_pointer_t<parser_type> &parser, ondemand::document &&doc)
noexcept requires(std::is_pointer_v<parser_type>);
36 explicit auto_parser(std::remove_pointer_t<parser_type> &parser, padded_string_view
const str)
noexcept requires(std::is_pointer_v<parser_type>);
37 explicit auto_parser(padded_string_view
const str)
noexcept requires(std::is_pointer_v<parser_type>);
38 explicit auto_parser(parser_type parser, ondemand::document &&doc)
noexcept requires(std::is_pointer_v<parser_type>);
39 auto_parser(auto_parser
const &) =
delete;
40 auto_parser &operator=(auto_parser
const &) =
delete;
41 auto_parser(auto_parser &&) noexcept = default;
42 auto_parser &operator=(auto_parser &&) noexcept = default;
43 ~auto_parser() = default;
45 simdjson_warn_unused std::remove_pointer_t<parser_type> &parser() noexcept;
48 simdjson_warn_unused simdjson_inline simdjson_result<T> result() noexcept(is_nothrow_gettable<T>);
50 simdjson_warn_unused simdjson_inline error_code get(T &value) && noexcept(is_nothrow_gettable<T>);
53 simdjson_warn_unused simdjson_inline simdjson_result<ondemand::array> array() noexcept;
54 simdjson_warn_unused simdjson_inline simdjson_result<ondemand::
object>
object() noexcept;
55 simdjson_warn_unused simdjson_inline simdjson_result<ondemand::number> number() noexcept;
58#if SIMDJSON_EXCEPTIONS
60 simdjson_warn_unused simdjson_inline
explicit(
false)
operator T() noexcept(false);
64 simdjson_warn_unused simdjson_inline std::optional<T> optional() noexcept(is_nothrow_gettable<T>);
73template <typename T =
void>
75 T operator()(simdjson_result<ondemand::value> &val)
const noexcept;
76 auto operator()(padded_string_view
const str)
const noexcept;
77 auto operator()(ondemand::parser &parser, padded_string_view
const str)
const noexcept;
81 auto operator()(std::string str)
const noexcept;
82 auto operator()(ondemand::parser &parser, std::string str)
const noexcept;
85auto_parser(padded_string_view
const str) -> auto_parser<ondemand::parser*>;
116static constexpr convert::internal::to_adaptor<> from{};
The top level simdjson namespace, containing everything the library provides.
error_code
All possible errors returned by simdjson.