WPILibC++ 2023.4.3
|
Contains types, constants and functions shared by both the encoding and decoding portions of MPack. More...
Macros | |
#define | MPACK_VERSION_MAJOR 1 |
The major version number of MPack. More... | |
#define | MPACK_VERSION_MINOR 1 |
The minor version number of MPack. More... | |
#define | MPACK_VERSION_PATCH 0 |
The patch version number of MPack. More... | |
#define | MPACK_VERSION |
A number containing the version number of MPack for comparison purposes. More... | |
#define | MPACK_VERSION_AT_LEAST(major, minor, patch) (MPACK_VERSION >= (((major) * 10000) + ((minor) * 100) + (patch))) |
A macro to test for a minimum version of MPack. More... | |
#define | MPACK_VERSION_STRING |
A string containing the MPack version. More... | |
#define | MPACK_LIBRARY_STRING |
A string describing MPack, containing the library name, version and debug mode. More... | |
Typedefs | |
typedef enum mpack_error_t | mpack_error_t |
Error states for MPack objects. More... | |
typedef enum mpack_type_t | mpack_type_t |
Defines the type of a MessagePack tag. More... | |
typedef struct mpack_tag_t | mpack_tag_t |
An MPack tag is a MessagePack object header. More... | |
Enumerations | |
enum | mpack_error_t { mpack_ok = 0 , mpack_error_io = 2 , mpack_error_invalid , mpack_error_unsupported , mpack_error_type , mpack_error_too_big , mpack_error_memory , mpack_error_bug , mpack_error_data , mpack_error_eof } |
Error states for MPack objects. More... | |
enum | mpack_type_t { mpack_type_missing = 0 , mpack_type_nil , mpack_type_bool , mpack_type_int , mpack_type_uint , mpack_type_float , mpack_type_double , mpack_type_str , mpack_type_bin , mpack_type_array , mpack_type_map } |
Defines the type of a MessagePack tag. More... | |
Functions | |
const char * | mpack_error_to_string (mpack_error_t error) |
Converts an MPack error to a string. More... | |
const char * | mpack_type_to_string (mpack_type_t type) |
Converts an MPack type to a string. More... | |
Tag Generators | |
MPACK_INLINE mpack_tag_t | mpack_tag_make_nil (void) |
Generates a nil tag. More... | |
MPACK_INLINE mpack_tag_t | mpack_tag_make_bool (bool value) |
Generates a bool tag. More... | |
MPACK_INLINE mpack_tag_t | mpack_tag_make_true (void) |
Generates a bool tag with value true. More... | |
MPACK_INLINE mpack_tag_t | mpack_tag_make_false (void) |
Generates a bool tag with value false. More... | |
MPACK_INLINE mpack_tag_t | mpack_tag_make_int (int64_t value) |
Generates a signed int tag. More... | |
MPACK_INLINE mpack_tag_t | mpack_tag_make_uint (uint64_t value) |
Generates an unsigned int tag. More... | |
MPACK_INLINE mpack_tag_t | mpack_tag_make_float (float value) |
Generates a float tag. More... | |
MPACK_INLINE mpack_tag_t | mpack_tag_make_double (double value) |
Generates a double tag. More... | |
MPACK_INLINE mpack_tag_t | mpack_tag_make_array (uint32_t count) |
Generates an array tag. More... | |
MPACK_INLINE mpack_tag_t | mpack_tag_make_map (uint32_t count) |
Generates a map tag. More... | |
MPACK_INLINE mpack_tag_t | mpack_tag_make_str (uint32_t length) |
Generates a str tag. More... | |
MPACK_INLINE mpack_tag_t | mpack_tag_make_bin (uint32_t length) |
Generates a bin tag. More... | |
#define | MPACK_TAG_ZERO {(mpack_type_t)0, {0}} |
An mpack_tag_t initializer that zeroes the given tag. More... | |
Tag Querying Functions | |
MPACK_INLINE mpack_type_t | mpack_tag_type (mpack_tag_t *tag) |
Gets the type of a tag. More... | |
MPACK_INLINE bool | mpack_tag_bool_value (mpack_tag_t *tag) |
Gets the boolean value of a bool-type tag. More... | |
MPACK_INLINE int64_t | mpack_tag_int_value (mpack_tag_t *tag) |
Gets the signed integer value of an int-type tag. More... | |
MPACK_INLINE uint64_t | mpack_tag_uint_value (mpack_tag_t *tag) |
Gets the unsigned integer value of a uint-type tag. More... | |
MPACK_INLINE float | mpack_tag_float_value (mpack_tag_t *tag) |
Gets the float value of a float-type tag. More... | |
MPACK_INLINE double | mpack_tag_double_value (mpack_tag_t *tag) |
Gets the double value of a double-type tag. More... | |
MPACK_INLINE uint32_t | mpack_tag_array_count (mpack_tag_t *tag) |
Gets the number of elements in an array tag. More... | |
MPACK_INLINE uint32_t | mpack_tag_map_count (mpack_tag_t *tag) |
Gets the number of key-value pairs in a map tag. More... | |
MPACK_INLINE uint32_t | mpack_tag_str_length (mpack_tag_t *tag) |
Gets the length in bytes of a str-type tag. More... | |
MPACK_INLINE uint32_t | mpack_tag_bin_length (mpack_tag_t *tag) |
Gets the length in bytes of a bin-type tag. More... | |
MPACK_INLINE uint32_t | mpack_tag_bytes (mpack_tag_t *tag) |
Gets the length in bytes of a str-, bin- or ext-type tag. More... | |
Other tag functions | |
int | mpack_tag_cmp (mpack_tag_t left, mpack_tag_t right) |
Compares two tags with an arbitrary fixed ordering. More... | |
MPACK_INLINE bool | mpack_tag_equal (mpack_tag_t left, mpack_tag_t right) |
Compares two tags for equality. More... | |
Deprecated Tag Generators | |
MPACK_INLINE mpack_tag_t | mpack_tag_nil (void) |
MPACK_INLINE mpack_tag_t | mpack_tag_bool (bool value) |
MPACK_INLINE mpack_tag_t | mpack_tag_true (void) |
MPACK_INLINE mpack_tag_t | mpack_tag_false (void) |
MPACK_INLINE mpack_tag_t | mpack_tag_int (int64_t value) |
MPACK_INLINE mpack_tag_t | mpack_tag_uint (uint64_t value) |
MPACK_INLINE mpack_tag_t | mpack_tag_float (float value) |
MPACK_INLINE mpack_tag_t | mpack_tag_double (double value) |
MPACK_INLINE mpack_tag_t | mpack_tag_array (int32_t count) |
MPACK_INLINE mpack_tag_t | mpack_tag_map (int32_t count) |
MPACK_INLINE mpack_tag_t | mpack_tag_str (int32_t length) |
MPACK_INLINE mpack_tag_t | mpack_tag_bin (int32_t length) |
Contains types, constants and functions shared by both the encoding and decoding portions of MPack.
#define MPACK_LIBRARY_STRING |
A string describing MPack, containing the library name, version and debug mode.
#define MPACK_TAG_ZERO {(mpack_type_t)0, {0}} |
An mpack_tag_t initializer that zeroes the given tag.
#define MPACK_VERSION |
A number containing the version number of MPack for comparison purposes.
#define MPACK_VERSION_AT_LEAST | ( | major, | |
minor, | |||
patch | |||
) | (MPACK_VERSION >= (((major) * 10000) + ((minor) * 100) + (patch))) |
A macro to test for a minimum version of MPack.
#define MPACK_VERSION_MAJOR 1 |
The major version number of MPack.
#define MPACK_VERSION_MINOR 1 |
The minor version number of MPack.
#define MPACK_VERSION_PATCH 0 |
The patch version number of MPack.
#define MPACK_VERSION_STRING |
A string containing the MPack version.
typedef enum mpack_error_t mpack_error_t |
Error states for MPack objects.
When a reader, writer, or tree is in an error state, all subsequent calls are ignored and their return values are nil/zero. You should check whether the source is in an error state before using such values.
typedef struct mpack_tag_t mpack_tag_t |
An MPack tag is a MessagePack object header.
It is a variant type representing any kind of object, and includes the length of compound types (e.g. map, array, string) or the value of non-compound types (e.g. boolean, integer, float.)
If the type is compound (str, bin, ext, array or map), the contained elements or bytes are stored separately.
This structure is opaque; its fields should not be accessed outside of MPack.
typedef enum mpack_type_t mpack_type_t |
Defines the type of a MessagePack tag.
Note that extension types, both user defined and built-in, are represented in tags as mpack_type_ext. The value for an extension type is stored separately.
enum mpack_error_t |
Error states for MPack objects.
When a reader, writer, or tree is in an error state, all subsequent calls are ignored and their return values are nil/zero. You should check whether the source is in an error state before using such values.
Enumerator | |
---|---|
mpack_ok | No error. |
mpack_error_io | The reader or writer failed to fill or flush, or some other file or socket error occurred. |
mpack_error_invalid | The data read is not valid MessagePack. |
mpack_error_unsupported | The data read is not supported by this configuration of MPack. (See MPACK_EXTENSIONS.) |
mpack_error_type | The type or value range did not match what was expected by the caller. |
mpack_error_too_big | A read or write was bigger than the maximum size allowed for that operation. |
mpack_error_memory | An allocation failure occurred. |
mpack_error_bug | The MPack API was used incorrectly. (This will always assert in debug mode.) |
mpack_error_data | The contained data is not valid. |
mpack_error_eof | The reader failed to read because of file or socket EOF. |
enum mpack_type_t |
Defines the type of a MessagePack tag.
Note that extension types, both user defined and built-in, are represented in tags as mpack_type_ext. The value for an extension type is stored separately.
const char * mpack_error_to_string | ( | mpack_error_t | error | ) |
Converts an MPack error to a string.
This function returns an empty string when MPACK_DEBUG is not set.
MPACK_INLINE mpack_tag_t mpack_tag_array | ( | int32_t | count | ) |
MPACK_INLINE uint32_t mpack_tag_array_count | ( | mpack_tag_t * | tag | ) |
Gets the number of elements in an array tag.
This asserts that the type in the tag is mpack_type_array. (No check is performed if MPACK_DEBUG is not set.)
MPACK_INLINE mpack_tag_t mpack_tag_bin | ( | int32_t | length | ) |
MPACK_INLINE uint32_t mpack_tag_bin_length | ( | mpack_tag_t * | tag | ) |
Gets the length in bytes of a bin-type tag.
This asserts that the type in the tag is mpack_type_bin. (No check is performed if MPACK_DEBUG is not set.)
MPACK_INLINE mpack_tag_t mpack_tag_bool | ( | bool | value | ) |
MPACK_INLINE bool mpack_tag_bool_value | ( | mpack_tag_t * | tag | ) |
Gets the boolean value of a bool-type tag.
The tag must be of type mpack_type_bool.
This asserts that the type in the tag is mpack_type_bool. (No check is performed if MPACK_DEBUG is not set.)
MPACK_INLINE uint32_t mpack_tag_bytes | ( | mpack_tag_t * | tag | ) |
Gets the length in bytes of a str-, bin- or ext-type tag.
This asserts that the type in the tag is mpack_type_str, mpack_type_bin or mpack_type_ext. (No check is performed if MPACK_DEBUG is not set.)
int mpack_tag_cmp | ( | mpack_tag_t | left, |
mpack_tag_t | right | ||
) |
Compares two tags with an arbitrary fixed ordering.
Returns 0 if the tags are equal, a negative integer if left comes before right, or a positive integer otherwise.
See mpack_tag_equal() for more information on when tags are considered equal.
MPACK_INLINE mpack_tag_t mpack_tag_double | ( | double | value | ) |
MPACK_INLINE double mpack_tag_double_value | ( | mpack_tag_t * | tag | ) |
Gets the double value of a double-type tag.
This asserts that the type in the tag is mpack_type_double. (No check is performed if MPACK_DEBUG is not set.)
MPACK_INLINE bool mpack_tag_equal | ( | mpack_tag_t | left, |
mpack_tag_t | right | ||
) |
Compares two tags for equality.
Tags are considered equal if the types are compatible and the values (for non-compound types) are equal.
The field width of variable-width fields is ignored (and in fact is not stored in a tag), and positive numbers in signed integers are considered equal to their unsigned counterparts. So for example the value 1 stored as a positive fixint is equal to the value 1 stored in a 64-bit unsigned integer field.
The "extension type" of an extension object is considered part of the value and must match exactly.
MPACK_INLINE mpack_tag_t mpack_tag_false | ( | void | ) |
MPACK_INLINE mpack_tag_t mpack_tag_float | ( | float | value | ) |
MPACK_INLINE float mpack_tag_float_value | ( | mpack_tag_t * | tag | ) |
Gets the float value of a float-type tag.
This asserts that the type in the tag is mpack_type_float. (No check is performed if MPACK_DEBUG is not set.)
MPACK_INLINE mpack_tag_t mpack_tag_int | ( | int64_t | value | ) |
MPACK_INLINE int64_t mpack_tag_int_value | ( | mpack_tag_t * | tag | ) |
Gets the signed integer value of an int-type tag.
This asserts that the type in the tag is mpack_type_int. (No check is performed if MPACK_DEBUG is not set.)
MPACK_INLINE mpack_tag_t mpack_tag_make_array | ( | uint32_t | count | ) |
Generates an array tag.
MPACK_INLINE mpack_tag_t mpack_tag_make_bin | ( | uint32_t | length | ) |
Generates a bin tag.
MPACK_INLINE mpack_tag_t mpack_tag_make_bool | ( | bool | value | ) |
Generates a bool tag.
MPACK_INLINE mpack_tag_t mpack_tag_make_double | ( | double | value | ) |
Generates a double tag.
MPACK_INLINE mpack_tag_t mpack_tag_make_false | ( | void | ) |
Generates a bool tag with value false.
MPACK_INLINE mpack_tag_t mpack_tag_make_float | ( | float | value | ) |
Generates a float tag.
MPACK_INLINE mpack_tag_t mpack_tag_make_int | ( | int64_t | value | ) |
Generates a signed int tag.
MPACK_INLINE mpack_tag_t mpack_tag_make_map | ( | uint32_t | count | ) |
Generates a map tag.
MPACK_INLINE mpack_tag_t mpack_tag_make_nil | ( | void | ) |
Generates a nil tag.
MPACK_INLINE mpack_tag_t mpack_tag_make_str | ( | uint32_t | length | ) |
Generates a str tag.
MPACK_INLINE mpack_tag_t mpack_tag_make_true | ( | void | ) |
Generates a bool tag with value true.
MPACK_INLINE mpack_tag_t mpack_tag_make_uint | ( | uint64_t | value | ) |
Generates an unsigned int tag.
MPACK_INLINE mpack_tag_t mpack_tag_map | ( | int32_t | count | ) |
MPACK_INLINE uint32_t mpack_tag_map_count | ( | mpack_tag_t * | tag | ) |
Gets the number of key-value pairs in a map tag.
This asserts that the type in the tag is mpack_type_map. (No check is performed if MPACK_DEBUG is not set.)
MPACK_INLINE mpack_tag_t mpack_tag_nil | ( | void | ) |
MPACK_INLINE mpack_tag_t mpack_tag_str | ( | int32_t | length | ) |
MPACK_INLINE uint32_t mpack_tag_str_length | ( | mpack_tag_t * | tag | ) |
Gets the length in bytes of a str-type tag.
This asserts that the type in the tag is mpack_type_str. (No check is performed if MPACK_DEBUG is not set.)
MPACK_INLINE mpack_tag_t mpack_tag_true | ( | void | ) |
MPACK_INLINE mpack_type_t mpack_tag_type | ( | mpack_tag_t * | tag | ) |
Gets the type of a tag.
MPACK_INLINE mpack_tag_t mpack_tag_uint | ( | uint64_t | value | ) |
MPACK_INLINE uint64_t mpack_tag_uint_value | ( | mpack_tag_t * | tag | ) |
Gets the unsigned integer value of a uint-type tag.
This asserts that the type in the tag is mpack_type_uint. (No check is performed if MPACK_DEBUG is not set.)
const char * mpack_type_to_string | ( | mpack_type_t | type | ) |
Converts an MPack type to a string.
This function returns an empty string when MPACK_DEBUG is not set.