libcbor 0.12.0
libcbor is a C library for parsing and generating CBOR, the general-purpose schema-less binary data format.
Loading...
Searching...
No Matches
encoding.c File Reference
#include "encoding.h"
#include <math.h>
#include "internal/encoders.h"

Go to the source code of this file.

Functions

size_t cbor_encode_uint8 (uint8_t value, unsigned char *buffer, size_t buffer_size)
 
size_t cbor_encode_uint16 (uint16_t value, unsigned char *buffer, size_t buffer_size)
 
size_t cbor_encode_uint32 (uint32_t value, unsigned char *buffer, size_t buffer_size)
 
size_t cbor_encode_uint64 (uint64_t value, unsigned char *buffer, size_t buffer_size)
 
size_t cbor_encode_uint (uint64_t value, unsigned char *buffer, size_t buffer_size)
 
size_t cbor_encode_negint8 (uint8_t value, unsigned char *buffer, size_t buffer_size)
 
size_t cbor_encode_negint16 (uint16_t value, unsigned char *buffer, size_t buffer_size)
 
size_t cbor_encode_negint32 (uint32_t value, unsigned char *buffer, size_t buffer_size)
 
size_t cbor_encode_negint64 (uint64_t value, unsigned char *buffer, size_t buffer_size)
 
size_t cbor_encode_negint (uint64_t value, unsigned char *buffer, size_t buffer_size)
 
size_t cbor_encode_bytestring_start (size_t length, unsigned char *buffer, size_t buffer_size)
 
size_t _cbor_encode_byte (uint8_t value, unsigned char *buffer, size_t buffer_size)
 
size_t cbor_encode_indef_bytestring_start (unsigned char *buffer, size_t buffer_size)
 
size_t cbor_encode_string_start (size_t length, unsigned char *buffer, size_t buffer_size)
 
size_t cbor_encode_indef_string_start (unsigned char *buffer, size_t buffer_size)
 
size_t cbor_encode_array_start (size_t length, unsigned char *buffer, size_t buffer_size)
 
size_t cbor_encode_indef_array_start (unsigned char *buffer, size_t buffer_size)
 
size_t cbor_encode_map_start (size_t length, unsigned char *buffer, size_t buffer_size)
 
size_t cbor_encode_indef_map_start (unsigned char *buffer, size_t buffer_size)
 
size_t cbor_encode_tag (uint64_t value, unsigned char *buffer, size_t buffer_size)
 
size_t cbor_encode_bool (bool value, unsigned char *buffer, size_t buffer_size)
 
size_t cbor_encode_null (unsigned char *buffer, size_t buffer_size)
 
size_t cbor_encode_undef (unsigned char *buffer, size_t buffer_size)
 
size_t cbor_encode_half (float value, unsigned char *buffer, size_t buffer_size)
 Encodes a half-precision float.
 
size_t cbor_encode_single (float value, unsigned char *buffer, size_t buffer_size)
 Encodes a single precision float.
 
size_t cbor_encode_double (double value, unsigned char *buffer, size_t buffer_size)
 Encodes a double precision float.
 
size_t cbor_encode_break (unsigned char *buffer, size_t buffer_size)
 
size_t cbor_encode_ctrl (uint8_t value, unsigned char *buffer, size_t buffer_size)
 

Function Documentation

◆ _cbor_encode_byte()

size_t _cbor_encode_byte ( uint8_t value,
unsigned char * buffer,
size_t buffer_size )

Definition at line 69 of file encoding.c.

◆ cbor_encode_array_start()

size_t cbor_encode_array_start ( size_t length,
unsigned char * buffer,
size_t buffer_size )

Definition at line 93 of file encoding.c.

◆ cbor_encode_bool()

size_t cbor_encode_bool ( bool value,
unsigned char * buffer,
size_t buffer_size )

Definition at line 117 of file encoding.c.

◆ cbor_encode_break()

size_t cbor_encode_break ( unsigned char * buffer,
size_t buffer_size )

Definition at line 207 of file encoding.c.

◆ cbor_encode_bytestring_start()

size_t cbor_encode_bytestring_start ( size_t length,
unsigned char * buffer,
size_t buffer_size )

Definition at line 64 of file encoding.c.

◆ cbor_encode_ctrl()

size_t cbor_encode_ctrl ( uint8_t value,
unsigned char * buffer,
size_t buffer_size )

Definition at line 211 of file encoding.c.

◆ cbor_encode_double()

size_t cbor_encode_double ( double value,
unsigned char * buffer,
size_t buffer_size )

Encodes a double precision float.

Note: Signaling NaNs are encoded as a standard, "quiet" NaN.

Definition at line 194 of file encoding.c.

◆ cbor_encode_half()

size_t cbor_encode_half ( float value,
unsigned char * buffer,
size_t buffer_size )

