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_H_ 9 #define LIBCBOR_H_ 10 11 #include "cbor/common.h" 12 #include "cbor/data.h" 13 14 #include "cbor/arrays.h" 15 #include "cbor/bytestrings.h" 16 #include "cbor/floats_ctrls.h" 17 #include "cbor/ints.h" 18 #include "cbor/maps.h" 19 #include "cbor/strings.h" 20 #include "cbor/tags.h" 21 22 #include "cbor/callbacks.h" 23 #include "cbor/cbor_export.h" 24 #include "cbor/encoding.h" 25 #include "cbor/serialization.h" 26 #include "cbor/streaming.h" 27 28 #ifdef __cplusplus 29 extern "C" { 30 #endif 31 32 /* 33 * ============================================================================ 34 * High level decoding 35 * ============================================================================ 36 */ 37 38 /** Loads data item from a buffer 39 * 40 * @param source The buffer 41 * @param source_size 42 * @param[out] result Result indicator. #CBOR_ERR_NONE on success 43 * @return Decoded CBOR item. The item's reference count is initialized to one. 44 * @return `NULL` on failure. In that case, \p result contains the location and 45 * description of the error. 46 */ 47 _CBOR_NODISCARD CBOR_EXPORT cbor_item_t* cbor_load( 48 cbor_data source, size_t source_size, struct cbor_load_result* result); 49 50 /** Take a deep copy of an item 51 * 52 * All items this item points to (array and map members, string chunks, tagged 53 * items) will be copied recursively using #cbor_copy. The new item doesn't 54 * alias or point to any items from the original \p item. All the reference 55 * counts in the new structure are set to one. 56 * 57 * @param item item to copy 58 * @return Reference to the new item. The item's reference count is initialized 59 * to one. 60 * @return `NULL` if memory allocation fails 61 */ 62 _CBOR_NODISCARD CBOR_EXPORT cbor_item_t* cbor_copy(cbor_item_t* item); 63 64 #if CBOR_PRETTY_PRINTER 65 #include <stdio.h> 66 67 CBOR_EXPORT void cbor_describe(cbor_item_t* item, FILE* out); 68 #endif 69 70 #ifdef __cplusplus 71 } 72 #endif 73 74 #endif // LIBCBOR_H_ 75