SIRIUS 7.5.0
Electronic structure library and applications
|
deserialization of CBOR, MessagePack, and UBJSON values More...
#include <nlohmann_json.hpp>
Public Member Functions | |
binary_reader (InputAdapterType &&adapter, const input_format_t format=input_format_t::json) noexcept | |
create a binary reader More... | |
binary_reader (const binary_reader &)=delete | |
binary_reader (binary_reader &&)=default | |
binary_reader & | operator= (const binary_reader &)=delete |
binary_reader & | operator= (binary_reader &&)=default |
bool | sax_parse (const input_format_t format, json_sax_t *sax_, const bool strict=true, const cbor_tag_handler_t tag_handler=cbor_tag_handler_t::error) |
Private Types | |
using | number_integer_t = typename BasicJsonType::number_integer_t |
using | number_unsigned_t = typename BasicJsonType::number_unsigned_t |
using | number_float_t = typename BasicJsonType::number_float_t |
using | string_t = typename BasicJsonType::string_t |
using | binary_t = typename BasicJsonType::binary_t |
using | json_sax_t = SAX |
using | char_type = typename InputAdapterType::char_type |
using | char_int_type = typename std::char_traits< char_type >::int_type |
using | bjd_type = std::pair< char_int_type, string_t > |
Private Member Functions | |
bool | parse_bson_internal () |
Reads in a BSON-object and passes it to the SAX-parser. More... | |
bool | get_bson_cstr (string_t &result) |
Parses a C-style string from the BSON input. More... | |
template<typename NumberType > | |
bool | get_bson_string (const NumberType len, string_t &result) |
Parses a zero-terminated string of length len from the BSON input. More... | |
template<typename NumberType > | |
bool | get_bson_binary (const NumberType len, binary_t &result) |
Parses a byte array input of length len from the BSON input. More... | |
bool | parse_bson_element_internal (const char_int_type element_type, const std::size_t element_type_parse_position) |
Read a BSON document element of the given element_type. More... | |
bool | parse_bson_element_list (const bool is_array) |
Read a BSON element list (as specified in the BSON-spec) More... | |
bool | parse_bson_array () |
Reads an array from the BSON input and passes it to the SAX-parser. More... | |
bool | parse_cbor_internal (const bool get_char, const cbor_tag_handler_t tag_handler) |
bool | get_cbor_string (string_t &result) |
reads a CBOR string More... | |
bool | get_cbor_binary (binary_t &result) |
reads a CBOR byte array More... | |
bool | get_cbor_array (const std::size_t len, const cbor_tag_handler_t tag_handler) |
bool | get_cbor_object (const std::size_t len, const cbor_tag_handler_t tag_handler) |
bool | parse_msgpack_internal () |
bool | get_msgpack_string (string_t &result) |
reads a MessagePack string More... | |
bool | get_msgpack_binary (binary_t &result) |
reads a MessagePack byte array More... | |
bool | get_msgpack_array (const std::size_t len) |
bool | get_msgpack_object (const std::size_t len) |
bool | parse_ubjson_internal (const bool get_char=true) |
bool | get_ubjson_string (string_t &result, const bool get_char=true) |
reads a UBJSON string More... | |
bool | get_ubjson_ndarray_size (std::vector< size_t > &dim) |
bool | get_ubjson_size_value (std::size_t &result, bool &is_ndarray, char_int_type prefix=0) |
bool | get_ubjson_size_type (std::pair< std::size_t, char_int_type > &result, bool inside_ndarray=false) |
determine the type and size for a container More... | |
bool | get_ubjson_value (const char_int_type prefix) |
bool | get_ubjson_array () |
bool | get_ubjson_object () |
bool | get_ubjson_high_precision_number () |
char_int_type | get () |
get next character from the input More... | |
char_int_type | get_ignore_noop () |
template<typename NumberType , bool InputIsLittleEndian = false> | |
bool | get_number (const input_format_t format, NumberType &result) |
template<typename NumberType > | |
bool | get_string (const input_format_t format, const NumberType len, string_t &result) |
create a string by reading characters from the input More... | |
template<typename NumberType > | |
bool | get_binary (const input_format_t format, const NumberType len, binary_t &result) |
create a byte array by reading bytes from the input More... | |
bool | unexpect_eof (const input_format_t format, const char *context) const |
std::string | get_token_string () const |
std::string | exception_message (const input_format_t format, const std::string &detail, const std::string &context) const |
Private Attributes | |
InputAdapterType | ia |
input adapter More... | |
char_int_type | current = std::char_traits<char_type>::eof() |
the current character More... | |
std::size_t | chars_read = 0 |
the number of characters read More... | |
const bool | is_little_endian = little_endianness() |
whether we can assume little endianness More... | |
const input_format_t | input_format = input_format_t::json |
input format More... | |
json_sax_t * | sax = nullptr |
the SAX parser More... | |
JSON_PRIVATE_UNLESS_TESTED | __pad0__: const decltype(JSON_BINARY_READER_MAKE_BJD_OPTIMIZED_TYPE_MARKERS_) bjd_optimized_type_markers = JSON_BINARY_READER_MAKE_BJD_OPTIMIZED_TYPE_MARKERS_ |
const decltype(JSON_BINARY_READER_MAKE_BJD_TYPES_MAP_) | bjd_types_map |
Static Private Attributes | |
static JSON_INLINE_VARIABLE constexpr std::size_t | npos = static_cast<std::size_t>(-1) |
deserialization of CBOR, MessagePack, and UBJSON values
Definition at line 9145 of file nlohmann_json.hpp.
|
private |
Definition at line 9147 of file nlohmann_json.hpp.
|
private |
Definition at line 9148 of file nlohmann_json.hpp.
|
private |
Definition at line 9149 of file nlohmann_json.hpp.
|
private |
Definition at line 9150 of file nlohmann_json.hpp.
|
private |
Definition at line 9151 of file nlohmann_json.hpp.
|
private |
Definition at line 9152 of file nlohmann_json.hpp.
|
private |
Definition at line 9153 of file nlohmann_json.hpp.
|
private |
Definition at line 9154 of file nlohmann_json.hpp.
|
private |
Definition at line 12073 of file nlohmann_json.hpp.
|
inlineexplicitnoexcept |
create a binary reader
[in] | adapter | input adapter to read from |
Definition at line 9162 of file nlohmann_json.hpp.
|
inline |
[in] | format | the binary format to parse |
[in] | sax_ | a SAX event processor |
[in] | strict | whether to expect the input to be consumed completed |
[in] | tag_handler | how to treat CBOR tags |
Definition at line 9183 of file nlohmann_json.hpp.
|
inlineprivate |
Reads in a BSON-object and passes it to the SAX-parser.
Definition at line 9246 of file nlohmann_json.hpp.
|
inlineprivate |
Parses a C-style string from the BSON input.
[in,out] | result | A reference to the string variable where the read string is to be stored. |
true
if the \x00-byte indicating the end of the string was encountered before the EOF; false` indicates an unexpected EOF. Definition at line 9271 of file nlohmann_json.hpp.
|
inlineprivate |
Parses a zero-terminated string of length len from the BSON input.
[in] | len | The length (including the zero-byte at the end) of the string to be read. |
[in,out] | result | A reference to the string variable where the read string is to be stored. |
NumberType | The type of the length len |
true
if the string was successfully parsed Definition at line 9301 of file nlohmann_json.hpp.
|
inlineprivate |
Parses a byte array input of length len from the BSON input.
[in] | len | The length of the byte array to be read. |
[in,out] | result | A reference to the binary variable where the read array is to be stored. |
NumberType | The type of the length len |
true
if the byte array was successfully parsed Definition at line 9323 of file nlohmann_json.hpp.
|
inlineprivate |
Read a BSON document element of the given element_type.
[in] | element_type | The BSON element type, c.f. http://bsonspec.org/spec.html |
[in] | element_type_parse_position | The position in the input stream, where the element_type was read. |
Definition at line 9350 of file nlohmann_json.hpp.
|
inlineprivate |
Read a BSON element list (as specified in the BSON-spec)
The same binary layout is used for objects and arrays, hence it must be indicated with the argument is_array which one is expected (true --> array, false --> object).
[in] | is_array | Determines if the element list being read is to be treated as an object (is_array == false), or as an array (is_array == true). |
Definition at line 9430 of file nlohmann_json.hpp.
|
inlineprivate |
Reads an array from the BSON input and passes it to the SAX-parser.
Definition at line 9468 of file nlohmann_json.hpp.
|
inlineprivate |
[in] | get_char | whether a new character should be retrieved from the input (true) or whether the last read character should be considered instead (false) |
[in] | tag_handler | how CBOR tags should be treated |
Definition at line 9498 of file nlohmann_json.hpp.
|
inlineprivate |
reads a CBOR string
This function first reads starting bytes to determine the expected string length and then copies this number of bytes into a string. Additionally, CBOR's strings with indefinite lengths are supported.
[out] | result | created string |
Definition at line 9989 of file nlohmann_json.hpp.
|
inlineprivate |
reads a CBOR byte array
This function first reads starting bytes to determine the expected byte array length and then copies this number of bytes into the byte array. Additionally, CBOR's byte arrays with indefinite lengths are supported.
[out] | result | created byte array |
Definition at line 10085 of file nlohmann_json.hpp.
|
inlineprivate |
[in] | len | the length of the array or static_cast<std::size_t>(-1) for an array of indefinite size |
[in] | tag_handler | how CBOR tags should be treated |
Definition at line 10180 of file nlohmann_json.hpp.
|
inlineprivate |
[in] | len | the length of the object or static_cast<std::size_t>(-1) for an object of indefinite size |
[in] | tag_handler | how CBOR tags should be treated |
Definition at line 10218 of file nlohmann_json.hpp.
|
inlineprivate |
Definition at line 10274 of file nlohmann_json.hpp.
|
inlineprivate |
reads a MessagePack string
This function first reads starting bytes to determine the expected string length and then copies this number of bytes into a string.
[out] | result | created string |
Definition at line 10655 of file nlohmann_json.hpp.
|
inlineprivate |
reads a MessagePack byte array
This function first reads starting bytes to determine the expected byte array length and then copies this number of bytes into a byte array.
[out] | result | created byte array |
Definition at line 10738 of file nlohmann_json.hpp.
|
inlineprivate |
[in] | len | the length of the array |
Definition at line 10849 of file nlohmann_json.hpp.
|
inlineprivate |
[in] | len | the length of the object |
Definition at line 10871 of file nlohmann_json.hpp.
|
inlineprivate |
[in] | get_char | whether a new character should be retrieved from the input (true, default) or whether the last read character should be considered instead |
Definition at line 10908 of file nlohmann_json.hpp.
|
inlineprivate |
reads a UBJSON string
This function is either called after reading the 'S' byte explicitly indicating a string, or in case of an object key where the 'S' byte can be left out.
[out] | result | created string |
[in] | get_char | whether a new character should be retrieved from the input (true, default) or whether the last read character should be considered instead |
Definition at line 10927 of file nlohmann_json.hpp.
|
inlineprivate |
[out] | dim | an integer vector storing the ND array dimensions |
Definition at line 11022 of file nlohmann_json.hpp.
|
inlineprivate |
[out] | result | determined size |
[in,out] | is_ndarray | for input, true means already inside an ndarray vector or ndarray dimension is not allowed; false means ndarray is allowed; for output, true means an ndarray is found; is_ndarray can only return true when its initial value is false |
[in] | prefix | type marker if already read, otherwise set to 0 |
Definition at line 11087 of file nlohmann_json.hpp.
|
inlineprivate |
determine the type and size for a container
In the optimized UBJSON format, a type and a size can be provided to allow for a more compact representation.
[out] | result | pair of the size and the type |
[in] | inside_ndarray | whether the parser is parsing an ND array dimensional vector |
Definition at line 11310 of file nlohmann_json.hpp.
|
inlineprivate |
prefix | the previously read or set type prefix |
Definition at line 11377 of file nlohmann_json.hpp.
|
inlineprivate |
Definition at line 11560 of file nlohmann_json.hpp.
|
inlineprivate |
Definition at line 11668 of file nlohmann_json.hpp.
|
inlineprivate |
Definition at line 11751 of file nlohmann_json.hpp.
|
inlineprivate |
get next character from the input
This function provides the interface to the used input adapter. It does not throw in case the input reached EOF, but returns a -'ve valued std::char_traits<char_type>::eof()
in that case.
Definition at line 11830 of file nlohmann_json.hpp.
|
inlineprivate |
Definition at line 11839 of file nlohmann_json.hpp.
|
inlineprivate |
Definition at line 11866 of file nlohmann_json.hpp.
|
inlineprivate |
create a string by reading characters from the input
NumberType | the type of the number |
[in] | format | the current format (for diagnostics) |
[in] | len | number of characters to read |
[out] | result | string created by reading len bytes |
Definition at line 11909 of file nlohmann_json.hpp.
|
inlineprivate |
create a byte array by reading bytes from the input
NumberType | the type of the number |
[in] | format | the current format (for diagnostics) |
[in] | len | number of bytes to read |
[out] | result | byte array created by reading len bytes |
Definition at line 11942 of file nlohmann_json.hpp.
|
inlineprivate |
[in] | format | the current format (for diagnostics) |
[in] | context | further context information (for diagnostics) |
Definition at line 11966 of file nlohmann_json.hpp.
|
inlineprivate |
Definition at line 11979 of file nlohmann_json.hpp.
|
inlineprivate |
[in] | format | the current format |
[in] | detail | a detailed error message |
[in] | context | further context information |
Definition at line 11992 of file nlohmann_json.hpp.
|
staticconstexprprivate |
Definition at line 12029 of file nlohmann_json.hpp.
|
private |
input adapter
Definition at line 12032 of file nlohmann_json.hpp.
|
private |
the current character
Definition at line 12035 of file nlohmann_json.hpp.
|
private |
the number of characters read
Definition at line 12038 of file nlohmann_json.hpp.
|
private |
whether we can assume little endianness
Definition at line 12041 of file nlohmann_json.hpp.
|
private |
input format
Definition at line 12044 of file nlohmann_json.hpp.
|
private |
the SAX parser
Definition at line 12047 of file nlohmann_json.hpp.
|
private |
Definition at line 12067 of file nlohmann_json.hpp.
|
private |
Definition at line 12075 of file nlohmann_json.hpp.