serialization.h revision 1.3
1/* 2 * Copyright (c) 2014-2020 Pavel Kalvoda <me@pavelkalvoda.com> 3 * 4 * libcbor is free software; you can redistribute it and/or modify 5 * it under the terms of the MIT license. See LICENSE for details. 6 */ 7 8#ifndef LIBCBOR_SERIALIZATION_H 9#define LIBCBOR_SERIALIZATION_H 10 11#include "cbor/common.h" 12 13#ifdef __cplusplus 14extern "C" { 15#endif 16 17/* 18 * ============================================================================ 19 * High level encoding 20 * ============================================================================ 21 */ 22 23/** Serialize the given item 24 * 25 * @param item[borrow] A data item 26 * @param buffer Buffer to serialize to 27 * @param buffer_size Size of the \p buffer 28 * @return Length of the result. 0 on failure. 29 */ 30size_t cbor_serialize(const cbor_item_t *item, cbor_mutable_data buffer, 31 size_t buffer_size); 32 33/** Serialize the given item, allocating buffers as needed 34 * 35 * \rst 36 * .. warning:: It is your responsibility to free the buffer using an 37 * appropriate ``free`` implementation. \endrst 38 * 39 * @param item[borrow] A data item 40 * @param buffer[out] Buffer containing the result 41 * @param buffer_size[out] Size of the \p buffer 42 * @return Length of the result. 0 on failure, in which case \p buffer is 43 * ``NULL``. 44 */ 45size_t cbor_serialize_alloc(const cbor_item_t *item, cbor_mutable_data *buffer, 46 size_t *buffer_size); 47 48/** Serialize an uint 49 * 50 * @param item[borrow] A uint 51 * @param buffer Buffer to serialize to 52 * @param buffer_size Size of the \p buffer 53 * @return Length of the result. 0 on failure. 54 */ 55size_t cbor_serialize_uint(const cbor_item_t *, cbor_mutable_data, size_t); 56 57/** Serialize a negint 58 * 59 * @param item[borrow] A neging 60 * @param buffer Buffer to serialize to 61 * @param buffer_size Size of the \p buffer 62 * @return Length of the result. 0 on failure. 63 */ 64size_t cbor_serialize_negint(const cbor_item_t *, cbor_mutable_data, size_t); 65 66/** Serialize a bytestring 67 * 68 * @param item[borrow] A bytestring 69 * @param buffer Buffer to serialize to 70 * @param buffer_size Size of the \p buffer 71 * @return Length of the result. 0 on failure. 72 */ 73size_t cbor_serialize_bytestring(const cbor_item_t *, cbor_mutable_data, 74 size_t); 75 76/** Serialize a string 77 * 78 * @param item[borrow] A string 79 * @param buffer Buffer to serialize to 80 * @param buffer_size Size of the \p buffer 81 * @return Length of the result. 0 on failure. 82 */ 83size_t cbor_serialize_string(const cbor_item_t *, cbor_mutable_data, size_t); 84 85/** Serialize an array 86 * 87 * @param item[borrow] An array 88 * @param buffer Buffer to serialize to 89 * @param buffer_size Size of the \p buffer 90 * @return Length of the result. 0 on failure. 91 */ 92size_t cbor_serialize_array(const cbor_item_t *, cbor_mutable_data, size_t); 93 94/** Serialize a map 95 * 96 * @param item[borrow] A map 97 * @param buffer Buffer to serialize to 98 * @param buffer_size Size of the \p buffer 99 * @return Length of the result. 0 on failure. 100 */ 101size_t cbor_serialize_map(const cbor_item_t *, cbor_mutable_data, size_t); 102 103/** Serialize a tag 104 * 105 * @param item[borrow] A tag 106 * @param buffer Buffer to serialize to 107 * @param buffer_size Size of the \p buffer 108 * @return Length of the result. 0 on failure. 109 */ 110size_t cbor_serialize_tag(const cbor_item_t *, cbor_mutable_data, size_t); 111 112/** Serialize a 113 * 114 * @param item[borrow] A float or ctrl 115 * @param buffer Buffer to serialize to 116 * @param buffer_size Size of the \p buffer 117 * @return Length of the result. 0 on failure. 118 */ 119size_t cbor_serialize_float_ctrl(const cbor_item_t *, cbor_mutable_data, 120 size_t); 121 122#ifdef __cplusplus 123} 124#endif 125 126#endif // LIBCBOR_SERIALIZATION_H 127