diff options
Diffstat (limited to 'src/util/torus_array.h')
-rw-r--r-- | src/util/torus_array.h | 52 |
1 files changed, 0 insertions, 52 deletions
diff --git a/src/util/torus_array.h b/src/util/torus_array.h deleted file mode 100644 index bef0c9f..0000000 --- a/src/util/torus_array.h +++ /dev/null @@ -1,52 +0,0 @@ -#ifndef LIFE_SRC_UTIL_TORUS_ARRAY_ -#define LIFE_SRC_UTIL_TORUS_ARRAY_ - -#include <array> -#include <cstdint> - -namespace life { -namespace util { - -template< - typename TYPE, - std::size_t WIDTH, - std::size_t HEIGHT -> -class TorusArray { - static std::size_t toMatrixColumn(const std::ptrdiff_t x) { - if ( x >= 0 ) { - return x % WIDTH; - } else { - return WIDTH - ( std::abs(x) % WIDTH ); - } - } - - static std::size_t toMatrixRow(const std::ptrdiff_t y) { - if ( y >= 0 ) { - return y % HEIGHT; - } else { - return HEIGHT - ( std::abs(y) % HEIGHT ); - } - } - - public: - static const std::size_t width = WIDTH; - static const std::size_t height = HEIGHT; - - TYPE get(const std::ptrdiff_t x, const std::ptrdiff_t y) const { - return this->matrix_[toMatrixRow(y)][toMatrixColumn(x)]; - } - - void set(const std::ptrdiff_t x, const std::ptrdiff_t y, TYPE&& value) { - this->matrix_[toMatrixRow(y)][toMatrixColumn(x)] = value; - } - - private: - std::array<std::array<TYPE, WIDTH>, HEIGHT> matrix_; - -}; - -} -} - -#endif // LIFE_SRC_UTIL_TORUS_ARRAY_ |