27#ifndef AVUTIL_AVASSERT_H
28#define AVUTIL_AVASSERT_H
31#ifdef HAVE_AV_CONFIG_H
41#define av_assert0(cond) do { \
43 av_log(NULL, AV_LOG_PANIC, "Assertion %s failed at %s:%d\n", \
44 AV_STRINGIFY(cond), __FILE__, __LINE__); \
54#if defined(ASSERT_LEVEL) && ASSERT_LEVEL > 0
55#define av_assert1(cond) av_assert0(cond)
57#define av_assert1(cond) ((void)0)
64#if defined(ASSERT_LEVEL) && ASSERT_LEVEL > 1
65#define av_assert2(cond) av_assert0(cond)
66#define av_assert2_fpu() av_assert0_fpu()
68#define av_assert2(cond) ((void)0)
69#define av_assert2_fpu() ((void)0)
90#if defined(ASSERT_LEVEL) ? ASSERT_LEVEL > 0 : !defined(HAVE_AV_CONFIG_H) && !defined(NDEBUG)
91#define av_unreachable(msg) \
93 av_log(NULL, AV_LOG_PANIC, \
94 "Reached supposedly unreachable code at %s:%d: %s\n", \
95 __FILE__, __LINE__, msg); \
98#define av_assume(cond) av_assert0(cond)
100#if AV_GCC_VERSION_AT_LEAST(4, 5) || AV_HAS_BUILTIN(__builtin_unreachable)
101#define av_unreachable(msg) __builtin_unreachable()
102#elif defined(_MSC_VER)
103#define av_unreachable(msg) __assume(0)
104#elif __STDC_VERSION__ >= 202311L
106#define av_unreachable(msg) unreachable()
108#define av_unreachable(msg) ((void)0)
111#if AV_HAS_BUILTIN(__builtin_assume)
112#define av_assume(cond) __builtin_assume(cond)
113#elif defined(_MSC_VER)
114#define av_assume(cond) __assume(cond)
116#define av_assume(cond) do { \
Macro definitions for various function/variable attributes.
void av_assert0_fpu(void)
Assert that floating point operations can be executed.
Utility Preprocessor macros.