31 return *(
float*)item->
data;
37 return *(
float*)item->
data;
43 return *(
double*)item->
data;
71 *((
float*)item->
data) = value;
77 *((
float*)item->
data) = value;
83 *((
double*)item->
data) = value;
106 .metadata = {.float_ctrl_metadata = {.width =
CBOR_FLOAT_0,
117 .data = (
unsigned char*)item +
sizeof(
cbor_item_t),
119 .metadata = {.float_ctrl_metadata = {.width =
CBOR_FLOAT_16}}};
129 .data = (
unsigned char*)item +
sizeof(
cbor_item_t),
131 .metadata = {.float_ctrl_metadata = {.width =
CBOR_FLOAT_32}}};
141 .data = (
unsigned char*)item +
sizeof(
cbor_item_t),
143 .metadata = {.float_ctrl_metadata = {.width =
CBOR_FLOAT_64}}};
_cbor_malloc_t _cbor_malloc
bool cbor_is_float(const cbor_item_t *item)
Is the item an a floating point number?
bool cbor_is_bool(const cbor_item_t *item)
Is the item an a boolean?
bool cbor_isa_float_ctrl(const cbor_item_t *item)
Does the item have the appropriate major type?
#define _CBOR_UNREACHABLE
#define _CBOR_NOTNULL(cbor_item)
@ CBOR_TYPE_FLOAT_CTRL
7 - decimals and special values (true, false, nil, ...)
cbor_float_width
Possible widths of CBOR_TYPE_FLOAT_CTRL items.
@ CBOR_FLOAT_32
Single float.
@ CBOR_FLOAT_16
Half float.
@ CBOR_FLOAT_0
Internal use - ctrl and special values.
cbor_float_width cbor_float_get_width(const cbor_item_t *item)
Get the float width.
cbor_item_t * cbor_build_ctrl(uint8_t value)
Constructs a ctrl item.
cbor_item_t * cbor_new_undef(void)
Constructs new undef ctrl item.
bool cbor_float_ctrl_is_ctrl(const cbor_item_t *item)
Is this a ctrl value?
double cbor_float_get_float8(const cbor_item_t *item)
Get a double precision float.
cbor_item_t * cbor_new_float2(void)
Constructs a new float item.
cbor_item_t * cbor_new_float8(void)
Constructs a new float item.
void cbor_set_ctrl(cbor_item_t *item, uint8_t value)
Assign a control value.
void cbor_set_float4(cbor_item_t *item, float value)
Assigns a float value.
void cbor_set_float8(cbor_item_t *item, double value)
Assigns a float value.
cbor_item_t * cbor_new_ctrl(void)
Constructs a new ctrl item.
cbor_item_t * cbor_build_bool(bool value)
Constructs new boolean ctrl item.
cbor_item_t * cbor_build_float4(float value)
Constructs a new float.
cbor_item_t * cbor_new_null(void)
Constructs new null ctrl item.
uint8_t cbor_ctrl_value(const cbor_item_t *item)
Reads the control value.
void cbor_set_float2(cbor_item_t *item, float value)
Assigns a float value.
float cbor_float_get_float2(const cbor_item_t *item)
Get a half precision float.
cbor_item_t * cbor_build_float8(double value)
Constructs a new float.
cbor_item_t * cbor_new_float4(void)
Constructs a new float item.
void cbor_set_bool(cbor_item_t *item, bool value)
Assign a boolean value to a boolean ctrl item.
float cbor_float_get_float4(const cbor_item_t *item)
Get a single precision float.
double cbor_float_get_float(const cbor_item_t *item)
Get the float value represented as double.
cbor_item_t * cbor_build_float2(float value)
Constructs a new float.
bool cbor_get_bool(const cbor_item_t *item)
Get value from a boolean ctrl item.
unsigned char * data
Raw data block - interpretation depends on metadata.
size_t refcount
Reference count - initialize to 0.
union cbor_item_metadata metadata
Discriminated by type.