blob: 87c2b289f2bf92da333949117f35dcc59e8956e5 [file] [log] [blame]
/* ==========================================================================
* err_to_str.c -- strings names for errors
*
* Copyright (c) 2020, Patrick Uiterwijk. All rights reserved.
* Copyright (c) 2020,2024, Laurence Lundblade.
* Copyright (c) 2021, Arm Limited. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*
* See BSD-3-Clause license in README.md
*
* Created on 3/21/20
* ========================================================================== */
#include "qcbor/qcbor_common.h"
#include <string.h>
#define ERR_TO_STR_CASE(errpart) case errpart: return #errpart;
const char *
qcbor_err_to_str(const QCBORError uErr) {
switch (uErr) {
ERR_TO_STR_CASE(QCBOR_SUCCESS)
ERR_TO_STR_CASE(QCBOR_ERR_BUFFER_TOO_SMALL)
ERR_TO_STR_CASE(QCBOR_ERR_ENCODE_UNSUPPORTED)
ERR_TO_STR_CASE(QCBOR_ERR_BUFFER_TOO_LARGE)
ERR_TO_STR_CASE(QCBOR_ERR_ARRAY_NESTING_TOO_DEEP)
ERR_TO_STR_CASE(QCBOR_ERR_CLOSE_MISMATCH)
ERR_TO_STR_CASE(QCBOR_ERR_ARRAY_TOO_LONG)
ERR_TO_STR_CASE(QCBOR_ERR_TOO_MANY_CLOSES)
ERR_TO_STR_CASE(QCBOR_ERR_ARRAY_OR_MAP_STILL_OPEN)
ERR_TO_STR_CASE(QCBOR_ERR_OPEN_BYTE_STRING)
ERR_TO_STR_CASE(QCBOR_ERR_CANNOT_CANCEL)
ERR_TO_STR_CASE(QCBOR_ERR_BAD_TYPE_7)
ERR_TO_STR_CASE(QCBOR_ERR_EXTRA_BYTES)
ERR_TO_STR_CASE(QCBOR_ERR_UNSUPPORTED)
ERR_TO_STR_CASE(QCBOR_ERR_ARRAY_OR_MAP_UNCONSUMED)
ERR_TO_STR_CASE(QCBOR_ERR_BAD_INT)
ERR_TO_STR_CASE(QCBOR_ERR_INDEFINITE_STRING_CHUNK)
ERR_TO_STR_CASE(QCBOR_ERR_HIT_END)
ERR_TO_STR_CASE(QCBOR_ERR_BAD_BREAK)
ERR_TO_STR_CASE(QCBOR_ERR_INPUT_TOO_LARGE)
ERR_TO_STR_CASE(QCBOR_ERR_ARRAY_DECODE_NESTING_TOO_DEEP)
ERR_TO_STR_CASE(QCBOR_ERR_ARRAY_DECODE_TOO_LONG)
ERR_TO_STR_CASE(QCBOR_ERR_STRING_TOO_LONG)
ERR_TO_STR_CASE(QCBOR_ERR_BAD_EXP_AND_MANTISSA)
ERR_TO_STR_CASE(QCBOR_ERR_NO_STRING_ALLOCATOR)
ERR_TO_STR_CASE(QCBOR_ERR_STRING_ALLOCATE)
ERR_TO_STR_CASE(QCBOR_ERR_MAP_LABEL_TYPE)
ERR_TO_STR_CASE(QCBOR_ERR_UNRECOVERABLE_TAG_CONTENT)
ERR_TO_STR_CASE(QCBOR_ERR_INDEF_LEN_STRINGS_DISABLED)
ERR_TO_STR_CASE(QCBOR_ERR_INDEF_LEN_ARRAYS_DISABLED)
ERR_TO_STR_CASE(QCBOR_ERR_TAGS_DISABLED)
ERR_TO_STR_CASE(QCBOR_ERR_TOO_MANY_TAGS)
ERR_TO_STR_CASE(QCBOR_ERR_UNEXPECTED_TYPE)
ERR_TO_STR_CASE(QCBOR_ERR_DUPLICATE_LABEL)
ERR_TO_STR_CASE(QCBOR_ERR_MEM_POOL_SIZE)
ERR_TO_STR_CASE(QCBOR_ERR_INT_OVERFLOW)
ERR_TO_STR_CASE(QCBOR_ERR_DATE_OVERFLOW)
ERR_TO_STR_CASE(QCBOR_ERR_EXIT_MISMATCH)
ERR_TO_STR_CASE(QCBOR_ERR_NO_MORE_ITEMS)
ERR_TO_STR_CASE(QCBOR_ERR_LABEL_NOT_FOUND)
ERR_TO_STR_CASE(QCBOR_ERR_NUMBER_SIGN_CONVERSION)
ERR_TO_STR_CASE(QCBOR_ERR_CONVERSION_UNDER_OVER_FLOW)
ERR_TO_STR_CASE(QCBOR_ERR_MAP_NOT_ENTERED)
ERR_TO_STR_CASE(QCBOR_ERR_CALLBACK_FAIL)
ERR_TO_STR_CASE(QCBOR_ERR_FLOAT_DATE_DISABLED)
ERR_TO_STR_CASE(QCBOR_ERR_HALF_PRECISION_DISABLED)
ERR_TO_STR_CASE(QCBOR_ERR_HW_FLOAT_DISABLED)
ERR_TO_STR_CASE(QCBOR_ERR_FLOAT_EXCEPTION)
ERR_TO_STR_CASE(QCBOR_ERR_ALL_FLOAT_DISABLED)
ERR_TO_STR_CASE(QCBOR_ERR_RECOVERABLE_BAD_TAG_CONTENT)
ERR_TO_STR_CASE(QCBOR_ERR_CANNOT_ENTER_ALLOCATED_STRING)
default:
if(uErr >= QCBOR_ERR_FIRST_USER_DEFINED && uErr <= QCBOR_ERR_LAST_USER_DEFINED) {
/* Static buffer is not thread safe, but this is only a diagnostic */
static char buf[20];
strcpy(buf, "USER_DEFINED_");
size_t uEndOffset = strlen(buf);
buf[uEndOffset] = (char)(uErr/100 + '0');
buf[uEndOffset+1] = (char)(((uErr/10) % 10) + '0');
buf[uEndOffset+2] = (char)((uErr % 10 )+ '0');
buf[uEndOffset+3] = '\0';
return buf;
} else {
return "Unidentified QCBOR error";
}
}
}