1 #ifndef SIMDJSON_GENERIC_ONDEMAND_JSON_TYPE_H
3 #ifndef SIMDJSON_CONDITIONAL_INCLUDE
4 #define SIMDJSON_GENERIC_ONDEMAND_JSON_TYPE_H
5 #include "simdjson/generic/ondemand/base.h"
6 #include "simdjson/generic/implementation_simdjson_result_base.h"
7 #include "simdjson/generic/numberparsing.h"
11 namespace SIMDJSON_IMPLEMENTATION {
50 simdjson_inline
bool is_uint64()
const noexcept;
54 simdjson_inline uint64_t
get_uint64()
const noexcept;
55 simdjson_inline
operator uint64_t()
const noexcept;
61 simdjson_inline
bool is_int64()
const noexcept;
65 simdjson_inline int64_t
get_int64()
const noexcept;
66 simdjson_inline
operator int64_t()
const noexcept;
73 simdjson_inline
bool is_double()
const noexcept;
77 simdjson_inline
double get_double()
const noexcept;
78 simdjson_inline
operator double()
const noexcept;
84 simdjson_inline
double as_double()
const noexcept;
95 friend error_code numberparsing::write_float(
const uint8_t *
const src,
bool negative, uint64_t i,
const uint8_t * start_digits,
size_t digit_count, int64_t exponent, W &writer);
97 friend error_code numberparsing::parse_number(
const uint8_t *
const src, W &writer);
115 double floating_point_number;
116 int64_t signed_integer;
117 uint64_t unsigned_integer;
119 number_type type{number_type::signed_integer};
130 #if SIMDJSON_EXCEPTIONS
140 inline std::ostream&
operator<<(std::ostream& out, simdjson_result<json_type> &type) noexcept(
false);
A forward-only JSON array.
An ephemeral JSON value returned during iteration.
simdjson::SIMDJSON_IMPLEMENTATION::number_type number_type
std::ostream & operator<<(std::ostream &out, json_type type) noexcept
Write the JSON type to the output stream.
json_type
The type of a JSON value.
@ boolean
A JSON boolean (true or false)
@ object
A JSON object ( { "a": 1, "b" 2, ... } )
@ number
A JSON number ( 1 or -2.3 or 4.5e6 ...)
@ string
A JSON string ( "a" or "hello world\n" ...)
The top level simdjson namespace, containing everything the library provides.
error_code
All possible errors returned by simdjson.
The result of a simdjson operation that could fail.
A type representing a JSON number.
friend class value_iterator
The next block of declaration is designed so that we can call the number parsing functions on a numbe...
simdjson_inline bool is_int64() const noexcept
return true if the automatically determined type of the number is number_type::signed_integer.
simdjson_inline double as_double() const noexcept
Convert the number to a double.
simdjson_inline bool is_double() const noexcept
return true if the automatically determined type of the number is number_type::floating_point_number.
simdjson_inline ondemand::number_type get_number_type() const noexcept
return the automatically determined type of the number: number_type::floating_point_number,...
simdjson_inline int64_t get_int64() const noexcept
return the value as a int64_t, only valid if is_int64() is true.
union simdjson::SIMDJSON_IMPLEMENTATION::ondemand::number::@0 payload
End of friend declarations.
simdjson_inline void append_u64(uint64_t value) noexcept
Store an unsigned 64-bit value to the number.
simdjson_inline double get_double() const noexcept
return the value as a double, only valid if is_double() is true.
simdjson_inline void skip_double() noexcept
Specifies that the value is a double, but leave it undefined.
simdjson_inline void append_s64(int64_t value) noexcept
Store a signed 64-bit value to the number.
simdjson_inline void append_double(double value) noexcept
Store a double value to the number.
simdjson_inline bool is_uint64() const noexcept
return true if the automatically determined type of the number is number_type::unsigned_integer.
simdjson_inline uint64_t get_uint64() const noexcept
return the value as a uint64_t, only valid if is_uint64() is true.
The result of a simdjson operation that could fail.
simdjson_inline error_code error() const noexcept
The error.
simdjson_inline T & value() &noexcept(false)
Get the result value.