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