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_{
259 union{
260 struct{
261 vl_dsidx_t elements;
262 } array;
263
264 struct{
265 vl_dsidx_t keyValuePairs;
266 } map;
267
268 struct{
269 vl_ilarge_t value;
270 } integer;
271
272 struct{
273 vl_ularge_t value;
274 } uinteger;
275
276 struct{
277 vl_float32_t value;
278 } float32;
279
280 struct{
281 vl_float64_t value;
282 } float64;
283
284 struct{
285 vl_bool_t value;
286 } boolean;
287
288 struct{
289 //UTF-8 Encoded
290 const char* ptr;
291 vl_uint32_t length;
292 } string;
293
294 struct{
295 const void* ptr;
296 vl_uint32_t length;
297 } binary;
298
299 struct{
300 vl_int8_t extType;
301 const void* ptr;
302 vl_uint32_t length;
303 } ext;
304 };
305
308
314typedef struct vl_msgpack_decoder_{
315 const vl_uint8_t* srcMem;
318
320 vl_msgpack_type errorType; //Type associated with error.
321 vl_dsoffs_t errorOffset; //Offset in source buffer where error occurred.
323
334void vlMsgPackIODecoderStart(vl_msgpack_decoder* dec, const void* srcMem, vl_memsize_t srcLen);
335
347
362
363#endif //VL_MSGPACK_IO_H
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:317
vl_msgpack_type errorType
Definition vl_msgpack_io.h:320
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:316
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:315
vl_msgpack_type type
Definition vl_msgpack_io.h:306
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:321
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:319
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:314
MessagePack Format Encoder State.
Definition vl_msgpack_io.h:27
A MessagePack Token.
Definition vl_msgpack_io.h:258
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