80#define YAPB_MODE_WRITE 0
83#define YAPB_MODE_READ 1
87#define YAPB_HEADER_SIZE 4
111#define YAPB_PACKET_SIZE 48
138 struct {
const uint8_t *data; uint16_t len; }
blob;
YAPB_Result_t YAPB_finalize(YAPB_Packet_t *pkt, size_t *out_len)
Finalize the packet, writing the total length into the header.
Definition yapb.c:138
YAPB_Result_t YAPB_load(YAPB_Packet_t *pkt, const uint8_t *data, size_t size)
Load a packet for reading from raw data.
Definition yapb.c:157
YAPB_Result_t YAPB_initialize(YAPB_Packet_t *pkt, uint8_t *buffer, size_t size)
Initialize a packet for writing.
Definition yapb.c:117
YAPB_Result_t YAPB_pop_double(YAPB_Packet_t *pkt, double *out)
Pop a double-precision float.
Definition yapb.c:355
YAPB_Result_t YAPB_pop_i64(YAPB_Packet_t *pkt, int64_t *out)
Pop a signed 64-bit integer.
Definition yapb.c:336
YAPB_Result_t YAPB_pop_i16(YAPB_Packet_t *pkt, int16_t *out)
Pop a signed 16-bit integer.
Definition yapb.c:318
YAPB_Result_t YAPB_pop_float(YAPB_Packet_t *pkt, float *out)
Pop a single-precision float.
Definition yapb.c:345
YAPB_Result_t YAPB_pop_nested(YAPB_Packet_t *pkt, YAPB_Packet_t *out)
Pop a nested packet.
Definition yapb.c:383
YAPB_Result_t YAPB_pop_blob(YAPB_Packet_t *pkt, const uint8_t **data, uint16_t *len)
Pop a raw byte blob.
Definition yapb.c:365
YAPB_Result_t YAPB_pop_i32(YAPB_Packet_t *pkt, int32_t *out)
Pop a signed 32-bit integer.
Definition yapb.c:327
YAPB_Result_t YAPB_pop_next(YAPB_Packet_t *pkt, YAPB_Element_t *out)
Pop the next element regardless of its type.
Definition yapb.c:468
YAPB_Result_t YAPB_pop_i8(YAPB_Packet_t *pkt, int8_t *out)
Pop a signed 8-bit integer.
Definition yapb.c:310
YAPB_Result_t YAPB_push_i32(YAPB_Packet_t *pkt, const int32_t *val)
Push a signed 32-bit integer.
Definition yapb.c:204
YAPB_Result_t YAPB_push_blob(YAPB_Packet_t *pkt, const uint8_t *data, uint16_t len)
Push a raw byte blob.
Definition yapb.c:252
YAPB_Result_t YAPB_push_i16(YAPB_Packet_t *pkt, const int16_t *val)
Push a signed 16-bit integer.
Definition yapb.c:193
YAPB_Result_t YAPB_push_i64(YAPB_Packet_t *pkt, const int64_t *val)
Push a signed 64-bit integer.
Definition yapb.c:215
YAPB_Result_t YAPB_push_float(YAPB_Packet_t *pkt, const float *val)
Push a single-precision float.
Definition yapb.c:226
YAPB_Result_t YAPB_push_i8(YAPB_Packet_t *pkt, const int8_t *val)
Push a signed 8-bit integer.
Definition yapb.c:183
YAPB_Result_t YAPB_push_double(YAPB_Packet_t *pkt, const double *val)
Push a double-precision float.
Definition yapb.c:239
YAPB_Result_t YAPB_push_nested(YAPB_Packet_t *pkt, const YAPB_Packet_t *nested)
Push a finalized nested packet.
Definition yapb.c:282
YAPB_Result_t YAPB_get_error(const YAPB_Packet_t *pkt)
Get the sticky error state of a packet.
Definition yapb.c:503
const uint8_t * YAPB_get_buffer(const YAPB_Packet_t *pkt, size_t *out_len)
Get a const pointer to the packet's backing buffer and its length.
Definition yapb.c:510
bool YAPB_check_complete(const uint8_t *data, size_t len)
Check if a receive buffer contains a complete YAPB packet.
Definition yapb.c:524
const char * YAPB_Result_str(YAPB_Result_t result)
Get a human-readable string for a result code.
Definition yapb.c:535
YAPB_Result_t YAPB_get_elem_count(const YAPB_Packet_t *pkt, uint16_t *out_count)
Count the number of elements in a packet.
Definition yapb.c:405
YAPB_Type_t
Element type tags stored in the wire format.
Definition yapb.h:66
struct YAPB_Element YAPB_Element_t
Tagged union returned by YAPB_pop_next().
YAPB_Result_t
Result codes returned by all YAPB functions.
Definition yapb.h:97
#define YAPB_PACKET_SIZE
Size of the opaque YAPB_Packet_t storage in bytes.
Definition yapb.h:111
struct YAPB_Packet YAPB_Packet_t
Opaque packet handle, stack-allocatable.
@ YAPB_INT16
Definition yapb.h:68
@ YAPB_BLOB
Definition yapb.h:74
@ YAPB_DOUBLE
Definition yapb.h:72
@ YAPB_INT64
Definition yapb.h:70
@ YAPB_INT8
Definition yapb.h:67
@ YAPB_FLOAT
Definition yapb.h:71
@ YAPB_NESTED_PKT
Definition yapb.h:75
@ YAPB_INT32
Definition yapb.h:69
@ YAPB_ERR_NO_MORE_ELEMENTS
Definition yapb.h:98
@ YAPB_ERR_TYPE_MISMATCH
Definition yapb.h:100
@ YAPB_ERR_INVALID_PACKET
Definition yapb.h:99
@ YAPB_ERR_UNKNOWN
Definition yapb.h:104
@ YAPB_ERR_BUFFER_TOO_SMALL
Definition yapb.h:102
@ YAPB_STS_COMPLETE
Definition yapb.h:106
@ YAPB_ERR_NULL_PTR
Definition yapb.h:103
@ YAPB_ERR_INVALID_MODE
Definition yapb.h:101
@ YAPB_OK
Definition yapb.h:105
Tagged union returned by YAPB_pop_next().
Definition yapb.h:129
union YAPB_Element::@177105244153274264224324340174347237144132117366 val
float f
Definition yapb.h:136
double d
Definition yapb.h:137
YAPB_Type_t type
Definition yapb.h:130
YAPB_Packet_t nested
Definition yapb.h:139
int16_t i16
Definition yapb.h:133
struct YAPB_Element::@177105244153274264224324340174347237144132117366::@306016211277354136366216203333021004322224231102 blob
int64_t i64
Definition yapb.h:135
int32_t i32
Definition yapb.h:134
int8_t i8
Definition yapb.h:132
Opaque packet handle, stack-allocatable.
Definition yapb.h:119