Do not require logging support for BT_[CTF_]ASSERT_PRE()
[babeltrace.git] / src / lib / assert-pre.h
index 1f4240eb8e8205cf7af555b6f5fc72a24f4f09af..48fe9598f4c83f107a83c145426114e504b143d0 100644 (file)
 #include "common/macros.h"
 
 #ifdef BT_DEV_MODE
-/*
- * Asserts that the library precondition _cond is satisfied.
- *
- * If _cond is false, log a fatal statement using _fmt and the optional
- * arguments using BT_LIB_LOGF(), and abort.
- *
- * To assert that a postcondition is satisfied or that some internal
- * object/context/value is in the expected state, use BT_ASSERT().
- */
-# define BT_ASSERT_PRE(_cond, _fmt, ...)                               \
-       do {                                                            \
-               if (!(_cond)) {                                         \
-                       BT_LOGF_STR("Library precondition not satisfied; error is:"); \
-                       BT_LIB_LOGF((_fmt), ##__VA_ARGS__);             \
-                       BT_LOGF_STR("Aborting...");                     \
-                       abort();                                        \
-               }                                                       \
-       } while (0)
-
-/*
- * Marks a function as being only used within a BT_ASSERT_PRE() context.
- */
-# define BT_ASSERT_PRE_FUNC
-
 /*
  * Prints the details of an unsatisfied precondition without immediately
  * aborting. You should use this within a function which checks
  *     BT_ASSERT_PRE(check_complex_precond(...),
  *                   "Precondition is not satisfied: ...", ...);
  */
-# define BT_ASSERT_PRE_MSG     BT_LIB_LOGF
+# define BT_ASSERT_PRE_MSG(_fmt, ...)                                  \
+       do {                                                            \
+               bt_lib_log(_BT_LOG_SRCLOC_FUNCTION, __FILE__,           \
+                       __LINE__, BT_LOG_FATAL, BT_LOG_TAG,             \
+                       (_fmt), ##__VA_ARGS__);                         \
+       } while (0)
+
+/*
+ * Asserts that the library precondition _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.
+ *
+ * To assert that a postcondition is satisfied or that some internal
+ * object/context/value is in the expected state, use BT_ASSERT().
+ */
+# define BT_ASSERT_PRE(_cond, _fmt, ...)                               \
+       do {                                                            \
+               if (!(_cond)) {                                         \
+                       BT_ASSERT_PRE_MSG("Babeltrace 2 library precondition not satisfied; error is:"); \
+                       BT_ASSERT_PRE_MSG((_fmt), ##__VA_ARGS__);       \
+                       BT_ASSERT_PRE_MSG("Aborting...");               \
+                       abort();                                        \
+               }                                                       \
+       } while (0)
+
+/*
+ * Marks a function as being only used within a BT_ASSERT_PRE() context.
+ */
+# define BT_ASSERT_PRE_FUNC
 #else
 # define BT_ASSERT_PRE(_cond, _fmt, ...)       ((void) sizeof((void) (_cond), 0))
 # define BT_ASSERT_PRE_FUNC    __attribute__((unused))
This page took 0.024787 seconds and 4 git commands to generate.