From 80775164d730668ef5f1ce84c7811c5be03ab5ed Mon Sep 17 00:00:00 2001 From: Maciej Samborski Date: Mon, 23 Sep 2024 18:42:50 +0200 Subject: [PATCH] Changed error value to be `const char *` insted of `size_t` --- .gitignore | 1 + ehan.h | 19 ++++++++----------- example.c | 37 ++++++++----------------------------- 3 files changed, 17 insertions(+), 40 deletions(-) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ba2906d --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +main diff --git a/ehan.h b/ehan.h index ba1688f..31ea244 100644 --- a/ehan.h +++ b/ehan.h @@ -4,14 +4,15 @@ #include #include #include +#include typedef struct GenericReturn { long double fp; void * val; - size_t err; + const char * err; } GenericReturn; -GenericReturn ehanError(size_t error); +GenericReturn ehanError(const char * error); #define ehanValue(v) _ehanValue((void *) v) #define ehanValueFP(fp) _ehanValueFP((long double) fp) GenericReturn _ehanValue(void * value); @@ -19,8 +20,9 @@ GenericReturn _ehanValueFP(long double value); #define resultGeneric(type, ret) (*(type *) (&ret.val)) #define resultFP(type, ret) ((type) (ret.fp)) +#define resultError(ret) (ret.err) -const char * errorToString(const char * errorList[], size_t err); +#define ehanCheck(ret) strlen(ret.err) #define ILog(format, ...) \ do { \ @@ -56,7 +58,7 @@ GenericReturn _ehanValue(void * value) { return (GenericReturn) { .val = value, - .err = 0, + .err = "", }; } @@ -65,11 +67,11 @@ GenericReturn _ehanValueFP(long double value) return (GenericReturn) { .fp = value, .val = 0, - .err = 0, + .err = "", }; } -GenericReturn ehanError(size_t error) +GenericReturn ehanError(const char * error) { return (GenericReturn) { .val = 0, @@ -77,11 +79,6 @@ GenericReturn ehanError(size_t error) }; } -const char * errorToString(const char * errorList[], size_t err) -{ - return errorList[err - 1]; -} - #endif // EHAN_IMPLEMENTATION #endif // EHAN_H_ diff --git a/example.c b/example.c index 4c3b03e..3710d02 100644 --- a/example.c +++ b/example.c @@ -1,27 +1,6 @@ -#include -#include - #define EHAN_IMPLEMENTATION #include "ehan.h" -typedef enum errorEnum { - DUMB, - UGLY, - GREEDY, - ABRASIVE, - GRUMPY, - MOROSE, -} errorEnum; - -static const char * errorList[] = { - "dumb error", - "ugly error", - "greedy error", - "abrasive error", - "grumpy error", - "morose error", -}; - GenericReturn f() { return ehanValueFP(42.42f); @@ -34,15 +13,15 @@ GenericReturn g() GenericReturn h() { - return ehanError(ABRASIVE); + return ehanError("Something went wrong!"); } int main(void) { GenericReturn r = f(); - if (r.err > 0) + if (ehanCheck(r)) { - ELog("FAILURE %s\n", errorToString(errorList, r.err)); + ELog("FAILURE %s\n", resultError(r)); /* HANDLE ERROR */ goto exit; } @@ -50,19 +29,19 @@ int main(void) ILog("SUCCESS: %.2f\n", resultFP(float, r)); r = g(); - if (r.err > 0) + if (ehanCheck(r)) { - ELog("FAILURE %s\n", errorToString(errorList, r.err)); + ELog("FAILURE %s\n", resultError(r)); /* HANDLE ERROR */ goto exit; } - ILog("SUCCESS: %s\n", resultGeneric(char *, r)); + WLog("SUCCESS: %s\n", resultGeneric(char *, r)); r = h(); - if (r.err > 0) + if (ehanCheck(r)) { - ELog("FAILURE %s\n", errorToString(errorList, r.err)); + ELog("FAILURE %s\n", resultError(r)); /* HANDLE ERROR */ goto exit; }