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 result[out] Result indicator. #CBOR_ERR_NONE on success 43 * @return **new** CBOR item or `NULL` on failure. In that case, \p result 44 * contains location and description of the error. 45 */ 46 CBOR_EXPORT cbor_item_t* cbor_load(cbor_data source, size_t source_size, 47 struct cbor_load_result* result); 48 49 /** Deep copy of an item 50 * 51 * All the reference counts in the new structure are set to one. 52 * 53 * @param item[borrow] item to copy 54 * @return **new** CBOR deep copy 55 */ 56 CBOR_EXPORT cbor_item_t* cbor_copy(cbor_item_t* item); 57 58 #if CBOR_PRETTY_PRINTER 59 #include <stdio.h> 60 61 CBOR_EXPORT void cbor_describe(cbor_item_t* item, FILE* out); 62 #endif 63 64 #ifdef __cplusplus 65 } 66 #endif 67 68 #endif // LIBCBOR_H_ 69