9#ifndef c3c605c9e48646758bf03fab65d52836
10#define c3c605c9e48646758bf03fab65d52836
12#include <boost/assert.hpp>
20 long line,
const std::string& msg);
29#define LF_UNREACHABLE \
31 ::lf::base::AssertionFailed("false", __FILE__, __LINE__, ""); \
45#define LF_VERIFY_MSG(expr, msg) \
48 std::stringstream ss; \
50 ::lf::base::AssertionFailed(#expr, __FILE__, __LINE__, ss.str()); \
51 throw std::runtime_error("this code should not be reached"); \
57#define LF_ASSERT_MSG_CONSTEXPR(expr, msg) ((void)0)
58#define LF_ASSERT_MSG(expr, msg) ((void)0)
60#define LF_ASSERT_MSG_CONSTEXPR(expr, msg) \
62 if (!(expr)) throw std::runtime_error(msg); \
66#define LF_ASSERT_MSG(expr, msg) \
69 std::stringstream ss; \
71 ::lf::base::AssertionFailed(#expr, __FILE__, __LINE__, ss.str()); \
79#ifdef LF_REDIRECT_ASSERTS
81#ifndef eigen_assert_redirected
85 "WARNING: Eigen has been included before all LehrFEM++ headers but LF_REDIRECT_ASSERTS=On in cmake. Not all Eigen Asserts may print a stacktrace! https://craffael.github.io/lehrfempp/eigen_stacktrace_warning.html")
88 "Eigen has been included before all LehrFEM++ headers but LF_REDIRECT_ASSERTS=On in cmake. Not all Eigen Asserts may print a stacktrace! https://craffael.github.io/lehrfempp/eigen_stacktrace_warning.html"
91#define eigen_assert(x) LF_ASSERT_MSG(x, "")
92#define eigen_assert_redirected
95#define eigen_assert(x) LF_ASSERT_MSG(x, "")
96#define eigen_assert_redirected
Contains basic functionality that is used by other parts of LehrFEM++.
void AssertionFailed(const std::string &expr, const std::string &file, long line, const std::string &msg)