diff options
author | Christoph Hertzberg <chtz@informatik.uni-bremen.de> | 2018-09-24 18:01:17 +0200 |
---|---|---|
committer | Christoph Hertzberg <chtz@informatik.uni-bremen.de> | 2018-09-24 18:01:17 +0200 |
commit | 2c083ace3ecec6c2894f41d96d6c2b7a48dff7e2 (patch) | |
tree | b174ec96745d7f34d0820e0e1295361de11941fb | |
parent | 626942d9ddcc17c21c2d79a690537e54237275bc (diff) |
Provide EIGEN_OVERRIDE and EIGEN_FINAL macros to mark virtual function overrides
-rw-r--r-- | Eigen/src/Core/util/Macros.h | 18 | ||||
-rw-r--r-- | unsupported/Eigen/CXX11/src/ThreadPool/NonBlockingThreadPool.h | 8 | ||||
-rw-r--r-- | unsupported/test/cxx11_tensor_thread_pool.cpp | 6 |
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); } |