X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=src%2Flib%2Fassert-post.h;h=94bdf4ef0191029278105665434c6cf08bdb2e68;hb=c4f23e30bf67d2523163614bc9461d84cbe1ae80;hp=9776bde09af6bb5e722ac8db420638ea8b98d23c;hpb=ce53ba7aa47854de310cd47b9553a2ae8ff32aee;p=babeltrace.git diff --git a/src/lib/assert-post.h b/src/lib/assert-post.h index 9776bde0..94bdf4ef 100644 --- a/src/lib/assert-post.h +++ b/src/lib/assert-post.h @@ -39,17 +39,17 @@ # error Include "lib/logging.h" before this header. #endif +#include #include #include #include "common/macros.h" -#ifdef BT_DEV_MODE /* * Prints the details of an unsatisfied postcondition without * immediately aborting. You should use this within a function which - * checks postconditions, but which is called from a BT_ASSERT_POST() - * context, so that the function can still return its result for - * BT_ASSERT_POST() to evaluate it. + * checks postconditions, but which is called from a + * BT_ASSERT_POST() context, so that the function can still return + * its result for BT_ASSERT_POST() to evaluate it. * * Example: * @@ -69,9 +69,9 @@ * ... * * BT_ASSERT_POST(check_complex_postcond(...), - * "Postcondition is not satisfied: ...", ...); + * "Postcondition is not satisfied: ...", ...); */ -# define BT_ASSERT_POST_MSG(_fmt, ...) \ +#define BT_ASSERT_POST_MSG(_fmt, ...) \ do { \ bt_lib_log(_BT_LOG_SRCLOC_FUNCTION, __FILE__, \ __LINE__, BT_LOG_FATAL, BT_LOG_TAG, \ @@ -79,8 +79,7 @@ } while (0) /* - * Developer mode: asserts that the library postcondition `_cond` is - * satisfied. + * Asserts that the library postcondition `_cond` is satisfied. * * If `_cond` is false, log a fatal statement using `_fmt` and the * optional arguments (same usage as BT_LIB_LOGF()), and abort. @@ -89,13 +88,13 @@ * the user), use BT_ASSERT_PRE(). * * To assert that an internal postcondition is satisfied, use - * BT_ASSERT(). + * BT_ASSERT() or BT_ASSERT_DBG(). */ -# define BT_ASSERT_POST(_cond, _fmt, ...) \ +#define BT_ASSERT_POST(_cond, _fmt, ...) \ do { \ if (!(_cond)) { \ BT_ASSERT_POST_MSG("Babeltrace 2 library postcondition not satisfied; error is:"); \ - BT_ASSERT_POST_MSG((_fmt), ##__VA_ARGS__); \ + BT_ASSERT_POST_MSG(_fmt, ##__VA_ARGS__); \ BT_ASSERT_POST_MSG("Aborting..."); \ abort(); \ } \ @@ -105,11 +104,23 @@ * Marks a function as being only used within a BT_ASSERT_POST() * context. */ -# define BT_ASSERT_POST_FUNC +#define BT_ASSERT_POST_FUNC + +#ifdef BT_DEV_MODE +/* Developer mode version of BT_ASSERT_POST_MSG(). */ +# define BT_ASSERT_POST_DEV_MSG(_fmt, ...) \ + BT_ASSERT_POST_MSG(_fmt, ##__VA_ARGS__) + +/* Developer mode version of BT_ASSERT_POST(). */ +# define BT_ASSERT_POST_DEV(_cond, _fmt, ...) \ + BT_ASSERT_POST((_cond), _fmt, ##__VA_ARGS__) + +/* Developer mode version of `BT_ASSERT_POST_FUNC`. */ +# define BT_ASSERT_POST_DEV_FUNC BT_ASSERT_POST_FUNC #else -# define BT_ASSERT_POST(_cond, _fmt, ...) ((void) sizeof((void) (_cond), 0)) -# define BT_ASSERT_POST_FUNC __attribute__((unused)) -# define BT_ASSERT_POST_MSG(_fmt, ...) +# define BT_ASSERT_POST_DEV_MSG(_fmt, ...) +# define BT_ASSERT_POST_DEV(_cond, _fmt, ...) ((void) sizeof((void) (_cond), 0)) +# define BT_ASSERT_POST_DEV_FUNC __attribute__((unused)) #endif /* BT_DEV_MODE */ #define BT_ASSERT_POST_SUPPORTED