7#ifdef ALIGATOR_EIGEN_CHECK_MALLOC
10#define ALIGATOR_EIGEN_ALLOW_MALLOC(allowed) \
11 ::Eigen::internal::set_is_malloc_allowed(allowed)
16#define ALIGATOR_NOMALLOC_SCOPED \
17 const ::aligator::internal::scoped_nomalloc ___aligator_nomalloc_zone {}
19#define ALIGATOR_NOMALLOC_RESTORE \
20 ALIGATOR_EIGEN_ALLOW_MALLOC(::aligator::internal::get_cached_malloc_status())
22#define ALIGATOR_EIGEN_ALLOW_MALLOC(allowed)
23#define ALIGATOR_NOMALLOC_SCOPED
24#define ALIGATOR_NOMALLOC_RESTORE
28#define ALIGATOR_NOMALLOC_BEGIN ALIGATOR_EIGEN_ALLOW_MALLOC(false)
30#define ALIGATOR_NOMALLOC_END ALIGATOR_EIGEN_ALLOW_MALLOC(true)
32#ifdef ALIGATOR_EIGEN_CHECK_MALLOC
33namespace aligator::internal {
34thread_local static bool g_cached_malloc_status =
true;
36inline void set_malloc_status(
bool status) { g_cached_malloc_status = status; }
38inline void save_malloc_status() {
40#ifdef ALIGATOR_EIGEN_CHECK_MALLOC
41 ::Eigen::internal::is_malloc_allowed()
48inline bool get_cached_malloc_status() {
return g_cached_malloc_status; }
50struct scoped_nomalloc {
51 scoped_nomalloc(
const scoped_nomalloc &) =
delete;
52 scoped_nomalloc(scoped_nomalloc &&) =
delete;
#define ALIGATOR_NOMALLOC_RESTORE
#define ALIGATOR_EIGEN_ALLOW_MALLOC(allowed)