13#ifndef qcbor_spiffy_decode_h
14#define qcbor_spiffy_decode_h
169#define QCBOR_TAG_REQUIREMENT_TAG 0
175#define QCBOR_TAG_REQUIREMENT_NOT_A_TAG 1
181#define QCBOR_TAG_REQUIREMENT_OPTIONAL_TAG 2
185#define QCBOR_TAG_REQUIREMENT_ALLOW_ADDITIONAL_TAGS 0x80
192#define QCBOR_CONVERT_TYPE_XINT64 0x01
195#define QCBOR_CONVERT_TYPE_FLOAT 0x02
198#define QCBOR_CONVERT_TYPE_BIG_NUM 0x04
201#define QCBOR_CONVERT_TYPE_DECIMAL_FRACTION 0x08
204#define QCBOR_CONVERT_TYPE_BIGFLOAT 0x10
284 uint32_t uConvertTypes,
290 uint32_t uConvertTypes,
296 uint32_t uConvertTypes,
339 uint32_t uConvertTypes,
345 uint32_t uConvertTypes,
351 uint32_t uConvertTypes,
411 uint32_t uConvertTypes,
417 uint32_t uConvertTypes,
423 uint32_t uConvertTypes,
442 uint32_t uConvertTypes,
448 uint32_t uConvertTypes,
454 uint32_t uConvertTypes,
520#ifndef USEFULBUF_DISABLE_ALL_FLOAT
591 uint32_t uConvertTypes,
597 uint32_t uConvertTypes,
603 uint32_t uConvertTypes,
632 uint32_t uConvertTypes,
638 uint32_t uConvertTypes,
644 uint32_t uConvertTypes,
1005 const char *szLabel,
1147 const char *szLabel,
1170 const char *szLabel);
1193 const char *szLabel);
1217 uint8_t *puSimpleValue);
1221 const char *szLabel,
1222 uint8_t *puSimpleValue);
1247 uint8_t uTagRequirement,
1253 uint8_t uTagRequirement,
1258 const char *szLabel,
1259 uint8_t uTagRequirement,
1283 uint8_t uTagRequirement,
1289 uint8_t uTagRequirement,
1294 const char *szLabel,
1295 uint8_t uTagRequirement,
1344 uint8_t uTagRequirement,
1350 uint8_t uTagRequirement,
1355 const char *szLabel,
1356 uint8_t uTagRequirement,
1381 uint8_t uTagRequirement,
1387 uint8_t uTagRequirement,
1392 const char *szLabel,
1393 uint8_t uTagRequirement,
1449 uint8_t uTagRequirement,
1451 bool *pbIsNegative);
1456 uint8_t uTagRequirement,
1458 bool *pbIsNegative);
1462 const char *szLabel,
1463 uint8_t uTagRequirement,
1465 bool *pbIsNegative);
1470#ifndef QCBOR_DISABLE_EXP_AND_MANTISSA
1519 uint8_t uTagRequirement,
1520 int64_t *pnMantissa,
1521 int64_t *pnExponent);
1526 uint8_t uTagRequirement,
1527 int64_t *pnMantissa,
1528 int64_t *pnExponent);
1532 const char *szLabel,
1533 uint8_t uTagRequirement,
1534 int64_t *pnMantissa,
1535 int64_t *pnExponent);
1584 uint8_t uTagRequirement,
1587 bool *pbMantissaIsNegative,
1588 int64_t *pnExponent);
1593 uint8_t uTagRequirement,
1597 int64_t *pnExponent);
1601 const char *szLabel,
1602 uint8_t uTagRequirement,
1605 bool *pbMantissaIsNegative,
1606 int64_t *pnExponent);
1638 uint8_t uTagRequirement,
1639 int64_t *pnMantissa,
1640 int64_t *pnExponent);
1645 uint8_t uTagRequirement,
1646 int64_t *pnMantissa,
1647 int64_t *pnExponent);
1651 const char *szLabel,
1652 uint8_t uTagRequirement,
1653 int64_t *pnMantissa,
1654 int64_t *pnExponent);
1684 uint8_t uTagRequirement,
1687 bool *pbMantissaIsNegative,
1688 int64_t *pnExponent);
1693 uint8_t uTagRequirement,
1696 bool *pbMantissaIsNegative,
1697 int64_t *pnExponent);
1701 const char *szLabel,
1702 uint8_t uTagRequirement,
1705 bool *pbMantissaIsNegative,
1706 int64_t *pnExponent);
1732 uint8_t uTagRequirement,
1738 uint8_t uTagRequirement,
1743 const char * szLabel,
1744 uint8_t uTagRequirement,
1770 uint8_t uTagRequirement,
1776 uint8_t uTagRequirement,
1781 const char *szLabel,
1782 uint8_t uTagRequirement,
1807 uint8_t uTagRequirement,
1813 uint8_t uTagRequirement,
1818 const char *szLabel,
1819 uint8_t uTagRequirement,
1842 uint8_t uTagRequirement,
1848 uint8_t uTagRequirement,
1853 const char * szLabel,
1854 uint8_t uTagRequirement,
1891 uint8_t uTagRequirement,
1898 uint8_t uTagRequirement,
1905 const char *szLabel,
1906 uint8_t uTagRequirement,
1930 uint8_t uTagRequirement,
1936 uint8_t uTagRequirement,
1941 const char *szLabel,
1942 uint8_t uTagRequirement,
2000 uint8_t uTagRequirement,
2006 uint8_t uTagRequirement,
2011 const char *szLabel,
2012 uint8_t uTagRequirement,
2043 uint32_t uConvertTypes,
2052 uint32_t uConvertTypes,
2060 const char *szLabel,
2061 uint32_t uConvertTypes,
2080 uint32_t uConvertTypes,
2088 uint32_t uConvertTypes,
2095 const char *szLabel,
2096 uint32_t uConvertTypes,
2101#ifndef USEFULBUF_DISABLE_ALL_FLOAT
2105 uint32_t uConvertTypes,
2113 uint32_t uConvertTypes,
2120 const char *szLabel,
2121 uint32_t uConvertTypes,
2126#define QCBOR_TAGSPEC_NUM_TYPES 4
2138 uint8_t uTagRequirement;
2141 uint8_t uTaggedTypes[QCBOR_TAGSPEC_NUM_TYPES];
2144 uint8_t uAllowedContentTypes[QCBOR_TAGSPEC_NUM_TYPES];
2165 const char *szLabel,
2172QCBORDecode_Private_GetMIME(uint8_t uTagRequirement,
2183 const uint32_t uConvertTypes,
2187 QCBORDecode_Private_GetUInt64Convert(pMe, uConvertTypes, puValue, &Item);
2192 const int64_t nLabel,
2193 const uint32_t uConvertTypes,
2197 QCBORDecode_Private_GetUInt64ConvertInMapN(pMe,
2206 const char *szLabel,
2207 const uint32_t uConvertTypes,
2211 QCBORDecode_Private_GetUInt64ConvertInMapSZ(pMe,
2226 const int64_t nLabel,
2229 QCBORDecode_GetUInt64ConvertInMapN(pMe,
2237 const char *szLabel,
2240 QCBORDecode_GetUInt64ConvertInMapSZ(pMe,
2249 QCBORDecode_Private_EnterBoundedMapOrArray(pMe,
QCBOR_TYPE_MAP, pItem);
2292 QCBORDecode_Private_GetArrayOrMap(pMe,
QCBOR_TYPE_ARRAY, pItem, pEncodedCBOR);
2308 QCBORDecode_Private_SearchAndGetArrayOrMap(pMe, OneItemSearch, pItem, pEncodedCBOR);
2314 const char *szLabel,
2318#ifndef QCBOR_DISABLE_NON_INTEGER_LABELS
2325 QCBORDecode_Private_SearchAndGetArrayOrMap(pMe, OneItemSearch, pItem, pEncodedCBOR);
2339 QCBORDecode_Private_GetArrayOrMap(pMe,
QCBOR_TYPE_MAP, pItem, pEncodedCBOR);
2355 QCBORDecode_Private_SearchAndGetArrayOrMap(pMe, OneItemSearch, pItem, pEncodedCBOR);
2361 const char *szLabel,
2365#ifndef QCBOR_DISABLE_NON_INTEGER_LABELS
2372 QCBORDecode_Private_SearchAndGetArrayOrMap(pMe, OneItemSearch, pItem, pEncodedCBOR);
2385 const uint32_t uConvertTypes,
2389 QCBORDecode_Private_GetInt64Convert(pMe, uConvertTypes, pnValue, &Item);
2394 const int64_t nLabel,
2395 const uint32_t uConvertTypes,
2399 QCBORDecode_Private_GetInt64ConvertInMapN(pMe,
2408 const char *szLabel,
2409 const uint32_t uConvertTypes,
2413 QCBORDecode_Private_GetInt64ConvertInMapSZ(pMe,
2428 const int64_t nLabel,
2431 QCBORDecode_GetInt64ConvertInMapN(pMe,
2439 const char *szLabel,
2442 QCBORDecode_GetInt64ConvertInMapSZ(pMe,
2452#ifndef USEFULBUF_DISABLE_ALL_FLOAT
2455 const uint32_t uConvertTypes,
2459 QCBORDecode_Private_GetDoubleConvert(pMe, uConvertTypes, pdValue, &Item);
2464 const int64_t nLabel,
2465 uint32_t uConvertTypes,
2469 QCBORDecode_Private_GetDoubleConvertInMapN(pMe,
2478 const char *szLabel,
2479 const uint32_t uConvertTypes,
2483 QCBORDecode_Private_GetDoubleConvertInMapSZ(pMe,
2498 const int64_t nLabel,
2501 QCBORDecode_GetDoubleConvertInMapN(pMe,
2509 const char *szLabel,
2512 QCBORDecode_GetDoubleConvertInMapSZ(pMe,
2534 QCBORDecode_Private_GetTaggedString(pMe, TagSpec, pValue);
2539 const int64_t nLabel,
2548 QCBORDecode_Private_GetTaggedStringInMapN(pMe, nLabel, TagSpec, pBstr);
2553 const char *szLabel,
2563 QCBORDecode_Private_GetTaggedStringInMapSZ(pMe, szLabel, TagSpec, pBstr);
2578 QCBORDecode_Private_GetTaggedString(pMe, TagSpec, pValue);
2583 const int64_t nLabel,
2595 QCBORDecode_Private_GetTaggedStringInMapN(pMe, nLabel, TagSpec, pText);
2600 const char *szLabel,
2610 QCBORDecode_Private_GetTaggedStringInMapSZ(pMe, szLabel, TagSpec, pText);
2626 const int64_t nLabel)
2634 const char *szLabel)
2653 const int64_t nLabel)
2661 const char *szLabel)
2671 const uint8_t uTagRequirement,
2681 QCBORDecode_Private_GetTaggedString(pMe, TagSpec, pValue);
2686 const int64_t nLabel,
2687 const uint8_t uTagRequirement,
2697 QCBORDecode_Private_GetTaggedStringInMapN(pMe, nLabel, TagSpec, pText);
2702 const char *szLabel,
2703 const uint8_t uTagRequirement,
2713 QCBORDecode_Private_GetTaggedStringInMapSZ(pMe, szLabel, TagSpec, pText);
2718 const uint8_t uTagRequirement,
2728 QCBORDecode_Private_GetTaggedString(pMe, TagSpec, pValue);
2733 const int64_t nLabel,
2734 const uint8_t uTagRequirement,
2744 QCBORDecode_Private_GetTaggedStringInMapN(pMe, nLabel, TagSpec, pText);
2749 const char *szLabel,
2750 const uint8_t uTagRequirement,
2760 QCBORDecode_Private_GetTaggedStringInMapSZ(pMe, szLabel, TagSpec, pText);
2767 const uint8_t uTagRequirement,
2777 QCBORDecode_Private_GetTaggedString(pMe, TagSpec, pUUID);
2782 const int64_t nLabel,
2783 const uint8_t uTagRequirement,
2793 QCBORDecode_Private_GetTaggedStringInMapN(pMe, nLabel, TagSpec, pUUID);
2798 const char *szLabel,
2799 const uint8_t uTagRequirement,
2809 QCBORDecode_Private_GetTaggedStringInMapSZ(pMe, szLabel, TagSpec, pUUID);
2815 const uint8_t uTagRequirement,
2825 QCBORDecode_Private_GetTaggedString(pMe, TagSpec, pB64Text);
2830 const int64_t nLabel,
2831 const uint8_t uTagRequirement,
2841 QCBORDecode_Private_GetTaggedStringInMapN(pMe, nLabel, TagSpec, pB64Text);
2846 const char *szLabel,
2847 const uint8_t uTagRequirement,
2856 QCBORDecode_Private_GetTaggedStringInMapSZ(pMe, szLabel, TagSpec, pB64Text);
2862 const uint8_t uTagRequirement,
2872 QCBORDecode_Private_GetTaggedString(pMe, TagSpec, pB64Text);
2877 const int64_t nLabel,
2878 const uint8_t uTagRequirement,
2888 QCBORDecode_Private_GetTaggedStringInMapN(pMe, nLabel, TagSpec, pB64Text);
2893 const char *szLabel,
2894 const uint8_t uTagRequirement,
2904 QCBORDecode_Private_GetTaggedStringInMapSZ(pMe, szLabel, TagSpec, pB64Text);
2910 const uint8_t uTagRequirement,
2920 QCBORDecode_Private_GetTaggedString(pMe, TagSpec, pRegex);
2925 const int64_t nLabel,
2926 const uint8_t uTagRequirement,
2936 QCBORDecode_Private_GetTaggedStringInMapN(pMe, nLabel, TagSpec, pRegex);
2941 const char * szLabel,
2942 const uint8_t uTagRequirement,
2952 QCBORDecode_Private_GetTaggedStringInMapSZ(pMe, szLabel, TagSpec, pRegex);
2958 const uint8_t uTagRequirement,
2970 pMe->uLastError = (uint8_t)uError;
2974 pMe->uLastError = (uint8_t)QCBORDecode_Private_GetMIME(uTagRequirement,
2982 const int64_t nLabel,
2983 const uint8_t uTagRequirement,
2991 pMe->uLastError = (uint8_t)QCBORDecode_Private_GetMIME(uTagRequirement,
3000 const char *szLabel,
3001 const uint8_t uTagRequirement,
3009 pMe->uLastError = (uint8_t)QCBORDecode_Private_GetMIME(uTagRequirement,
3019 const uint8_t uTagRequirement,
3029 QCBORDecode_Private_GetTaggedString(pMe, TagSpec, pUUID);
3034 const int64_t nLabel,
3035 const uint8_t uTagRequirement,
3045 QCBORDecode_Private_GetTaggedStringInMapN(pMe, nLabel, TagSpec, pUUID);
3050 const char *szLabel,
3051 const uint8_t uTagRequirement,
3061 QCBORDecode_Private_GetTaggedStringInMapSZ(pMe, szLabel, TagSpec, pUUID);
struct q_useful_buf UsefulBuf
static UsefulBufC UsefulBuf_FromSZ(const char *szString)
Convert a NULL-terminated string to a UsefulBufC.
Definition UsefulBuf.h:1835
struct q_useful_buf_c UsefulBufC
QCBORError
Definition qcbor_common.h:265
@ QCBOR_ERR_MAP_LABEL_TYPE
Definition qcbor_common.h:415
@ QCBOR_ERR_UNEXPECTED_TYPE
Definition qcbor_common.h:452
@ QCBOR_SUCCESS
Definition qcbor_common.h:267
#define QCBOR_TYPE_DAYS_STRING
Definition qcbor_decode.h:362
#define QCBOR_TYPE_BASE64URL
Definition qcbor_decode.h:335
void QCBORDecode_VGetNext(QCBORDecodeContext *pCtx, QCBORItem *pDecodedItem)
Get the next item (integer, byte string, array...) in the preorder traversal of the CBOR tree.
#define QCBOR_TYPE_UUID
Definition qcbor_decode.h:349
#define QCBOR_TYPE_DATE_STRING
Definition qcbor_decode.h:257
#define QCBOR_TYPE_ANY
Definition qcbor_decode.h:219
#define QCBOR_TYPE_BASE64
Definition qcbor_decode.h:339
QCBORError QCBORDecode_GetNext(QCBORDecodeContext *pCtx, QCBORItem *pDecodedItem)
Preorder traversal like QCBORDecode_VGetNext() without use of internal error state.
#define QCBOR_TYPE_NONE
Definition qcbor_decode.h:216
#define QCBOR_TYPE_NULL
Definition qcbor_decode.h:308
#define QCBOR_TYPE_TEXT_STRING
Definition qcbor_decode.h:242
#define QCBOR_TYPE_ARRAY
Definition qcbor_decode.h:231
#define QCBOR_TYPE_REGEX
Definition qcbor_decode.h:342
#define QCBOR_TYPE_INT64
Definition qcbor_decode.h:224
#define QCBOR_TYPE_UNDEF
Definition qcbor_decode.h:311
#define QCBOR_TYPE_MAP
Definition qcbor_decode.h:234
struct _QCBORDecodeContext QCBORDecodeContext
Definition qcbor_decode.h:659
#define QCBOR_TYPE_BYTE_STRING
Definition qcbor_decode.h:237
struct _QCBORItem QCBORItem
#define QCBOR_TYPE_URI
Definition qcbor_decode.h:331
void QCBORDecode_GetItemsInMap(QCBORDecodeContext *pCtx, QCBORItem *pItemList)
Get multiple labeled items from a CBOR map efficiently.
static void QCBORDecode_GetUndefined(QCBORDecodeContext *pCtx)
Decode the next item as a CBOR "undefined" item.
Definition qcbor_spiffy_decode.h:2641
static void QCBORDecode_EnterArray(QCBORDecodeContext *pCtx, QCBORItem *pItem)
Enter an array for decoding in bounded mode.
Definition qcbor_spiffy_decode.h:2253
static void QCBORDecode_GetArray(QCBORDecodeContext *pCtx, QCBORItem *pItem, UsefulBufC *pEncodedCBOR)
Get the encoded bytes that make up an array.
Definition qcbor_spiffy_decode.h:2288
void QCBORDecode_GetDecimalFraction(QCBORDecodeContext *pCtx, uint8_t uTagRequirement, int64_t *pnMantissa, int64_t *pnExponent)
Decode the next item as a decimal fraction.
void QCBORDecode_GetItemInMapN(QCBORDecodeContext *pCtx, int64_t nLabel, uint8_t uQcborType, QCBORItem *pItem)
Get an item in map by label and type.
static void QCBORDecode_GetB64URL(QCBORDecodeContext *pCtx, uint8_t uTagRequirement, UsefulBufC *pB64Text)
Decode the next item as base64URL encoded text.
Definition qcbor_spiffy_decode.h:2861
static void QCBORDecode_GetB64(QCBORDecodeContext *pCtx, uint8_t uTagRequirement, UsefulBufC *pB64Text)
Decode the next item as base64 encoded text.
Definition qcbor_spiffy_decode.h:2814
static void QCBORDecode_GetUInt64Convert(QCBORDecodeContext *pCtx, uint32_t uConvertTypes, uint64_t *puValue)
Decode next item as an unsigned 64-bit integer with basic conversions.
Definition qcbor_spiffy_decode.h:2182
void QCBORDecode_GetDoubleConvertAll(QCBORDecodeContext *pCtx, uint32_t uConvertTypes, double *pdValue)
Decode next item as a double floating-point value with conversion.
static void QCBORDecode_GetDouble(QCBORDecodeContext *pCtx, double *pValue)
Decode next item into a double floating-point value.
Definition qcbor_spiffy_decode.h:2491
void QCBORDecode_GetBool(QCBORDecodeContext *pCtx, bool *pbBool)
Decode the next item as a Boolean.
void QCBORDecode_GetBigFloat(QCBORDecodeContext *pCtx, uint8_t uTagRequirement, int64_t *pnMantissa, int64_t *pnExponent)
Decode the next item as a big float.
#define QCBOR_CONVERT_TYPE_FLOAT
Definition qcbor_spiffy_decode.h:195
static void QCBORDecode_GetNull(QCBORDecodeContext *pCtx)
Decode the next item as a null.
Definition qcbor_spiffy_decode.h:2614
void QCBORDecode_GetEpochDays(QCBORDecodeContext *pCtx, uint8_t uTagRequirement, int64_t *pnDays)
Decode the next item as an days-count epoch date.
static void QCBORDecode_GetMIMEMessage(QCBORDecodeContext *pCtx, uint8_t uTagRequirement, UsefulBufC *pMessage, bool *pbIsTag257)
Decode the next item as a MIME message.
Definition qcbor_spiffy_decode.h:2957
void QCBORDecode_GetUInt64ConvertAll(QCBORDecodeContext *pCtx, uint32_t uConvertTypes, uint64_t *puValue)
Decode next item into an unsigned 64-bit integer with conversions.
void QCBORDecode_Rewind(QCBORDecodeContext *pCtx)
Reset traversal cursor to start of map, array, byte-string wrapped CBOR or start of input.
void QCBORDecode_GetEpochDate(QCBORDecodeContext *pCtx, uint8_t uTagRequirement, int64_t *pnTime)
Decode the next item as an epoch date.
static void QCBORDecode_GetDaysString(QCBORDecodeContext *pCtx, uint8_t uTagRequirement, UsefulBufC *pDateString)
Decode the next item as a date-only string.
Definition qcbor_spiffy_decode.h:2717
static void QCBORDecode_ExitArray(QCBORDecodeContext *pCtx)
Exit an array that has been enetered.
Definition qcbor_spiffy_decode.h:2259
static void QCBORDecode_GetUInt64(QCBORDecodeContext *pCtx, uint64_t *puValue)
Decode next item into an unsigned 64-bit integer.
Definition qcbor_spiffy_decode.h:2219
void QCBORDecode_GetSimple(QCBORDecodeContext *pCtx, uint8_t *puSimpleValue)
Decode the next item as a CBOR simple value.
void QCBORDecode_GetBigFloatBig(QCBORDecodeContext *pCtx, uint8_t uTagRequirement, UsefulBuf MantissaBuffer, UsefulBufC *pMantissa, bool *pbMantissaIsNegative, int64_t *pnExponent)
Decode the next item as a big float with a big number mantissa.
void QCBORDecode_EnterBstrWrapped(QCBORDecodeContext *pCtx, uint8_t uTagRequirement, UsefulBufC *pBstr)
Decode some byte-string wrapped CBOR.
void QCBORDecode_GetInt64ConvertAll(QCBORDecodeContext *pCtx, uint32_t uConvertTypes, int64_t *pnValue)
Decode next item into a signed 64-bit integer with conversions.
#define QCBOR_TAG_REQUIREMENT_NOT_A_TAG
Definition qcbor_spiffy_decode.h:175
void QCBORDecode_ExitBstrWrapped(QCBORDecodeContext *pCtx)
Exit some bstr-wrapped CBOR has been enetered.
void QCBORDecode_GetItemsInMapWithCallback(QCBORDecodeContext *pCtx, QCBORItem *pItemList, void *pCallbackCtx, QCBORItemCallback pfCB)
Get a group of labeled items all at once from a map with a callback.
static void QCBORDecode_GetInt64(QCBORDecodeContext *pCtx, int64_t *pnValue)
Decode next item into a signed 64-bit integer.
Definition qcbor_spiffy_decode.h:2421
static void QCBORDecode_GetInt64Convert(QCBORDecodeContext *pCtx, uint32_t uConvertTypes, int64_t *pnValue)
Decode next item into a signed 64-bit integer with basic conversions.
Definition qcbor_spiffy_decode.h:2384
#define QCBOR_TAG_REQUIREMENT_TAG
Definition qcbor_spiffy_decode.h:169
static void QCBORDecode_GetByteString(QCBORDecodeContext *pCtx, UsefulBufC *pBytes)
Decode the next item as a byte string.
Definition qcbor_spiffy_decode.h:2524
static void QCBORDecode_EnterMap(QCBORDecodeContext *pCtx, QCBORItem *pItem)
Enter a map for decoding and searching.
Definition qcbor_spiffy_decode.h:2248
static void QCBORDecode_GetURI(QCBORDecodeContext *pCtx, uint8_t uTagRequirement, UsefulBufC *pURI)
Decode the next item as a URI.
Definition qcbor_spiffy_decode.h:2766
static void QCBORDecode_GetDateString(QCBORDecodeContext *pCtx, uint8_t uTagRequirement, UsefulBufC *pDateString)
Decode the next item as a date string.
Definition qcbor_spiffy_decode.h:2670
static void QCBORDecode_GetTextString(QCBORDecodeContext *pCtx, UsefulBufC *pText)
Decode the next item as a text string.
Definition qcbor_spiffy_decode.h:2568
#define QCBOR_CONVERT_TYPE_XINT64
Definition qcbor_spiffy_decode.h:192
void QCBORDecode_GetDecimalFractionBig(QCBORDecodeContext *pCtx, uint8_t uTagRequirement, UsefulBuf MantissaBuffer, UsefulBufC *pMantissa, bool *pbMantissaIsNegative, int64_t *pnExponent)
Decode the next item as a decimal fraction with a big number mantissa.
#define QCBOR_TAG_REQUIREMENT_ALLOW_ADDITIONAL_TAGS
Definition qcbor_spiffy_decode.h:185
static void QCBORDecode_GetMap(QCBORDecodeContext *pCtx, QCBORItem *pItem, UsefulBufC *pEncodedCBOR)
Get the bytes that make up a map.
Definition qcbor_spiffy_decode.h:2335
static void QCBORDecode_GetBinaryUUID(QCBORDecodeContext *pCtx, uint8_t uTagRequirement, UsefulBufC *pUUID)
Decode the next item as a UUID.
Definition qcbor_spiffy_decode.h:3018
QCBORError(* QCBORItemCallback)(void *pCallbackCtx, const QCBORItem *pItem)
Per-item callback for map searching.
Definition qcbor_spiffy_decode.h:1087
static void QCBORDecode_GetDoubleConvert(QCBORDecodeContext *pCtx, uint32_t uConvertTypes, double *pdValue)
Decode next item into a double floating-point with basic conversion.
Definition qcbor_spiffy_decode.h:2454
void QCBORDecode_GetBignum(QCBORDecodeContext *pCtx, uint8_t uTagRequirement, UsefulBufC *pValue, bool *pbIsNegative)
Decode the next item as a big number.
static void QCBORDecode_GetRegex(QCBORDecodeContext *pCtx, uint8_t uTagRequirement, UsefulBufC *pRegex)
Decode the next item as a regular expression.
Definition qcbor_spiffy_decode.h:2909
static void QCBORDecode_ExitMap(QCBORDecodeContext *pCtx)
Exit a map that has been enetered.
Definition qcbor_spiffy_decode.h:2265
union _QCBORItem::@142366264112071376221236236241357252244130212175 label
UsefulBufC string
Definition qcbor_decode.h:475
int64_t int64
Definition qcbor_decode.h:468
uint8_t uDataType
Definition qcbor_decode.h:437
uint8_t uLabelType
Definition qcbor_decode.h:441
Definition qcbor_spiffy_decode.h:2136