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/encoding.h" 24 #include "cbor/serialization.h" 25 #include "cbor/streaming.h" 26 27 #ifdef __cplusplus 28 extern "C" { 29 #endif 30 31 /* 32 * ============================================================================ 33 * High level decoding 34 * ============================================================================ 35 */ 36 37 /** Loads data item from a buffer 38 * 39 * @param source The buffer 40 * @param source_size 41 * @param result[out] Result indicator. #CBOR_ERR_NONE on success 42 * @return **new** CBOR item or `NULL` on failure. In that case, \p result 43 * contains location and description of the error. 44 */ 45 cbor_item_t* cbor_load(cbor_data source, size_t source_size, 46 struct cbor_load_result* result); 47 48 /** Deep copy of an item 49 * 50 * All the reference counts in the new structure are set to one. 51 * 52 * @param item[borrow] item to copy 53 * @return **new** CBOR deep copy 54 */ 55 cbor_item_t* cbor_copy(cbor_item_t* item); 56 57 #if CBOR_PRETTY_PRINTER 58 #include <stdio.h> 59 60 void cbor_describe(cbor_item_t* item, FILE* out); 61 #endif 62 63 #ifdef __cplusplus 64 } 65 #endif 66 67 #endif // LIBCBOR_H_ 68