libcbor 0.12.0
libcbor is a C library for parsing and generating CBOR, the general-purpose schema-less binary data format.
Loading...
Searching...
No Matches
data.h
Go to the documentation of this file.
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_DATA_H
9#define LIBCBOR_DATA_H
10
11#include <stdbool.h>
12#include <stddef.h>
13#include <stdint.h>
14#include <stdlib.h>
15
16#ifdef __cplusplus
17extern "C" {
18#endif
19
20typedef const unsigned char* cbor_data;
21typedef unsigned char* cbor_mutable_data;
22
42
44typedef enum {
48 // TODO: Should be "malformed" or at least "malformatted". Retained for
49 // backwards compatibility.
53 ,
56
64
75
81
90
91// Metadata items use size_t (instead of uint64_t) because items in memory take
92// up at least 1B per entry or string byte, so if size_t is narrower than
93// uint64_t, we wouldn't be able to create them in the first place and can save
94// some space.
95
100
106
109 size_t length;
110 size_t codepoint_count; /* Sum of chunks' codepoint_counts for indefinite
111 strings */
113};
114
121
128
137 uint64_t value;
138};
139
145
148 float as_float;
149 uint32_t as_uint;
150};
151
154 double as_double;
155 uint64_t as_uint;
156};
157
169
181
191
199
204
210 size_t read;
211};
212
222 // TODO: The name is inconsistent with CBOR_ERR_NOTENOUGHDATA. Retained for
223 // backwards compatibility.
227};
228
238 size_t read;
239
242
257 size_t required;
258};
259
260#ifdef __cplusplus
261}
262#endif
263
264#endif // LIBCBOR_DATA_H
const unsigned char * cbor_data
Definition data.h:20
cbor_error_code
Possible decoding errors.
Definition data.h:44
@ CBOR_ERR_SYNTAXERROR
Stack parsing algorithm failed.
Definition data.h:54
@ CBOR_ERR_NODATA
Definition data.h:47
@ CBOR_ERR_NONE
Definition data.h:45
@ CBOR_ERR_NOTENOUGHDATA
Definition data.h:46
@ CBOR_ERR_MEMERROR
Memory error - item allocation failed.
Definition data.h:51
@ CBOR_ERR_MALFORMATED
Definition data.h:50
cbor_type
Specifies the Major type of cbor_item_t.
Definition data.h:24
@ CBOR_TYPE_MAP
5 - maps
Definition data.h:35
@ CBOR_TYPE_FLOAT_CTRL
7 - decimals and special values (true, false, nil, ...)
Definition data.h:39
@ CBOR_TYPE_TAG
6 - tags
Definition data.h:37
@ CBOR_TYPE_UINT
0 - positive integers
Definition data.h:25
@ CBOR_TYPE_BYTESTRING
2 - byte strings
Definition data.h:29
@ CBOR_TYPE_STRING
3 - strings
Definition data.h:31
@ CBOR_TYPE_NEGINT
1 - negative integers
Definition data.h:27
@ CBOR_TYPE_ARRAY
4 - arrays
Definition data.h:33
_cbor_dst_metadata
Metadata for dynamically sized types.
Definition data.h:77
@ _CBOR_METADATA_DEFINITE
Definition data.h:78
@ _CBOR_METADATA_INDEFINITE
Definition data.h:79
_cbor_ctrl
Semantic mapping for CTRL simple values.
Definition data.h:83
@ CBOR_CTRL_UNDEF
Definition data.h:88
@ CBOR_CTRL_NULL
Definition data.h:87
@ CBOR_CTRL_FALSE
Definition data.h:85
@ CBOR_CTRL_NONE
Definition data.h:84
@ CBOR_CTRL_TRUE
Definition data.h:86
unsigned char * cbor_mutable_data
Definition data.h:21
cbor_decoder_status
Streaming decoder result - status.
Definition data.h:214
@ CBOR_DECODER_NEDATA
Not enough data to invoke a callback.
Definition data.h:224
@ CBOR_DECODER_FINISHED
Decoding finished successfully (a callback has been invoked)
Definition data.h:220
@ CBOR_DECODER_ERROR
Bad data (reserved MTB, malformed value, etc.)
Definition data.h:226
cbor_float_width
Possible widths of CBOR_TYPE_FLOAT_CTRL items.
Definition data.h:66
@ CBOR_FLOAT_32
Single float.
Definition data.h:71
@ CBOR_FLOAT_16
Half float.
Definition data.h:69
@ CBOR_FLOAT_64
Double.
Definition data.h:73
@ CBOR_FLOAT_0
Internal use - ctrl and special values.
Definition data.h:67
cbor_int_width
Possible widths of CBOR_TYPE_UINT items.
Definition data.h:58
@ CBOR_INT_16
Definition data.h:60
@ CBOR_INT_8
Definition data.h:59
@ CBOR_INT_64
Definition data.h:62
@ CBOR_INT_32
Definition data.h:61
Arrays specific metadata.
Definition data.h:116
_cbor_dst_metadata type
Definition data.h:119
Bytestrings specific metadata.
Definition data.h:102
_cbor_dst_metadata type
Definition data.h:104
Floats specific metadata - includes CTRL values.
Definition data.h:141
cbor_float_width width
Definition data.h:142
Integers specific metadata.
Definition data.h:97
cbor_int_width width
Definition data.h:98
Maps specific metadata.
Definition data.h:123
size_t end_ptr
Definition data.h:125
size_t allocated
Definition data.h:124
_cbor_dst_metadata type
Definition data.h:126
Strings specific metadata.
Definition data.h:108
size_t codepoint_count
Definition data.h:110
_cbor_dst_metadata type
Definition data.h:112
Arrays specific metadata.
Definition data.h:135
uint64_t value
Definition data.h:137
struct cbor_item_t * tagged_item
Definition data.h:136
Streaming decoder result.
Definition data.h:230
enum cbor_decoder_status status
The decoding status.
Definition data.h:241
size_t read
Input bytes read/consumed.
Definition data.h:238
size_t required
Number of bytes in the input buffer needed to resume parsing.
Definition data.h:257
High-level decoding error.
Definition data.h:193
size_t position
Approximate position.
Definition data.h:195
cbor_error_code code
Description.
Definition data.h:197
Defines cbor_item_t::data structure for indefinite strings and bytestrings.
Definition data.h:186
cbor_item_t ** chunks
Definition data.h:189
The item handle.
Definition data.h:171
unsigned char * data
Raw data block - interpretation depends on metadata.
Definition data.h:179
cbor_type type
Major type discriminator.
Definition data.h:177
size_t refcount
Reference count - initialize to 0.
Definition data.h:175
union cbor_item_metadata metadata
Discriminated by type.
Definition data.h:173
High-level decoding result.
Definition data.h:206
size_t read
Number of bytes read.
Definition data.h:210
struct cbor_error error
Error indicator.
Definition data.h:208
Simple pair of items for use in maps.
Definition data.h:201
cbor_item_t * value
Definition data.h:202
cbor_item_t * key
Definition data.h:202
Raw memory casts helper.
Definition data.h:153
uint64_t as_uint
Definition data.h:155
double as_double
Definition data.h:154
Raw memory casts helper.
Definition data.h:147
uint32_t as_uint
Definition data.h:149
Union of metadata across all possible types - discriminated in cbor_item_t.
Definition data.h:160
struct _cbor_float_ctrl_metadata float_ctrl_metadata
Definition data.h:167
struct _cbor_array_metadata array_metadata
Definition data.h:164
struct _cbor_string_metadata string_metadata
Definition data.h:163
struct _cbor_tag_metadata tag_metadata
Definition data.h:166
struct _cbor_bytestring_metadata bytestring_metadata
Definition data.h:162
struct _cbor_int_metadata int_metadata
Definition data.h:161
struct _cbor_map_metadata map_metadata
Definition data.h:165