diff options
author | Gael Guennebaud <g.gael@free.fr> | 2013-08-21 14:29:00 +0200 |
---|---|---|
committer | Gael Guennebaud <g.gael@free.fr> | 2013-08-21 14:29:00 +0200 |
commit | d9381598bc8f4bb81f90125d347d4329f57e5aff (patch) | |
tree | 5465f3c481acd6b6813a77cb27fc856a4f2a799a /Eigen/src/Core/DenseStorage.h | |
parent | 403be74861071daa7a81372abf2debe71cf1aed6 (diff) |
Allows EIGEN_STACK_ALLOCATION_LIMIT to be 0 for no limit
Diffstat (limited to 'Eigen/src/Core/DenseStorage.h')
-rw-r--r-- | Eigen/src/Core/DenseStorage.h | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/Eigen/src/Core/DenseStorage.h b/Eigen/src/Core/DenseStorage.h index 0ea2bb71f..2549bd84e 100644 --- a/Eigen/src/Core/DenseStorage.h +++ b/Eigen/src/Core/DenseStorage.h @@ -24,6 +24,14 @@ namespace internal { struct constructor_without_unaligned_array_assert {}; +template<typename T, int Size> void check_static_allocation_size() +{ + // if EIGEN_STACK_ALLOCATION_LIMIT is defined to 0, then no limit + #if EIGEN_STACK_ALLOCATION_LIMIT + EIGEN_STATIC_ASSERT(Size * sizeof(T) <= EIGEN_STACK_ALLOCATION_LIMIT, OBJECT_ALLOCATED_ON_STACK_IS_TOO_BIG); + #endif +} + /** \internal * Static array. If the MatrixOrArrayOptions require auto-alignment, the array will be automatically aligned: * to 16 bytes boundary if the total size is a multiple of 16 bytes. @@ -38,12 +46,12 @@ struct plain_array plain_array() { - EIGEN_STATIC_ASSERT(Size * sizeof(T) <= EIGEN_STACK_ALLOCATION_LIMIT, OBJECT_ALLOCATED_ON_STACK_IS_TOO_BIG); + check_static_allocation_size<T,Size>(); } plain_array(constructor_without_unaligned_array_assert) { - EIGEN_STATIC_ASSERT(Size * sizeof(T) <= EIGEN_STACK_ALLOCATION_LIMIT, OBJECT_ALLOCATED_ON_STACK_IS_TOO_BIG); + check_static_allocation_size<T,Size>(); } }; @@ -76,12 +84,12 @@ struct plain_array<T, Size, MatrixOrArrayOptions, 16> plain_array() { EIGEN_MAKE_UNALIGNED_ARRAY_ASSERT(0xf); - EIGEN_STATIC_ASSERT(Size * sizeof(T) <= EIGEN_STACK_ALLOCATION_LIMIT, OBJECT_ALLOCATED_ON_STACK_IS_TOO_BIG); + check_static_allocation_size<T,Size>(); } plain_array(constructor_without_unaligned_array_assert) { - EIGEN_STATIC_ASSERT(Size * sizeof(T) <= EIGEN_STACK_ALLOCATION_LIMIT, OBJECT_ALLOCATED_ON_STACK_IS_TOO_BIG); + check_static_allocation_size<T,Size>(); } }; |