JSON BinPack  0.0.1
A space-efficient open-source binary JSON serialization format based on JSON Schema with both schema-driven and schema-less support.
sourcemeta::jsonbinpack::FLOOR_TYPED_ARRAY Struct Reference

The encoding consists of the length of the array minus minimum encoded as a Base-128 64-bit Little Endian variable-length unsigned integer followed by the elements of the array encoded in order. The encoding of the element at index i is either prefix_encodings[i] if set, or encoding. More...

#include <runtime_plan.h>

Public Attributes

const std::uint64_t minimum
 The minimum length of the array.
 
const SinglePlan encoding
 Element encoding.
 
const MultiplePlans prefix_encodings
 Positional encodings.
 

Detailed Description

The encoding consists of the length of the array minus minimum encoded as a Base-128 64-bit Little Endian variable-length unsigned integer followed by the elements of the array encoded in order. The encoding of the element at index i is either prefix_encodings[i] if set, or encoding.

Options

Option Type Description
minimum uint The minimum length of the array
prefixEncodings encoding[] Positional encodings
encoding encoding Element encoding

Conditions

Condition Description
len(value) >= minimum The length of the array must be greater than or equal to the minimum

Examples

TODO: Give an example of an array with more than 8-bit of elements

Given the array [ true, false, 5 ] where the minimum is 1, the prefixEncodings corresponds to BYTE_CHOICE_INDEX with choices [ false, true ] and BYTE_CHOICE_INDEX with choices [ false, true ] and encoding corresponds to BOUNDED_MULTIPLE_8BITS_ENUM_FIXED with minimum 0 and maximum 255, the encoding results in:

+------+------+------+------+
| 0x02 | 0x01 | 0x00 | 0x05 |
+------+------+------+------+
size true false 5