*/
/*
- * The macros in this header use macros defined in
- * <lib/lib-logging.h>. We don't want this header to
- * automatically include <lib/lib-logging.h> because you
- * need to manually define BT_LOG_TAG before including
- * <lib/lib-logging.h> and it is unexpected that you
+ * The macros in this header use macros defined in "lib/logging.h".
+ * We don't want this header to automatically include
+ * "lib/logging.h" because you need to manually define BT_LOG_TAG
+ * before including "lib/logging.h" and it is unexpected that you
* also need to define it before including this header.
*
- * This is a reminder that in order to use
- * <lib/assert-pre.h>, you also need to use logging
- * explicitly.
+ * This is a reminder that in order to use "lib/assert-pre.h", you also
+ * need to use logging explicitly.
*/
-#ifndef BABELTRACE_LIB_LOGGING_INTERNAL_H
-# error Include <lib/lib-logging.h> before this header.
+#ifndef BT_LIB_LOG_SUPPORTED
+# error Include "lib/logging.h" before this header.
#endif
#include <stdlib.h>
#include <inttypes.h>
-#include "common/babeltrace.h"
+#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 BT_UNUSED
+# define BT_ASSERT_PRE_FUNC __attribute__((unused))
# define BT_ASSERT_PRE_MSG(_fmt, ...)
#endif /* BT_DEV_MODE */