aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Christoph Hertzberg <chtz@informatik.uni-bremen.de>2018-09-24 18:01:17 +0200
committerGravatar Christoph Hertzberg <chtz@informatik.uni-bremen.de>2018-09-24 18:01:17 +0200
commit2c083ace3ecec6c2894f41d96d6c2b7a48dff7e2 (patch)
treeb174ec96745d7f34d0820e0e1295361de11941fb
parent626942d9ddcc17c21c2d79a690537e54237275bc (diff)
Provide EIGEN_OVERRIDE and EIGEN_FINAL macros to mark virtual function overrides
-rw-r--r--Eigen/src/Core/util/Macros.h18
-rw-r--r--unsupported/Eigen/CXX11/src/ThreadPool/NonBlockingThreadPool.h8
-rw-r--r--unsupported/test/cxx11_tensor_thread_pool.cpp6
3 files changed, 25 insertions, 7 deletions
diff --git a/Eigen/src/Core/util/Macros.h b/Eigen/src/Core/util/Macros.h
index 3af6c4e37..dd4866724 100644
--- a/Eigen/src/Core/util/Macros.h
+++ b/Eigen/src/Core/util/Macros.h
@@ -638,6 +638,15 @@
#endif
#endif
+#ifndef EIGEN_HAS_CXX11_OVERRIDE_FINAL
+ #if EIGEN_MAX_CPP_VER>=11 && \
+ (__cplusplus >= 201103L || EIGEN_COMP_MSVC >= 1700)
+ #define EIGEN_HAS_CXX11_OVERRIDE_FINAL 1
+ #else
+ #define EIGEN_HAS_CXX11_OVERRIDE_FINAL 0
+ #endif
+#endif
+
#if defined(EIGEN_CUDACC) && EIGEN_HAS_CONSTEXPR
// While available already with c++11, this is useful mostly starting with c++14 and relaxed constexpr rules
#if defined(__NVCC__)
@@ -1095,6 +1104,15 @@ bool all(T t, Ts ... ts){ return t && all(ts...); }
}
#endif
+#if EIGEN_HAS_CXX11_OVERRIDE_FINAL
+// provide override and final specifiers if they are available:
+# define EIGEN_OVERRIDE override
+# define EIGEN_FINAL final
+#else
+# define EIGEN_OVERRIDE
+# define EIGEN_FINAL
+#endif
+
// Wrapping #pragma unroll in a macro since it is required for SYCL
#if defined(__SYCL_DEVICE_ONLY__)
#if defined(_MSC_VER)
diff --git a/unsupported/Eigen/CXX11/src/ThreadPool/NonBlockingThreadPool.h b/unsupported/Eigen/CXX11/src/ThreadPool/NonBlockingThreadPool.h
index 9bd6a175d..8c8ea0ed0 100644
--- a/unsupported/Eigen/CXX11/src/ThreadPool/NonBlockingThreadPool.h
+++ b/unsupported/Eigen/CXX11/src/ThreadPool/NonBlockingThreadPool.h
@@ -97,7 +97,7 @@ class ThreadPoolTempl : public Eigen::ThreadPoolInterface {
}
}
- void Schedule(std::function<void()> fn) {
+ void Schedule(std::function<void()> fn) EIGEN_OVERRIDE {
ScheduleWithHint(std::move(fn), 0, num_threads_);
}
@@ -134,7 +134,7 @@ class ThreadPoolTempl : public Eigen::ThreadPoolInterface {
}
}
- void Cancel() {
+ void Cancel() EIGEN_OVERRIDE {
cancelled_ = true;
done_ = true;
@@ -149,9 +149,9 @@ class ThreadPoolTempl : public Eigen::ThreadPoolInterface {
ec_.Notify(true);
}
- int NumThreads() const final { return num_threads_; }
+ int NumThreads() const EIGEN_FINAL { return num_threads_; }
- int CurrentThreadId() const final {
+ int CurrentThreadId() const EIGEN_FINAL {
const PerThread* pt = const_cast<ThreadPoolTempl*>(this)->GetPerThread();
if (pt->pool == this) {
return pt->thread_id;
diff --git a/unsupported/test/cxx11_tensor_thread_pool.cpp b/unsupported/test/cxx11_tensor_thread_pool.cpp
index 6d8e58214..95fbdcf93 100644
--- a/unsupported/test/cxx11_tensor_thread_pool.cpp
+++ b/unsupported/test/cxx11_tensor_thread_pool.cpp
@@ -18,12 +18,12 @@ using Eigen::Tensor;
class TestAllocator : public Allocator {
public:
- ~TestAllocator() override {}
- EIGEN_DEVICE_FUNC void* allocate(size_t num_bytes) const override {
+ ~TestAllocator() EIGEN_OVERRIDE {}
+ EIGEN_DEVICE_FUNC void* allocate(size_t num_bytes) const EIGEN_OVERRIDE {
const_cast<TestAllocator*>(this)->alloc_count_++;
return internal::aligned_malloc(num_bytes);
}
- EIGEN_DEVICE_FUNC void deallocate(void* buffer) const override {
+ EIGEN_DEVICE_FUNC void deallocate(void* buffer) const EIGEN_OVERRIDE {
const_cast<TestAllocator*>(this)->dealloc_count_++;
internal::aligned_free(buffer);
}