Veritable Lasagna
An Allocator & Data Structure Library for C.
Loading...
Searching...
No Matches
vl_msgpack_io.h
Go to the documentation of this file.
1#ifndef VL_MSGPACK_IO_H
2#define VL_MSGPACK_IO_H
3
4#include "vl_buffer.h"
5#include "vl_stack.h"
6#include "vl_msgpack.h"
7
8typedef enum vl_msgpack_io_error_{
9 VL_MSGPACK_IO_ERR_NONE, //No error. All good!
10 VL_MSGPACK_IO_ERR_STACK_UNDERFLOW, //Erroneous call to a container end encoding function.
11 VL_MSGPACK_IO_ERR_UNEXPECTED_TOKEN, //Expected a different token as "next" when decoding.
12 VL_MSGPACK_IO_ERR_UNBALANCED_MAP, //Map does not have an even number of values when encoding (must be key/value pairs)
13 VL_MSGPACK_IO_ERR_UNEXPECTED_EOF, //Found end of buffer at an unexpected point when decoding
15
27typedef struct vl_msgpack_encoder_{
28 //Holds state of current structure (map/array), including how many elements.
30 //Holds encoded data.
32
37
47
57
68
79
88
98
110
120
132
143
154void vlMsgPackIOEncodeStringLen(vl_msgpack_encoder* enc, const char* value, vl_uint32_t len);
155
164static inline void vlMsgPackIOEncodeString (vl_msgpack_encoder* enc, const char* value){
165 vlMsgPackIOEncodeStringLen(enc, value, strlen(value));
166}
167
178
188void vlMsgPackIOEncodeFloat64(vl_msgpack_encoder* enc, vl_float64_t value);
189
200void vlMsgPackIOEncodeBinary(vl_msgpack_encoder* enc, const void* value, vl_uint32_t len);
201
213void vlMsgPackIOEncodeExt(vl_msgpack_encoder* enc, vl_int8_t type, const void* value, vl_uint32_t len);
214
224
234
244
252
258typedef struct vl_msgpack_io_token_{
262 union{
266 struct{
267 vl_dsidx_t elements;
268 } array;
269
273 struct{
274 vl_dsidx_t keyValuePairs;
275 } map;
276
280 struct{
281 vl_ilarge_t value;
282 } integer;
283
287 struct{
288 vl_ularge_t value;
289 } uinteger;
290
294 struct{
295 vl_float32_t value;
296 } float32;
297
301 struct{
302 vl_float64_t value;
303 } float64;
304
308 struct{
309 vl_bool_t value;
310 } boolean;
311
315 struct{
316 //UTF-8 Encoded
317 const char* ptr;
318 vl_uint32_t length;
319 } string;
320
324 struct{
325 const void* ptr;
326 vl_uint32_t length;
327 } binary;
328
332 struct{
333 vl_int8_t extType;
334 const void* ptr;
335 vl_uint32_t length;
336 } ext;
337 };
338
341
347typedef struct vl_msgpack_decoder_{
348 const vl_uint8_t* srcMem;
351
353 vl_msgpack_type errorType; //Type associated with error.
354 vl_dsoffs_t errorOffset; //Offset in source buffer where error occurred.
356
367void vlMsgPackIODecoderStart(vl_msgpack_decoder* dec, const void* srcMem, vl_memsize_t srcLen);
368
380
395
396#endif //VL_MSGPACK_IO_H
A MessagePack Token.
Definition vl_msgpack_io.h:258
vl_msgpack_type type
Definition vl_msgpack_io.h:339
A multi-purpose byte buffer.
Definition vl_buffer.h:19
VL_MEMORY_SIZE_T vl_memsize_t
Definition vl_memory.h:18
vl_hash_iter vl_msgpack_iter
Definition vl_msgpack.h:17
vl_msgpack_type
All MessagePack Types.
Definition vl_msgpack.h:22
MessagePack Document Object Model.
Definition vl_msgpack.h:92
void vlMsgPackIOEncodeBool(vl_msgpack_encoder *enc, vl_bool_t value)
Encodes a boolean value into the MessagePack stream.
Definition vl_msgpack_io.c:222
vl_dsoffs_t srcOffset
Definition vl_msgpack_io.h:350
vl_msgpack_type errorType
Definition vl_msgpack_io.h:353
vl_msgpack_io_error
Definition vl_msgpack_io.h:8
@ VL_MSGPACK_IO_ERR_NONE
Definition vl_msgpack_io.h:9
@ VL_MSGPACK_IO_ERR_UNEXPECTED_EOF
Definition vl_msgpack_io.h:13
@ VL_MSGPACK_IO_ERR_UNEXPECTED_TOKEN
Definition vl_msgpack_io.h:11
@ VL_MSGPACK_IO_ERR_UNBALANCED_MAP
Definition vl_msgpack_io.h:12
@ VL_MSGPACK_IO_ERR_STACK_UNDERFLOW
Definition vl_msgpack_io.h:10
void vlMsgPackIOEncodeExt(vl_msgpack_encoder *enc, vl_int8_t type, const void *value, vl_uint32_t len)
Encodes an extension type value into the MessagePack stream.
Definition vl_msgpack_io.c:308
vl_dsidx_t errorDepth
Definition vl_msgpack_io.h:35
vl_bool_t vlMsgPackIODecoderNext(vl_msgpack_decoder *decoder, vl_msgpack_io_token *tkPtr)
Extracts the next token from the MessagePack stream.
Definition vl_msgpack_io.c:580
void vlMsgPackIOEncoderDelete(vl_msgpack_encoder *enc)
Deletes the specified MessagePack encoder.
Definition vl_msgpack_io.c:172
vl_msgpack_encoder * vlMsgPackIOEncoderNew()
Allocates and initializes a MessagePack encoder.
Definition vl_msgpack_io.c:166
vl_memsize_t srcLen
Definition vl_msgpack_io.h:349
vl_msgpack_iter vlMsgPackIODecodeToDOM(vl_msgpack_decoder *decoder, vl_msgpack *dest, vl_msgpack_iter parent, const void *key, vl_memsize_t keyLen)
Decodes MessagePack data into a DOM.
Definition vl_msgpack_io.c:921
void vlMsgPackIOEncoderFree(vl_msgpack_encoder *enc)
Frees the specified MessagePack encoder.
Definition vl_msgpack_io.c:161
void vlMsgPackIOEncodeStringLen(vl_msgpack_encoder *enc, const char *value, vl_uint32_t len)
Encodes a string's length into the MessagePack stream.
Definition vl_msgpack_io.c:228
void vlMsgPackIOEncodeInt(vl_msgpack_encoder *enc, vl_ilarge_t value)
Encodes a signed integer value into the MessagePack stream.
Definition vl_msgpack_io.c:396
vl_buffer buffer
Definition vl_msgpack_io.h:31
const vl_uint8_t * srcMem
Definition vl_msgpack_io.h:348
void vlMsgPackIOEncodeUInt(vl_msgpack_encoder *enc, vl_ularge_t value)
Encodes an unsigned integer value into the MessagePack stream.
Definition vl_msgpack_io.c:452
vl_dsoffs_t errorOffset
Definition vl_msgpack_io.h:354
vl_stack stateStack
Definition vl_msgpack_io.h:29
void vlMsgPackIOEncodeFloat32(vl_msgpack_encoder *enc, vl_float32_t value)
Encodes a 32-bit floating point value into the MessagePack stream.
Definition vl_msgpack_io.c:262
void vlMsgPackIOEncodeFromDOM(vl_msgpack_encoder *encoder, vl_msgpack *src, vl_msgpack_iter curIter)
Encodes from a MessagePack DOM.
Definition vl_msgpack_io.c:493
void vlMsgPackIODecoderStart(vl_msgpack_decoder *dec, const void *srcMem, vl_memsize_t srcLen)
Starts the MessagePack decoding process.
Definition vl_msgpack_io.c:560
void vlMsgPackIOEncodeFloat64(vl_msgpack_encoder *enc, vl_float64_t value)
Encodes a 64-bit floating point value into the MessagePack stream.
Definition vl_msgpack_io.c:270
void vlMsgPackIOEncodeMapEnd(vl_msgpack_encoder *enc)
Ends encoding a map in the MessagePack stream.
Definition vl_msgpack_io.c:190
void vlMsgPackIOEncoderClear(vl_msgpack_encoder *enc)
Clears the state of the MessagePack encoder.
Definition vl_msgpack_io.c:177
void vlMsgPackIOEncodeNil(vl_msgpack_encoder *enc)
Encodes a nil value into the MessagePack stream.
Definition vl_msgpack_io.c:487
void vlMsgPackIOEncodeMapBegin(vl_msgpack_encoder *enc)
Begins encoding a map in the MessagePack stream.
Definition vl_msgpack_io.c:185
void vlMsgPackIOEncodeArrayBegin(vl_msgpack_encoder *enc)
Begins encoding an array in the MessagePack stream.
Definition vl_msgpack_io.c:209
void vlMsgPackIOEncodeBinary(vl_msgpack_encoder *enc, const void *value, vl_uint32_t len)
Encodes a binary value into the MessagePack stream.
Definition vl_msgpack_io.c:278
vl_msgpack_type errorType
Definition vl_msgpack_io.h:34
void vlMsgPackIOEncoderInit(vl_msgpack_encoder *enc)
Initializes the specified MessagePack encoder.
Definition vl_msgpack_io.c:152
vl_msgpack_io_error error
Definition vl_msgpack_io.h:352
vl_msgpack_io_error error
Definition vl_msgpack_io.h:33
void vlMsgPackIOEncodeArrayEnd(vl_msgpack_encoder *enc)
Ends encoding an array in the MessagePack stream.
Definition vl_msgpack_io.c:214
A MessagePack decoder.
Definition vl_msgpack_io.h:347
MessagePack Format Encoder State.
Definition vl_msgpack_io.h:27
VL_BOOL_T vl_bool_t
Definition vl_numtypes.h:128
VL_STRUCTURE_INDEX_T vl_dsidx_t
Index type for data structures.
Definition vl_numtypes.h:13
VL_F32_T vl_float32_t
32-bit floating point number type.
Definition vl_numtypes.h:111
VL_ULARGE_T vl_ularge_t
Largest available unsigned integer type.
Definition vl_numtypes.h:74
VL_STRUCTURE_OFFSET_T vl_dsoffs_t
Byte offset type for data structures.
Definition vl_numtypes.h:8
VL_ILARGE_T vl_ilarge_t
Largest available signed integer type.
Definition vl_numtypes.h:78
A virtual stack allocator.
Definition vl_stack.h:21