Add compile option to disable floating point usage (#114)

This commit adds the option to disable floating point processing in
QCBOR. To disable, the USEFULBUF_DISABLE_ALL_FLOAT preprocessor macro
needs to be defined.

e.g.:

 $ make CMD_LINE="-DUSEFULBUF_DISABLE_ALL_FLOAT"

This removes the capability (and the code) of decoding floating point
types. The type is still recognised, so a meaningful
QCBOR_ERR_ALL_FLOAT_DISABLED error is returned when a floating point value
is encountered in a decoded qcbor. From the encoding interface the
floating point encoding functions are removed.

Change-Id: I371769246f7d83354607de9bce1e7998b8c536a1
Signed-off-by: Mate Toth-Pal <mate.toth-pal@arm.com>
diff --git a/example.c b/example.c
index 4921e13..02345ec 100644
--- a/example.c
+++ b/example.c
@@ -2,6 +2,7 @@
    example.c -- Example code for QCBOR
 
    Copyright (c) 2020-2021, Laurence Lundblade. All rights reserved.
+   Copyright (c) 2021, Arm Limited. All rights reserved.
 
    SPDX-License-Identifier: BSD-3-Clause
 
@@ -37,12 +38,16 @@
    UsefulBufC Manufacturer;
    int64_t    uDisplacement;
    int64_t    uHorsePower;
+#ifndef USEFULBUF_DISABLE_ALL_FLOAT
    double     dDesignedCompresion;
+#endif /* USEFULBUF_DISABLE_ALL_FLOAT */
    int64_t    uNumCylinders;
    bool       bTurboCharged;
+#ifndef USEFULBUF_DISABLE_ALL_FLOAT
    struct {
       double dMeasuredCompression;
    } cylinders[MAX_CYLINDERS];
+#endif /* USEFULBUF_DISABLE_ALL_FLOAT */
 } CarEngine;
 
 
@@ -56,16 +61,20 @@
    pE->Manufacturer        = UsefulBuf_FROM_SZ_LITERAL("Porsche");
    pE->uDisplacement       = 3296;
    pE->uHorsePower         = 210;
+#ifndef USEFULBUF_DISABLE_ALL_FLOAT
    pE->dDesignedCompresion = 9.1;
+#endif /* USEFULBUF_DISABLE_ALL_FLOAT */
    pE->uNumCylinders       = 6;
    pE->bTurboCharged       = false;
 
+#ifndef USEFULBUF_DISABLE_ALL_FLOAT
    pE->cylinders[0].dMeasuredCompression = 9.0;
    pE->cylinders[1].dMeasuredCompression = 9.2;
    pE->cylinders[2].dMeasuredCompression = 8.9;
    pE->cylinders[3].dMeasuredCompression = 8.9;
    pE->cylinders[4].dMeasuredCompression = 9.1;
    pE->cylinders[5].dMeasuredCompression = 9.0;
+#endif /* USEFULBUF_DISABLE_ALL_FLOAT */
 }
 
 
@@ -92,6 +101,7 @@
    if(pE1->uHorsePower != pE2->uHorsePower) {
       return false;
    }
+#ifndef USEFULBUF_DISABLE_ALL_FLOAT
    if(pE1->dDesignedCompresion != pE2->dDesignedCompresion) {
       return false;
    }
@@ -101,6 +111,7 @@
          return false;
       }
    }
+#endif /* USEFULBUF_DISABLE_ALL_FLOAT */
 
    if(UsefulBuf_Compare(pE1->Manufacturer, pE2->Manufacturer)) {
       return false;
@@ -150,12 +161,16 @@
     QCBOREncode_AddInt64ToMap(&EncodeCtx, "NumCylinders", pEngine->uNumCylinders);
     QCBOREncode_AddInt64ToMap(&EncodeCtx, "Displacement", pEngine->uDisplacement);
     QCBOREncode_AddInt64ToMap(&EncodeCtx, "Horsepower", pEngine->uHorsePower);
+#ifndef USEFULBUF_DISABLE_ALL_FLOAT
     QCBOREncode_AddDoubleToMap(&EncodeCtx, "DesignedCompression", pEngine->dDesignedCompresion);
+#endif /* USEFULBUF_DISABLE_ALL_FLOAT */
     QCBOREncode_OpenArrayInMap(&EncodeCtx, "Cylinders");
+#ifndef USEFULBUF_DISABLE_ALL_FLOAT
     for(int64_t i = 0 ; i < pEngine->uNumCylinders; i++) {
         QCBOREncode_AddDouble(&EncodeCtx,
                               pEngine->cylinders[i].dMeasuredCompression);
     }
+#endif /* USEFULBUF_DISABLE_ALL_FLOAT */
     QCBOREncode_CloseArray(&EncodeCtx);
     QCBOREncode_AddBoolToMap(&EncodeCtx, "Turbo", pEngine->bTurboCharged);
     QCBOREncode_CloseMap(&EncodeCtx);
@@ -250,7 +265,9 @@
     QCBORDecode_GetTextStringInMapSZ(&DecodeCtx, "Manufacturer", &(pE->Manufacturer));
     QCBORDecode_GetInt64InMapSZ(&DecodeCtx, "Displacement", &(pE->uDisplacement));
     QCBORDecode_GetInt64InMapSZ(&DecodeCtx, "Horsepower", &(pE->uHorsePower));
+#ifndef USEFULBUF_DISABLE_ALL_FLOAT
     QCBORDecode_GetDoubleInMapSZ(&DecodeCtx, "DesignedCompression", &(pE->dDesignedCompresion));
+#endif /* USEFULBUF_DISABLE_ALL_FLOAT */
     QCBORDecode_GetBoolInMapSZ(&DecodeCtx, "Turbo", &(pE->bTurboCharged));
 
     QCBORDecode_GetInt64InMapSZ(&DecodeCtx, "NumCylinders", &(pE->uNumCylinders));
@@ -268,10 +285,12 @@
     }
 
     QCBORDecode_EnterArrayFromMapSZ(&DecodeCtx, "Cylinders");
+#ifndef USEFULBUF_DISABLE_ALL_FLOAT
     for(int64_t i = 0; i < pE->uNumCylinders; i++) {
         QCBORDecode_GetDouble(&DecodeCtx,
                               &(pE->cylinders[i].dMeasuredCompression));
     }
+#endif /* USEFULBUF_DISABLE_ALL_FLOAT */
     QCBORDecode_ExitArray(&DecodeCtx);
     QCBORDecode_ExitMap(&DecodeCtx);