xref: /openbsd/lib/libcbor/src/cbor.h (revision e5dd7070)
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