Encodes a half-precision float.

Since there is no native representation or semantics for half floats in the language, we use single-precision floats, as every value that can be expressed as a half-float can also be expressed as a float.

This however means that not all floats passed to this function can be unambiguously encoded. The behavior is as follows:

  • Infinity, NaN are preserved
  • Zero is preserved
  • Denormalized numbers keep their sign bit and 10 most significant bit of the significand
  • All other numbers
    • If the logical value of the exponent is < -24, the output is zero
    • If the logical value of the exponent is between -23 and -14, the output is cut off to represent the 'magnitude' of the input, by which we mean (-1)^{signbit} x 1.0e{exponent}. The value in the significand is lost.
    • In all other cases, the sign bit, the exponent, and 10 most significant bits of the significand are kept

Note: Signaling NaNs are encoded as a standard, "quiet" NaN.

Definition at line 130 of file encoding.c.

◆ cbor_encode_indef_array_start()

size_t cbor_encode_indef_array_start ( unsigned char * buffer,
size_t buffer_size )

Definition at line 98 of file encoding.c.

◆ cbor_encode_indef_bytestring_start()

size_t cbor_encode_indef_bytestring_start ( unsigned char * buffer,
size_t buffer_size )

Definition at line 78 of file encoding.c.

◆ cbor_encode_indef_map_start()

size_t cbor_encode_indef_map_start ( unsigned char * buffer,
size_t buffer_size )

Definition at line 108 of file encoding.c.

◆ cbor_encode_indef_string_start()

size_t cbor_encode_indef_string_start ( unsigned char * buffer,
size_t buffer_size )

Definition at line 88 of file encoding.c.

◆ cbor_encode_map_start()

size_t cbor_encode_map_start ( size_t length,
unsigned char * buffer,
size_t buffer_size )

Definition at line 103 of file encoding.c.

◆ cbor_encode_negint()

size_t cbor_encode_negint ( uint64_t value,
unsigned char * buffer,
size_t buffer_size )

Definition at line 59 of file encoding.c.

◆ cbor_encode_negint16()

size_t cbor_encode_negint16 ( uint16_t value,
unsigned char * buffer,
size_t buffer_size )

Definition at line 44 of file encoding.c.

◆ cbor_encode_negint32()

size_t cbor_encode_negint32 ( uint32_t value,
unsigned char * buffer,
size_t buffer_size )

Definition at line 49 of file encoding.c.

◆ cbor_encode_negint64()

size_t cbor_encode_negint64 ( uint64_t value,
unsigned char * buffer,
size_t buffer_size )

Definition at line 54 of file encoding.c.

◆ cbor_encode_negint8()

size_t cbor_encode_negint8 ( uint8_t value,
unsigned char * buffer,
size_t buffer_size )

Definition at line 39 of file encoding.c.

◆ cbor_encode_null()

size_t cbor_encode_null ( unsigned char * buffer,
size_t buffer_size )

Definition at line 122 of file encoding.c.

◆ cbor_encode_single()

size_t cbor_encode_single ( float value,
unsigned char * buffer,
size_t buffer_size )

Encodes a single precision float.

Note: Signaling NaNs are encoded as a standard, "quiet" NaN.

Definition at line 180 of file encoding.c.

◆ cbor_encode_string_start()

size_t cbor_encode_string_start ( size_t length,
unsigned char * buffer,
size_t buffer_size )

Definition at line 83 of file encoding.c.

◆ cbor_encode_tag()

size_t cbor_encode_tag ( uint64_t value,
unsigned char * buffer,
size_t buffer_size )

Definition at line 112 of file encoding.c.

◆ cbor_encode_uint()

size_t cbor_encode_uint ( uint64_t value,
unsigned char * buffer,
size_t buffer_size )

Definition at line 34 of file encoding.c.

◆ cbor_encode_uint16()

size_t cbor_encode_uint16 ( uint16_t value,
unsigned char * buffer,
size_t buffer_size )

Definition at line 19 of file encoding.c.

◆ cbor_encode_uint32()

size_t cbor_encode_uint32 ( uint32_t value,
unsigned char * buffer,
size_t buffer_size )

Definition at line 24 of file encoding.c.

◆ cbor_encode_uint64()

size_t cbor_encode_uint64 ( uint64_t value,
unsigned char * buffer,
size_t buffer_size )

Definition at line 29 of file encoding.c.

◆ cbor_encode_uint8()

size_t cbor_encode_uint8 ( uint8_t value,
unsigned char * buffer,
size_t buffer_size )

Definition at line 14 of file encoding.c.

◆ cbor_encode_undef()

size_t cbor_encode_undef ( unsigned char * buffer,
size_t buffer_size )

Definition at line 126 of file encoding.c.