xref: /openbsd-src/lib/libcbor/src/cbor/internal/builder_callbacks.h (revision 4dcc46c4d04180142eda526ce521dfb137776d05)
1da0d961cSdjm /*
2d3425be1Sdjm  * Copyright (c) 2014-2020 Pavel Kalvoda <me@pavelkalvoda.com>
3da0d961cSdjm  *
4da0d961cSdjm  * libcbor is free software; you can redistribute it and/or modify
5da0d961cSdjm  * it under the terms of the MIT license. See LICENSE for details.
6da0d961cSdjm  */
7da0d961cSdjm 
8da0d961cSdjm #ifndef LIBCBOR_BUILDER_CALLBACKS_H
9da0d961cSdjm #define LIBCBOR_BUILDER_CALLBACKS_H
10da0d961cSdjm 
11da0d961cSdjm #include "../callbacks.h"
129e5c2ddcSdjm #include "cbor/common.h"
13da0d961cSdjm #include "stack.h"
14da0d961cSdjm 
15da0d961cSdjm #ifdef __cplusplus
16da0d961cSdjm extern "C" {
17da0d961cSdjm #endif
18da0d961cSdjm 
19da0d961cSdjm /** High-level decoding context */
20da0d961cSdjm struct _cbor_decoder_context {
21da0d961cSdjm   /** Callback creating the last item has failed */
22da0d961cSdjm   bool creation_failed;
23da0d961cSdjm   /** Stack expectation mismatch */
24da0d961cSdjm   bool syntax_error;
25da0d961cSdjm   cbor_item_t *root;
26da0d961cSdjm   struct _cbor_stack *stack;
27da0d961cSdjm };
28da0d961cSdjm 
29*4dcc46c4Sdjm /** Internal helper: Append item to the top of the stack while handling errors.
30*4dcc46c4Sdjm  */
31*4dcc46c4Sdjm void _cbor_builder_append(cbor_item_t *item, struct _cbor_decoder_context *ctx);
32*4dcc46c4Sdjm 
33da0d961cSdjm void cbor_builder_uint8_callback(void *, uint8_t);
34da0d961cSdjm 
35da0d961cSdjm void cbor_builder_uint16_callback(void *, uint16_t);
36da0d961cSdjm 
37da0d961cSdjm void cbor_builder_uint32_callback(void *, uint32_t);
38da0d961cSdjm 
39da0d961cSdjm void cbor_builder_uint64_callback(void *, uint64_t);
40da0d961cSdjm 
41da0d961cSdjm void cbor_builder_negint8_callback(void *, uint8_t);
42da0d961cSdjm 
43da0d961cSdjm void cbor_builder_negint16_callback(void *, uint16_t);
44da0d961cSdjm 
45da0d961cSdjm void cbor_builder_negint32_callback(void *, uint32_t);
46da0d961cSdjm 
47da0d961cSdjm void cbor_builder_negint64_callback(void *, uint64_t);
48da0d961cSdjm 
49*4dcc46c4Sdjm void cbor_builder_string_callback(void *, cbor_data, uint64_t);
50da0d961cSdjm 
51da0d961cSdjm void cbor_builder_string_start_callback(void *);
52da0d961cSdjm 
53*4dcc46c4Sdjm void cbor_builder_byte_string_callback(void *, cbor_data, uint64_t);
54da0d961cSdjm 
55da0d961cSdjm void cbor_builder_byte_string_start_callback(void *);
56da0d961cSdjm 
57*4dcc46c4Sdjm void cbor_builder_array_start_callback(void *, uint64_t);
58da0d961cSdjm 
59da0d961cSdjm void cbor_builder_indef_array_start_callback(void *);
60da0d961cSdjm 
61*4dcc46c4Sdjm void cbor_builder_map_start_callback(void *, uint64_t);
62da0d961cSdjm 
63da0d961cSdjm void cbor_builder_indef_map_start_callback(void *);
64da0d961cSdjm 
65da0d961cSdjm void cbor_builder_tag_callback(void *, uint64_t);
66da0d961cSdjm 
67da0d961cSdjm void cbor_builder_float2_callback(void *, float);
68da0d961cSdjm 
69da0d961cSdjm void cbor_builder_float4_callback(void *, float);
70da0d961cSdjm 
71da0d961cSdjm void cbor_builder_float8_callback(void *, double);
72da0d961cSdjm 
73da0d961cSdjm void cbor_builder_null_callback(void *);
74da0d961cSdjm 
75da0d961cSdjm void cbor_builder_undefined_callback(void *);
76da0d961cSdjm 
77da0d961cSdjm void cbor_builder_boolean_callback(void *, bool);
78da0d961cSdjm 
79da0d961cSdjm void cbor_builder_indef_break_callback(void *);
80da0d961cSdjm 
81da0d961cSdjm #ifdef __cplusplus
82da0d961cSdjm }
83da0d961cSdjm #endif
84da0d961cSdjm 
85da0d961cSdjm #endif  // LIBCBOR_BUILDER_CALLBACKS_H
86