From 1b602597ec5d7716effb999dbfd768bb170caa9e Mon Sep 17 00:00:00 2001 From: winckel <winckel@eurecom.fr> Date: Thu, 19 Dec 2013 08:43:48 +0000 Subject: [PATCH] Added new generic asserts. git-svn-id: http://svn.eurecom.fr/openair4G/trunk@4768 818b1a75-f10b-46b9-bf7c-635c3b92a50f --- common/utils/assertions.h | 78 +++++++++++++++------------------------ 1 file changed, 29 insertions(+), 49 deletions(-) diff --git a/common/utils/assertions.h b/common/utils/assertions.h index 3ce939c96c..5518e765a5 100644 --- a/common/utils/assertions.h +++ b/common/utils/assertions.h @@ -34,58 +34,38 @@ #include <stdint.h> #include <inttypes.h> -#define DevCheck(cOND, vALUE1, vALUE2, vALUE3) \ -do { \ - if (!(cOND)) { \ - fprintf(stderr, "%s:%d:%s Assertion `"#cOND"` failed.\n", \ - __FILE__, __LINE__, __FUNCTION__); \ - fprintf(stderr, #vALUE1": %"PRIdMAX"\n"#vALUE2": %"PRIdMAX"\n"#vALUE3": %"PRIdMAX"\n", \ - (intmax_t)vALUE1, (intmax_t)vALUE2, (intmax_t)vALUE3); \ - fprintf(stderr, "Exiting execution\n"); \ - fflush(stdout); \ - fflush(stderr); \ - abort(); \ - } \ +#define _Assert_(cOND, eXIT, fORMAT, aRGS...) \ +do { \ + if (!(cOND)) { \ + fprintf(stderr, "%s:%d:%s Assertion `"#cOND"` failed!\n" fORMAT, \ + __FILE__, __LINE__, __FUNCTION__, ##aRGS); \ + if (eXIT != 0) { \ + fprintf(stderr, "Exiting execution\n"); \ + fflush(stdout); \ + fflush(stderr); \ + abort(); \ + } \ + } \ } while(0) -#define DevCheck4(cOND, vALUE1, vALUE2, vALUE3, vALUE4) \ -do { \ - if (!(cOND)) { \ - fprintf(stderr, "%s:%d:%s\nAssertion `"#cOND"` failed.\n", \ - __FILE__, __LINE__, __FUNCTION__); \ - fprintf(stderr, #vALUE1": %"PRIdMAX"\n"#vALUE2": %"PRIdMAX"\n"#vALUE3": %"PRIdMAX"\n" \ - #vALUE4": %"PRIdMAX"\n", \ - (intmax_t)vALUE1, (intmax_t)vALUE2, (intmax_t)vALUE3, (intmax_t)vALUE4); \ - fprintf(stderr, "Exiting execution\n"); \ - fflush(stdout); \ - fflush(stderr); \ - exit(EXIT_FAILURE); \ - } \ -} while(0) +#define AssertFatal(cOND, fORMAT, aRGS...) _Assert_(cOND, 1, fORMAT, ##aRGS) -#define DevParam(vALUE1, vALUE2, vALUE3) \ - DevCheck(0 == 1, vALUE1, vALUE2, vALUE3) - -#define DevAssert(cOND) \ -do { \ - if (!(cOND)) { \ - fprintf(stderr, "%s:%d:%s Assertion `"#cOND"` failed\n", \ - __FILE__, __LINE__, __FUNCTION__); \ - fprintf(stderr, "Exiting execution\n"); \ - fflush(stdout); \ - fflush(stderr); \ - abort(); \ - } \ -} while(0) +#define AssertError(cOND, fORMAT, aRGS...) _Assert_(cOND, 0, fORMAT, ##aRGS) -#define DevMessage(mESSAGE) \ -do { \ - fprintf(stderr, "%s:%d:%s Execution interrupted: `"#mESSAGE"`.\n", \ - __FILE__, __LINE__, __FUNCTION__); \ - fprintf(stderr, "Exiting execution\n"); \ - fflush(stdout); \ - fflush(stderr); \ - abort(); \ -} while(0) + + +#define DevCheck(cOND, vALUE1, vALUE2, vALUE3) \ +_Assert_(cOND, 1, #vALUE1": %"PRIdMAX"\n"#vALUE2": %"PRIdMAX"\n"#vALUE3": %"PRIdMAX"\n\n", \ + (intmax_t)vALUE1, (intmax_t)vALUE2, (intmax_t)vALUE3) + +#define DevCheck4(cOND, vALUE1, vALUE2, vALUE3, vALUE4) \ +_Assert_(cOND, 1, #vALUE1": %"PRIdMAX"\n"#vALUE2": %"PRIdMAX"\n"#vALUE3": %"PRIdMAX"\n"#vALUE4": %"PRIdMAX"\n\n", \ + (intmax_t)vALUE1, (intmax_t)vALUE2, (intmax_t)vALUE3, (intmax_t)vALUE4) + +#define DevParam(vALUE1, vALUE2, vALUE3) DevCheck(0, vALUE1, vALUE2, vALUE3) + +#define DevAssert(cOND) _Assert_(cOND, 1, "") + +#define DevMessage(mESSAGE) _Assert_(0, 1, #mESSAGE) #endif /* ASSERTIONS_H_ */ -- GitLab