📝 documentation
This commit is contained in:
parent
10bad9381d
commit
241eea0c0e
1 changed files with 24 additions and 7 deletions
31
src/json.hpp
31
src/json.hpp
|
@ -5543,8 +5543,9 @@ class binary_reader
|
|||
/*!
|
||||
@brief reads a UBJSON string
|
||||
|
||||
This function first reads starting bytes to determine the expected
|
||||
string length and then copies this number of bytes into a 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.
|
||||
|
||||
@param[in] get_char whether a new character should be retrieved from the
|
||||
input (true, default) or whether the last read
|
||||
|
@ -5559,7 +5560,7 @@ class binary_reader
|
|||
{
|
||||
if (get_char)
|
||||
{
|
||||
get();
|
||||
get(); // TODO: may we ignore N here?
|
||||
}
|
||||
|
||||
check_eof();
|
||||
|
@ -5584,6 +5585,14 @@ class binary_reader
|
|||
}
|
||||
}
|
||||
|
||||
/*!
|
||||
@brief 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.
|
||||
|
||||
@return pair of the size and the type
|
||||
*/
|
||||
std::pair<std::size_t, int> get_ubjson_size_type()
|
||||
{
|
||||
std::size_t sz = std::string::npos;
|
||||
|
@ -5593,14 +5602,16 @@ class binary_reader
|
|||
|
||||
if (current == '$')
|
||||
{
|
||||
get(); // must not ignore 'N', because 'N' maybe the type
|
||||
tc = get(); // must not ignore 'N', because 'N' maybe the type
|
||||
check_eof();
|
||||
tc = current;
|
||||
|
||||
get_ignore_noop();
|
||||
if (current != '#')
|
||||
{
|
||||
assert(false);
|
||||
std::stringstream ss;
|
||||
ss << std::setw(2) << std::uppercase << std::setfill('0') << std::hex << current;
|
||||
JSON_THROW(parse_error::create(112, chars_read,
|
||||
"expected '#' after UBJSON type information; last byte: 0x" + ss.str()));
|
||||
}
|
||||
sz = parse_ubjson_internal();
|
||||
}
|
||||
|
@ -5646,7 +5657,13 @@ class binary_reader
|
|||
{
|
||||
get();
|
||||
check_eof();
|
||||
assert(0 <= current and current <= 127);
|
||||
if (JSON_UNLIKELY(not(0 <= current and current <= 127)))
|
||||
{
|
||||
std::stringstream ss;
|
||||
ss << std::setw(2) << std::uppercase << std::setfill('0') << std::hex << current;
|
||||
JSON_THROW(parse_error::create(113, chars_read,
|
||||
"byte after 'C' must be in range 0x00..0x7F; last byte: 0x" + ss.str()));
|
||||
}
|
||||
return std::string(1, static_cast<char>(current));
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue