From c812c92d1a1835f0bda783e709481188c8d92225 Mon Sep 17 00:00:00 2001 From: Ben Longbons Date: Sat, 15 Mar 2014 19:34:59 -0700 Subject: Clean up header organization --- src/generic/matrix.hpp | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 src/generic/matrix.hpp (limited to 'src/generic/matrix.hpp') diff --git a/src/generic/matrix.hpp b/src/generic/matrix.hpp new file mode 100644 index 0000000..3530ba7 --- /dev/null +++ b/src/generic/matrix.hpp @@ -0,0 +1,54 @@ +#ifndef TMWA_GENERIC_MATRIX_HPP +#define TMWA_GENERIC_MATRIX_HPP + +# include "../sanity.hpp" + +# include "../compat/memory.hpp" + +template +class Matrix +{ + std::unique_ptr _data; + size_t _xs, _ys; +public: + Matrix() + : _data() + , _xs() + , _ys() + {} + Matrix(size_t x, size_t y) + : _data(make_unique(x * y)) + , _xs(x) + , _ys(y) + {} + // no copy-ctor or copy-assign + + void reset(size_t x, size_t y) + { + *this = Matrix(x, y); + } + void clear() + { + *this = Matrix(); + } + + T& ref(size_t x, size_t y) + { + return _data[x + y * _xs]; + } + const T& ref(size_t x, size_t y) const + { + return _data[x + y * _xs]; + } + + size_t xs() const + { + return _xs; + } + size_t ys() const + { + return _ys; + } +}; + +#endif // TMWA_GENERIC_MATRIX_HPP -- cgit v1.2.3-70-g09d2