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 29extern "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_NODISCARD CBOR_EXPORT cbor_item_t* cbor_load( 47 cbor_data source, size_t source_size, struct cbor_load_result* result); 48 49/** Take a 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 or `NULL` on failure. 55 */ 56_CBOR_NODISCARD CBOR_EXPORT cbor_item_t* cbor_copy(cbor_item_t* item); 57 58#if CBOR_PRETTY_PRINTER 59#include <stdio.h> 60 61CBOR_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