40#include "qcbor/qcbor_private.h"
401#define QCBOR_HEAD_BUFFER_SIZE (sizeof(uint64_t) + 2)
408#define QCBOR_ENCODE_AS_TAG 0
414#define QCBOR_ENCODE_AS_BORROWED 1
530QCBOREncode_AddInt64ToMapSZ(
QCBOREncodeContext *pCtx,
const char *szLabel, int64_t nNum);
554QCBOREncode_AddUInt64ToMapSZ(
QCBOREncodeContext *pCtx,
const char *szLabel, uint64_t uNum);
620QCBOREncode_AddSZStringToMapSZ(
QCBOREncodeContext *pCtx,
const char *szLabel,
const char *szString);
623QCBOREncode_AddSZStringToMapN(
QCBOREncodeContext *pCtx, int64_t nLabel,
const char *szString);
626#ifndef USEFULBUF_DISABLE_ALL_FLOAT
667QCBOREncode_AddDoubleToMapSZ(
QCBOREncodeContext *pCtx,
const char *szLabel,
double dNum);
690QCBOREncode_AddFloatToMapSZ(
QCBOREncodeContext *pCtx,
const char *szLabel,
float fNum);
714QCBOREncode_AddDoubleNoPreferredToMapSZ(
QCBOREncodeContext *pCtx,
const char *szLabel,
double dNum);
717QCBOREncode_AddDoubleNoPreferredToMapN(
QCBOREncodeContext *pCtx, int64_t nLabel,
double dNum);
738QCBOREncode_AddFloatNoPreferredToMapSZ(
QCBOREncodeContext *pCtx,
const char *szLabel,
float fNum);
741QCBOREncode_AddFloatNoPreferredToMapN(
QCBOREncodeContext *pCtx, int64_t nLabel,
float fNum);
808 uint8_t uTagRequirement,
814 uint8_t uTagRequirement,
820 uint8_t uTagRequirement,
847 uint8_t uTagRequirement,
853 uint8_t uTagRequirement,
859 uint8_t uTagRequirement,
968 uint8_t uTagRequirement,
974 uint8_t uTagRequirement,
980 uint8_t uTagRequirement,
1007 uint8_t uTagRequirement,
1012 const char *szLabel,
1013 uint8_t uTagRequirement,
1019 uint8_t uTagRequirement,
1047 uint8_t uTagRequirement,
1052 const char *szLabel,
1053 uint8_t uTagRequirement,
1059 uint8_t uTagRequirement,
1063#ifndef QCBOR_DISABLE_EXP_AND_MANTISSA
1106 uint8_t uTagRequirement,
1108 int64_t nBase10Exponent);
1112 const char *szLabel,
1113 uint8_t uTagRequirement,
1115 int64_t nBase10Exponent);
1120 uint8_t uTagRequirement,
1122 int64_t nBase10Exponent);
1147 uint8_t uTagRequirement,
1150 int64_t nBase10Exponent);
1154 const char *szLabel,
1155 uint8_t uTagRequirement,
1158 int64_t nBase10Exponent);
1163 uint8_t uTagRequirement,
1166 int64_t nBase10Exponent);
1207 uint8_t uTagRequirement,
1209 int64_t nBase2Exponent);
1213 const char *szLabel,
1214 uint8_t uTagRequirement,
1216 int64_t nBase2Exponent);
1221 uint8_t uTagRequirement,
1223 int64_t nBase2Exponent);
1249 uint8_t uTagRequirement,
1252 int64_t nBase2Exponent);
1256 const char *szLabel,
1257 uint8_t uTagRequirement,
1260 int64_t nBase2Exponent);
1265 uint8_t uTagRequirement,
1268 int64_t nBase2Exponent);
1294 uint8_t uTagRequirement,
1299 const char *szLabel,
1300 uint8_t uTagRequirement,
1306 uint8_t uTagRequirement,
1326 uint8_t uTagRequirement,
1331 const char *szLabel,
1332 uint8_t uTagRequirement,
1338 uint8_t uTagRequirement,
1359 uint8_t uTagRequirement,
1364 const char *szLabel,
1365 uint8_t uTagRequirement,
1371 uint8_t uTagRequirement,
1391 uint8_t uTagRequirement,
1396 const char *szLabel,
1397 uint8_t uTagRequirement,
1403 uint8_t uTagRequirement,
1437 uint8_t uTagRequirement,
1442 const char *szLabel,
1443 uint8_t uTagRequirement,
1449 uint8_t uTagRequirement,
1478 uint8_t uTagRequirement,
1479 const char *szDate);
1483 const char *szLabel,
1484 uint8_t uTagRequirement,
1485 const char *szDate);
1490 uint8_t uTagRequirement,
1491 const char *szDate);
1521 uint8_t uTagRequirement,
1522 const char *szDate);
1526 const char *szLabel,
1527 uint8_t uTagRequirement,
1528 const char *szDate);
1533 uint8_t uTagRequirement,
1534 const char *szDate);
1626 const char *szLabel,
1627 const uint8_t uSimple);
1631 const int64_t nLabel,
1632 const uint8_t uSimple);
1785 const char *szLabel);
1819 const char *szLabel);
2227QCBOREncode_AddInt64ToMap(
QCBOREncodeContext *pCtx,
const char *szLabel, int64_t nNum);
2231QCBOREncode_AddUInt64ToMap(
QCBOREncodeContext *pCtx,
const char *szLabel, uint64_t uNum);
2239QCBOREncode_AddSZStringToMap(
QCBOREncodeContext *pCtx,
const char *szLabel,
const char *szString);
2241#ifndef USEFULBUF_DISABLE_ALL_FLOAT
2244QCBOREncode_AddDoubleToMap(
QCBOREncodeContext *pCtx,
const char *szLabel,
double dNum);
2252QCBOREncode_AddDoubleNoPreferredToMap(
QCBOREncodeContext *pCtx,
const char *szLabel,
double dNum);
2256QCBOREncode_AddFloatNoPreferredToMap(
QCBOREncodeContext *pCtx,
const char *szLabel,
float fNum);
2265QCBOREncode_AddDateEpochToMap(
QCBOREncodeContext *pCtx,
const char *szLabel, int64_t nDate);
2269QCBOREncode_AddDateEpochToMapN(
QCBOREncodeContext *pCtx, int64_t nLabel, int64_t nDate);
2294 const char *szLabel,
2316#ifndef QCBOR_CONFIG_DISABLE_EXP_AND_MANTISSA
2322 int64_t nBase10Exponent);
2327 const char *szLabel,
2329 int64_t nBase10Exponent);
2336 int64_t nBase10Exponent);
2343 int64_t nBase10Exponent);
2348 const char *szLabel,
2351 int64_t nBase10Exponent);
2359 int64_t nBase10Exponent);
2365 int64_t nBase2Exponent);
2370 const char *szLabel,
2372 int64_t nBase2Exponent);
2379 int64_t nBase2Exponent);
2386 int64_t nBase2Exponent);
2391 const char *szLabel,
2394 int64_t nBase2Exponent);
2402 int64_t nBase2Exponent);
2436 const char *szLabel,
2452 const char *szLabel,
2468 const char *szLabel,
2484 const char *szLabel,
2485 const char *szDate);
2491 const char *szDate);
2508 const char *szLabel,
2509 const uint8_t uSimple);
2522 const char *szLabel);
2527 const char *szLabel);
2552 const uint8_t uMajorType,
2553 const uint64_t uArgument,
2554 const uint8_t uMinLen);
2577 uint8_t uMajorType);
2583 uint8_t uMajorType);
2589 uint8_t uMajorType);
2595 uint8_t uMajorType);
2603 bool bBigNumIsNegative,
2625 const uint8_t uMinLen,
2626 const uint64_t uArgument)
2628 QCBOREncode_Private_AppendCBORHead(pMe, CBOR_MAJOR_TYPE_SIMPLE, uArgument, uMinLen);
2662 const char *szLabel,
2680 const char *szLabel,
2690 QCBOREncode_AddInt64ToMapSZ(pMe, szLabel, nNum);
2695 const int64_t nLabel,
2706 QCBOREncode_Private_AppendCBORHead(pMe, CBOR_MAJOR_TYPE_POSITIVE_INT, uValue, 0);
2712 const char *szLabel,
2713 const uint64_t uNum)
2720QCBOREncode_AddUInt64ToMap(
QCBOREncodeContext *pMe,
const char *szLabel, uint64_t uNum)
2722 QCBOREncode_AddUInt64ToMapSZ(pMe, szLabel, uNum);
2727 const int64_t nLabel,
2728 const uint64_t uNum)
2738 QCBOREncode_Private_AddBuffer(pMe, CBOR_MAJOR_TYPE_TEXT_STRING, Text);
2743 const char *szLabel,
2753 QCBOREncode_AddTextToMapSZ(pMe, szLabel, Text);
2758 const int64_t nLabel,
2774 const char *szLabel,
2775 const char *szString)
2782QCBOREncode_AddSZStringToMap(
QCBOREncodeContext *pMe,
const char *szLabel,
const char *szString)
2784 QCBOREncode_AddSZStringToMapSZ(pMe, szLabel, szString);
2789 const int64_t nLabel,
2790 const char *szString)
2800 QCBOREncode_Private_AppendCBORHead(pMe, CBOR_MAJOR_TYPE_TAG, uTag, 0);
2806#ifndef USEFULBUF_DISABLE_ALL_FLOAT
2828#ifndef QCBOR_DISABLE_PREFERRED_FLOAT
2829 QCBOREncode_Private_AddPreferredDouble(pMe, dNum);
2837 const char *szLabel,
2847 QCBOREncode_AddDoubleToMapSZ(pMe, szLabel, dNum);
2852 const int64_t nLabel,
2863#ifndef QCBOR_DISABLE_PREFERRED_FLOAT
2864 QCBOREncode_Private_AddPreferredFloat(pMe, fNum);
2872 const char *szLabel,
2882 QCBOREncode_AddFloatToMapSZ(pMe, szLabel, fNum);
2887 const int64_t nLabel,
2896 const char *szLabel,
2904QCBOREncode_AddDoubleNoPreferredToMap(
QCBOREncodeContext *pMe,
const char *szLabel,
double dNum)
2906 QCBOREncode_AddDoubleNoPreferredToMapSZ(pMe, szLabel, dNum);
2911 const int64_t nLabel,
2920 const char *szLabel,
2928QCBOREncode_AddFloatNoPreferredToMap(
QCBOREncodeContext *pMe,
const char *szLabel,
float fNum)
2930 QCBOREncode_AddFloatNoPreferredToMapSZ(pMe, szLabel, fNum);
2935 const int64_t nLabel,
2950 const int64_t nDate)
2960 const char *szLabel,
2962 const int64_t nDate)
2970 const int64_t nLabel,
2972 const int64_t nDate)
2980 const int64_t nDate)
2987 const char *szLabel,
2988 const int64_t nDate)
2991 QCBOREncode_AddDateEpoch(pMe, nDate);
2996 const int64_t nLabel,
2997 const int64_t nDate)
3000 QCBOREncode_AddDateEpoch(pMe, nDate);
3007 const int64_t nDays)
3017 const char *szLabel,
3019 const int64_t nDays)
3027 const int64_t nLabel,
3029 const int64_t nDays)
3040 QCBOREncode_Private_AddBuffer(pMe, CBOR_MAJOR_TYPE_BYTE_STRING, Bytes);
3045 const char *szLabel,
3055 QCBOREncode_AddBytesToMapSZ(pMe, szLabel, Bytes);
3060 const int64_t nLabel,
3069 const char *szLabel,
3078 const int64_t nLabel,
3089 QCBOREncode_Private_AppendCBORHead(pMe, CBOR_MAJOR_TYPE_BYTE_STRING, Bytes.len, 0);
3095 const char *szLabel,
3104 const int64_t nLabel,
3114 const uint8_t uTagRequirement,
3125 const char *szLabel,
3126 const uint8_t uTagRequirement,
3135 const int64_t nLabel,
3136 const uint8_t uTagRequirement,
3151 const char *szLabel,
3159 const int64_t nLabel,
3162 QCBOREncode_AddTBinaryUUIDToMapN(pMe,
3171 const uint8_t uTagRequirement,
3182 const char *szLabel,
3183 const uint8_t uTagRequirement,
3192 const int64_t nLabel,
3193 const uint8_t uTagRequirement,
3208 const char *szLabel,
3211 QCBOREncode_AddTPositiveBignumToMapSZ(pMe,
3219 const int64_t nLabel,
3222 QCBOREncode_AddTPositiveBignumToMapN(pMe,
3231 const uint8_t uTagRequirement,
3242 const char *szLabel,
3243 const uint8_t uTagRequirement,
3252 const int64_t nLabel,
3253 const uint8_t uTagRequirement,
3268 const char *szLabel,
3271 QCBOREncode_AddTNegativeBignumToMapSZ(pMe,
3279 const int64_t nLabel,
3282 QCBOREncode_AddTNegativeBignumToMapN(pMe,
3290#ifndef QCBOR_DISABLE_EXP_AND_MANTISSA
3294 const uint8_t uTagRequirement,
3295 const int64_t nMantissa,
3296 const int64_t nBase10Exponent)
3304 QCBOREncode_Private_AddExpMantissa(pMe,
3314 const char *szLabel,
3315 const uint8_t uTagRequirement,
3316 const int64_t nMantissa,
3317 const int64_t nBase10Exponent)
3328 const int64_t nLabel,
3329 const uint8_t uTagRequirement,
3330 const int64_t nMantissa,
3331 const int64_t nBase10Exponent)
3342 const int64_t nMantissa,
3343 const int64_t nBase10Exponent)
3353 const char *szLabel,
3354 const int64_t nMantissa,
3355 const int64_t nBase10Exponent)
3357 QCBOREncode_AddTDecimalFractionToMapSZ(pMe,
3366 const int64_t nLabel,
3367 const int64_t nMantissa,
3368 const int64_t nBase10Exponent)
3370 QCBOREncode_AddTDecimalFractionToMapN(pMe,
3381 const uint8_t uTagRequirement,
3383 const bool bIsNegative,
3384 const int64_t nBase10Exponent)
3392 QCBOREncode_Private_AddExpMantissa(pMe,
3402 const char *szLabel,
3403 const uint8_t uTagRequirement,
3405 const bool bIsNegative,
3406 const int64_t nBase10Exponent)
3418 const int64_t nLabel,
3419 const uint8_t uTagRequirement,
3421 const bool bIsNegative,
3422 const int64_t nBase10Exponent)
3435 const bool bIsNegative,
3436 const int64_t nBase10Exponent)
3447 const char *szLabel,
3449 const bool bIsNegative,
3450 const int64_t nBase10Exponent)
3452 QCBOREncode_AddTDecimalFractionBigNumToMapSZ(pMe,
3462 const int64_t nLabel,
3464 const bool bIsNegative,
3465 const int64_t nBase2Exponent)
3467 QCBOREncode_AddTDecimalFractionBigNumToMapN(pMe,
3481 const uint8_t uTagRequirement,
3482 const int64_t nMantissa,
3483 const int64_t nBase2Exponent)
3491 QCBOREncode_Private_AddExpMantissa(pMe,
3501 const char *szLabel,
3502 const uint8_t uTagRequirement,
3503 const int64_t nMantissa,
3504 const int64_t nBase2Exponent)
3512 const int64_t nLabel,
3513 const uint8_t uTagRequirement,
3514 const int64_t nMantissa,
3515 const int64_t nBase2Exponent)
3523 const int64_t nMantissa,
3524 const int64_t nBase2Exponent)
3534 const char *szLabel,
3535 const int64_t nMantissa,
3536 const int64_t nBase2Exponent)
3538 QCBOREncode_AddTBigFloatToMapSZ(pMe,
3547 const int64_t nLabel,
3548 const int64_t nMantissa,
3549 const int64_t nBase2Exponent)
3551 QCBOREncode_AddTBigFloatToMapN(pMe,
3562 const uint8_t uTagRequirement,
3564 const bool bIsNegative,
3565 const int64_t nBase2Exponent)
3573 QCBOREncode_Private_AddExpMantissa(pMe,
3583 const char *szLabel,
3584 const uint8_t uTagRequirement,
3586 const bool bIsNegative,
3587 const int64_t nBase2Exponent)
3599 const int64_t nLabel,
3600 const uint8_t uTagRequirement,
3602 const bool bIsNegative,
3603 const int64_t nBase2Exponent)
3617 const bool bIsNegative,
3618 const int64_t nBase2Exponent)
3622 Mantissa, bIsNegative,
3628 const char *szLabel,
3630 const bool bIsNegative,
3631 const int64_t nBase2Exponent)
3633 QCBOREncode_AddTBigFloatBigNumToMapSZ(pMe,
3643 const int64_t nLabel,
3645 const bool bIsNegative,
3646 const int64_t nBase2Exponent)
3648 QCBOREncode_AddTBigFloatBigNumToMapN(pMe,
3660 const uint8_t uTagRequirement,
3671 const char *szLabel,
3672 const uint8_t uTagRequirement,
3681 const int64_t nLabel,
3682 const uint8_t uTagRequirement,
3697 const char *szLabel,
3705 const int64_t nLabel,
3715 const uint8_t uTagRequirement,
3726 const char *szLabel,
3727 const uint8_t uTagRequirement,
3736 const int64_t nLabel,
3737 const uint8_t uTagRequirement,
3752 const char *szLabel,
3760 const int64_t nLabel,
3770 const uint8_t uTagRequirement,
3781 const char *szLabel,
3782 const uint8_t uTagRequirement,
3791 const int64_t nLabel,
3792 const uint8_t uTagRequirement,
3807 const char *szLabel,
3810 QCBOREncode_AddTB64URLTextToMapSZ(pMe,
3818 const int64_t nLabel,
3828 const uint8_t uTagRequirement,
3839 const char *szLabel,
3840 const uint8_t uTagRequirement,
3849 const int64_t nLabel,
3850 const uint8_t uTagRequirement,
3865 const char *szLabel,
3873 const int64_t nLabel,
3883 const uint8_t uTagRequirement,
3894 const char *szLabel,
3895 const uint8_t uTagRequirement,
3904 const int64_t nLabel,
3905 const uint8_t uTagRequirement,
3920 const char *szLabel,
3928 const int64_t nLabel,
3937 const uint8_t uTagRequirement,
3948 const char *szLabel,
3949 const uint8_t uTagRequirement,
3958 const int64_t nLabel,
3959 const uint8_t uTagRequirement,
3974 const char *szLabel,
3982 const int64_t nLabel,
3991 const uint8_t uTagRequirement,
4002 const char *szLabel,
4003 const uint8_t uTagRequirement,
4012 const int64_t nLabel,
4013 const uint8_t uTagRequirement,
4025#ifndef QCBOR_DISABLE_ENCODE_USAGE_GUARDS
4026 if(uNum >= CBOR_SIMPLEV_RESERVED_START && uNum <= CBOR_SIMPLEV_RESERVED_END) {
4037 const char *szLabel,
4038 const uint8_t uSimple)
4046 const char *szLabel,
4047 const uint8_t uSimple)
4049 QCBOREncode_AddSimpleToMapSZ(pMe, szLabel, uSimple);
4054 const int64_t nLabel,
4055 const uint8_t uSimple)
4065 uint8_t uSimple = CBOR_SIMPLEV_FALSE;
4067 uSimple = CBOR_SIMPLEV_TRUE;
4073QCBOREncode_AddBoolToMapSZ(
QCBOREncodeContext *pMe,
const char *szLabel,
const bool b)
4082 QCBOREncode_AddBoolToMapSZ(pMe, szLabel, b);
4086QCBOREncode_AddBoolToMapN(
QCBOREncodeContext *pMe,
const int64_t nLabel,
const bool b)
4109 QCBOREncode_AddNULLToMapSZ(pMe, szLabel);
4136 QCBOREncode_AddUndefToMapSZ(pCtx, szLabel);
4150 QCBOREncode_Private_OpenMapOrArray(pMe, CBOR_MAJOR_TYPE_ARRAY);
4163 QCBOREncode_OpenArrayInMapSZ(pMe, szLabel);
4177 QCBOREncode_Private_CloseMapOrArray(pMe, CBOR_MAJOR_TYPE_ARRAY);
4184 QCBOREncode_Private_OpenMapOrArray(pMe, CBOR_MAJOR_TYPE_MAP);
4197 QCBOREncode_OpenMapInMapSZ(pMe, szLabel);
4210 QCBOREncode_Private_CloseMapOrArray(pMe, CBOR_MAJOR_TYPE_MAP);
4216 QCBOREncode_Private_OpenMapOrArrayIndefiniteLength(pMe, CBOR_MAJOR_NONE_TYPE_ARRAY_INDEFINITE_LEN);
4221 const char *szLabel)
4229 const char *szLabel)
4231 QCBOREncode_OpenArrayIndefiniteLengthInMapSZ(pMe, szLabel);
4236 const int64_t nLabel)
4245 QCBOREncode_Private_CloseMapOrArrayIndefiniteLength(pMe, CBOR_MAJOR_NONE_TYPE_ARRAY_INDEFINITE_LEN);
4252 QCBOREncode_Private_OpenMapOrArrayIndefiniteLength(pMe, CBOR_MAJOR_NONE_TYPE_MAP_INDEFINITE_LEN);
4257 const char *szLabel)
4265 const char *szLabel)
4267 QCBOREncode_OpenMapIndefiniteLengthInMapSZ(pMe, szLabel);
4272 const int64_t nLabel)
4281 QCBOREncode_Private_CloseMapOrArrayIndefiniteLength(pMe, CBOR_MAJOR_NONE_TYPE_MAP_INDEFINITE_LEN);
4288 QCBOREncode_Private_OpenMapOrArray(pMe, CBOR_MAJOR_TYPE_BYTE_STRING);
4301 QCBOREncode_BstrWrapInMapSZ(pMe, szLabel);
4321 const char *szLabel,
4331 QCBOREncode_AddEncodedToMapSZ(pMe, szLabel, Encoded);
4336 const int64_t nLabel,
static size_t UsefulOutBuf_GetEndPosition(UsefulOutBuf *pUOutBuf)
Returns position of end of data in the UsefulOutBuf.
Definition UsefulBuf.h:1978
struct q_useful_buf UsefulBuf
static UsefulBufC UsefulBuf_FromSZ(const char *szString)
Convert a NULL-terminated string to a UsefulBufC.
Definition UsefulBuf.h:1835
static uint32_t UsefulBufUtil_CopyFloatToUint32(float f)
Copy a float to a uint32_t.
Definition UsefulBuf.h:1939
static UsefulBuf UsefulOutBuf_RetrieveOutputStorage(UsefulOutBuf *pUOutBuf)
Retrieve the storage buffer passed in to UsefulOutBuf_Init().
Definition UsefulBuf.h:2274
static uint64_t UsefulBufUtil_CopyDoubleToUint64(double d)
Copy a double to a uint64_t.
Definition UsefulBuf.h:1946
static int UsefulOutBuf_IsBufferNULL(UsefulOutBuf *pUOutBuf)
Returns 1 if buffer given to UsefulOutBuf_Init() was NULL.
Definition UsefulBuf.h:2253
struct q_useful_buf_c UsefulBufC
static int UsefulOutBuf_GetError(UsefulOutBuf *pUOutBuf)
Returns the current error status.
Definition UsefulBuf.h:2235
#define NULLUsefulBufC
Definition UsefulBuf.h:314
#define CBOR_TAG_INVALID64
Definition qcbor_common.h:244
#define CBOR_TAG_DAYS_EPOCH
Definition qcbor_common.h:224
#define CBOR_TAG_POS_BIGNUM
Definition qcbor_common.h:138
#define CBOR_TAG_URI
Definition qcbor_common.h:187
#define CBOR_TAG_B64URL
Definition qcbor_common.h:189
#define CBOR_TAG_DATE_STRING
Definition qcbor_common.h:134
#define CBOR_TAG_BIGFLOAT
Definition qcbor_common.h:148
#define CBOR_TAG_DECIMAL_FRACTION
Definition qcbor_common.h:144
#define CBOR_TAG_DATE_EPOCH
Definition qcbor_common.h:136
#define CBOR_TAG_B64
Definition qcbor_common.h:191
#define CBOR_TAG_BIN_UUID
Definition qcbor_common.h:197
QCBORError
Definition qcbor_common.h:265
@ QCBOR_ERR_ENCODE_UNSUPPORTED
Definition qcbor_common.h:275
@ QCBOR_ERR_BUFFER_TOO_SMALL
Definition qcbor_common.h:271
#define CBOR_TAG_REGEX
Definition qcbor_common.h:193
#define CBOR_TAG_BINARY_MIME
Definition qcbor_common.h:230
#define CBOR_TAG_NEG_BIGNUM
Definition qcbor_common.h:140
#define CBOR_TAG_DAYS_STRING
Definition qcbor_common.h:234
QCBORError QCBOREncode_FinishGetSize(QCBOREncodeContext *pCtx, size_t *uEncodedLen)
Get the encoded CBOR and error status.
static void QCBOREncode_AddDoubleNoPreferred(QCBOREncodeContext *pCtx, double dNum)
Add a double-precision floating-point number without preferred encoding.
Definition qcbor_encode.h:2809
struct _QCBOREncodeContext QCBOREncodeContext
Definition qcbor_encode.h:424
static void QCBOREncode_AddTBigFloatBigNum(QCBOREncodeContext *pCtx, uint8_t uTagRequirement, UsefulBufC Mantissa, bool bIsNegative, int64_t nBase2Exponent)
Add a big floating-point number with a big number mantissa to the encoded output.
Definition qcbor_encode.h:3561
static void QCBOREncode_OpenArray(QCBOREncodeContext *pCtx)
Indicates that the next items added are in an array.
Definition qcbor_encode.h:4148
static void QCBOREncode_AddTNegativeBignum(QCBOREncodeContext *pCtx, uint8_t uTagRequirement, UsefulBufC BigNumber)
Add a negative big number to the encoded output.
Definition qcbor_encode.h:3230
UsefulBufC QCBOREncode_EncodeHead(UsefulBuf Buffer, uint8_t uMajorType, uint8_t uMinLen, uint64_t uNumber)
Encode the head of a CBOR data item.
static void QCBOREncode_Private_AddType7(QCBOREncodeContext *pMe, const uint8_t uMinLen, const uint64_t uArgument)
Semi-private method to add simple items and floating-point.
Definition qcbor_encode.h:2624
static void QCBOREncode_OpenMapIndefiniteLength(QCBOREncodeContext *pCtx)
Indicates that the next items added are in an indefinite length map.
Definition qcbor_encode.h:4250
static void QCBOREncode_AddTDecimalFractionBigNum(QCBOREncodeContext *pCtx, uint8_t uTagRequirement, UsefulBufC Mantissa, bool bIsNegative, int64_t nBase10Exponent)
Add a decimal fraction with a big number mantissa to the encoded output.
Definition qcbor_encode.h:3380
static void QCBOREncode_AddTRegex(QCBOREncodeContext *pCtx, uint8_t uTagRequirement, UsefulBufC Regex)
Add Perl Compatible Regular Expression.
Definition qcbor_encode.h:3827
static void QCBOREncode_OpenArrayIndefiniteLength(QCBOREncodeContext *pCtx)
Indicates that the next items added are in an indefinite length array.
Definition qcbor_encode.h:4214
static void QCBOREncode_AddTDateEpoch(QCBOREncodeContext *pCtx, uint8_t uTagRequirement, int64_t nDate)
Add an epoch-based date.
Definition qcbor_encode.h:2948
#define QCBOR_ENCODE_AS_TAG
Definition qcbor_encode.h:408
void QCBOREncode_AddEncoded(QCBOREncodeContext *pCtx, UsefulBufC Encoded)
Add some already-encoded CBOR bytes.
static void QCBOREncode_AddBool(QCBOREncodeContext *pCtx, bool b)
Add a standard Boolean.
Definition qcbor_encode.h:4063
static void QCBOREncode_AddTBinaryUUID(QCBOREncodeContext *pCtx, uint8_t uTagRequirement, UsefulBufC Bytes)
Add a binary UUID to the encoded output.
Definition qcbor_encode.h:3113
static void QCBOREncode_AddTDaysEpoch(QCBOREncodeContext *pCtx, uint8_t uTagRequirement, int64_t nDays)
Add an epoch-based day-count date.
Definition qcbor_encode.h:3005
void QCBOREncode_CancelBstrWrap(QCBOREncodeContext *pCtx)
Cancel byte string wrapping.
static QCBORError QCBOREncode_GetErrorState(QCBOREncodeContext *pCtx)
Get the encoding error state.
Definition qcbor_encode.h:4359
void QCBOREncode_CloseBytes(QCBOREncodeContext *pCtx, size_t uAmount)
Close out a byte string written directly to encoded output.
static void QCBOREncode_AddTPositiveBignum(QCBOREncodeContext *pCtx, uint8_t uTagRequirement, UsefulBufC BigNumber)
Add a positive big number to the encoded output.
Definition qcbor_encode.h:3170
static void QCBOREncode_AddTB64URLText(QCBOREncodeContext *pCtx, uint8_t uTagRequirement, UsefulBufC B64Text)
Add base64url encoded data to encoded output.
Definition qcbor_encode.h:3769
static void QCBOREncode_AddTDecimalFraction(QCBOREncodeContext *pCtx, uint8_t uTagRequirement, int64_t nMantissa, int64_t nBase10Exponent)
Add a decimal fraction to the encoded output.
Definition qcbor_encode.h:3293
static void QCBOREncode_AddSimple(QCBOREncodeContext *pCtx, const uint8_t uNum)
Add a simple value.
Definition qcbor_encode.h:4022
static void QCBOREncode_CloseMap(QCBOREncodeContext *pCtx)
Close an open map.
Definition qcbor_encode.h:4208
UsefulBufC QCBOREncode_SubString(QCBOREncodeContext *pCtx, const size_t uStart)
Get a substring of encoded CBOR for cryptographic hash.
static size_t QCBOREncode_Tell(QCBOREncodeContext *pCtx)
Returns current end of encoded data.
Definition qcbor_encode.h:4380
static void QCBOREncode_CloseMapIndefiniteLength(QCBOREncodeContext *pCtx)
Close an open indefinite length map.
Definition qcbor_encode.h:4279
static void QCBOREncode_AddTBigFloat(QCBOREncodeContext *pCtx, uint8_t uTagRequirement, int64_t nMantissa, int64_t nBase2Exponent)
Add a big floating-point number to the encoded output.
Definition qcbor_encode.h:3480
static void QCBOREncode_BstrWrap(QCBOREncodeContext *pCtx)
Indicate start of encoded CBOR to be wrapped in a bstr.
Definition qcbor_encode.h:4286
static void QCBOREncode_AddFloatNoPreferred(QCBOREncodeContext *pCtx, float fNum)
Add a single-precision floating-point number without preferred encoding.
Definition qcbor_encode.h:2817
static void QCBOREncode_CloseArray(QCBOREncodeContext *pCtx)
Close an open array.
Definition qcbor_encode.h:4175
static void QCBOREncode_AddUndef(QCBOREncodeContext *pCtx)
Add an "undef" to the encoded output.
Definition qcbor_encode.h:4121
static void QCBOREncode_AddText(QCBOREncodeContext *pCtx, UsefulBufC Text)
Add a UTF-8 text string to the encoded output.
Definition qcbor_encode.h:2736
void QCBOREncode_AddInt64(QCBOREncodeContext *pCtx, int64_t nNum)
Add a signed 64-bit integer to the encoded output.
static void QCBOREncode_AddTDaysString(QCBOREncodeContext *pCtx, uint8_t uTagRequirement, const char *szDate)
Add a date-only string.
Definition qcbor_encode.h:3990
static void QCBOREncode_AddBytes(QCBOREncodeContext *pCtx, UsefulBufC Bytes)
Add a byte string to the encoded output.
Definition qcbor_encode.h:3037
static void QCBOREncode_AddTag(QCBOREncodeContext *pCtx, uint64_t uTag)
Add a tag number.
Definition qcbor_encode.h:2798
static void QCBOREncode_AddBytesLenOnly(QCBOREncodeContext *pCtx, UsefulBufC Bytes)
Semi-private method to add only the type and length of a byte string.
Definition qcbor_encode.h:3087
void QCBOREncode_Init(QCBOREncodeContext *pCtx, UsefulBuf Storage)
static UsefulBuf QCBOREncode_RetrieveOutputStorage(QCBOREncodeContext *pCtx)
Retrieve the storage buffer passed in to QCBOREncode_Init().
Definition qcbor_encode.h:4352
static void QCBOREncode_CloseArrayIndefiniteLength(QCBOREncodeContext *pCtx)
Close an open indefinite length array.
Definition qcbor_encode.h:4243
QCBORError QCBOREncode_Finish(QCBOREncodeContext *pCtx, UsefulBufC *pEncodedCBOR)
Get the encoded result.
static void QCBOREncode_AddTB64Text(QCBOREncodeContext *pCtx, uint8_t uTagRequirement, UsefulBufC B64Text)
Add Base64-encoded text to encoded output.
Definition qcbor_encode.h:3714
static void QCBOREncode_AddFloat(QCBOREncodeContext *pCtx, float fNum)
Add a single-precision floating-point number to the encoded output.
Definition qcbor_encode.h:2861
static void QCBOREncode_AddSZString(QCBOREncodeContext *pCtx, const char *szString)
Add a UTF-8 text string to the encoded output.
Definition qcbor_encode.h:2767
static void QCBOREncode_AddDouble(QCBOREncodeContext *pCtx, double dNum)
Add a double-precision floating-point number to the encoded output.
Definition qcbor_encode.h:2826
void QCBOREncode_OpenBytes(QCBOREncodeContext *pCtx, UsefulBuf *pPlace)
Set up to write a byte string value directly to encoded output.
static int QCBOREncode_IsBufferNULL(QCBOREncodeContext *pCtx)
Indicate whether the output storage buffer is NULL.
Definition qcbor_encode.h:4345
static void QCBOREncode_AddTDateString(QCBOREncodeContext *pCtx, uint8_t uTagRequirement, const char *szDate)
Add an RFC 3339 date string.
Definition qcbor_encode.h:3936
static void QCBOREncode_AddUInt64(QCBOREncodeContext *pCtx, uint64_t uNum)
Add an unsigned 64-bit integer to the encoded output.
Definition qcbor_encode.h:2704
static void QCBOREncode_OpenMap(QCBOREncodeContext *pCtx)
Indicates that the next items added are in a map.
Definition qcbor_encode.h:4182
void QCBOREncode_CloseBstrWrap2(QCBOREncodeContext *pCtx, bool bIncludeCBORHead, UsefulBufC *pWrappedCBOR)
Close a wrapping bstr.
static void QCBOREncode_AddNULL(QCBOREncodeContext *pCtx)
Add a NULL to the encoded output.
Definition qcbor_encode.h:4094
static void QCBOREncode_AddTMIMEData(QCBOREncodeContext *pCtx, uint8_t uTagRequirement, UsefulBufC MIMEData)
MIME encoded data to the encoded output.
Definition qcbor_encode.h:3882
static void QCBOREncode_AddTURI(QCBOREncodeContext *pCtx, uint8_t uTagRequirement, UsefulBufC URI)
Add a text URI to the encoded output.
Definition qcbor_encode.h:3659
Definition qcbor_private.h:221