aboutsummaryrefslogtreecommitdiffstats
path: root/util/draft/matrix.h
diff options
context:
space:
mode:
authoraosipenko <aosipenko@yandex-team.ru>2022-02-10 16:48:08 +0300
committerDaniil Cherednik <dcherednik@yandex-team.ru>2022-02-10 16:48:08 +0300
commit69e3c43df1c96bc2ac8946bf4dfb1f5fc438ff7f (patch)
treeb222e5ac2e2e98872661c51ccceee5da0d291e13 /util/draft/matrix.h
parent948fd24d47d4b3b7815aaef1686aea00ef3f4288 (diff)
downloadydb-69e3c43df1c96bc2ac8946bf4dfb1f5fc438ff7f.tar.gz
Restoring authorship annotation for <aosipenko@yandex-team.ru>. Commit 2 of 2.
Diffstat (limited to 'util/draft/matrix.h')
-rw-r--r--util/draft/matrix.h116
1 files changed, 58 insertions, 58 deletions
diff --git a/util/draft/matrix.h b/util/draft/matrix.h
index 6383cee03d..154d00b35e 100644
--- a/util/draft/matrix.h
+++ b/util/draft/matrix.h
@@ -1,15 +1,15 @@
#pragma once
-
+
#include <util/generic/noncopyable.h>
#include <util/system/yassert.h>
#include <util/system/defaults.h>
-#include <string.h>
-
+#include <string.h>
+
template <typename T>
class TMatrix: TNonCopyable {
// Constructor/Destructor
-public:
- TMatrix()
+public:
+ TMatrix()
: Buf(nullptr)
, Arr(nullptr)
, M(0)
@@ -17,7 +17,7 @@ public:
, BufSize(0)
{
}
-
+
TMatrix(size_t m, size_t n)
: Buf(new T[m * n])
, Arr(Buf)
@@ -26,7 +26,7 @@ public:
, BufSize(m * n)
{
}
-
+
TMatrix(size_t m, size_t n, T* buf)
: Buf(nullptr)
, Arr(buf)
@@ -35,74 +35,74 @@ public:
, BufSize(m * n)
{
}
-
- ~TMatrix() {
- delete[] Buf;
- }
-
+
+ ~TMatrix() {
+ delete[] Buf;
+ }
+
// Properties/Methods
-public:
- void Clear() {
- M = N = 0;
- }
-
+public:
+ void Clear() {
+ M = N = 0;
+ }
+
void ReDim(size_t m, size_t n) {
Y_ASSERT(m >= 1 && n >= 1);
- size_t newSize = m * n;
- if (newSize > BufSize) {
- T* newBuf = new T[newSize];
+ size_t newSize = m * n;
+ if (newSize > BufSize) {
+ T* newBuf = new T[newSize];
delete[] Buf;
- Arr = Buf = newBuf;
- BufSize = newSize;
- }
+ Arr = Buf = newBuf;
+ BufSize = newSize;
+ }
M = m;
N = n;
- }
-
+ }
+
size_t Width() const {
- return N;
- }
-
+ return N;
+ }
+
size_t Height() const {
- return M;
- }
-
- // Access element matrix[i][j]
+ return M;
+ }
+
+ // Access element matrix[i][j]
T* operator[](size_t i) {
Y_ASSERT(i >= 0 && i < M);
- return Arr + i * N;
- }
-
- // Access element matrix[i][j]
+ return Arr + i * N;
+ }
+
+ // Access element matrix[i][j]
const T* operator[](size_t i) const {
Y_ASSERT(i >= 0 && i < M);
- return Arr + i * N;
- }
-
- // Access element matrix(i, j)
+ return Arr + i * N;
+ }
+
+ // Access element matrix(i, j)
T& operator()(size_t i, size_t j) {
Y_ASSERT(i >= 0 && i < M && j >= 0 && j < N);
- return Arr[i * N + j];
- }
-
- // Access element matrix(i, j)
+ return Arr[i * N + j];
+ }
+
+ // Access element matrix(i, j)
const T& operator()(size_t i, size_t j) const {
Y_ASSERT(i >= 0 && i < M && j >= 0 && j < N);
- return Arr[i * N + j];
- }
-
- void Zero() {
+ return Arr[i * N + j];
+ }
+
+ void Zero() {
memset((void*)Arr, 0, M * N * sizeof(T));
- }
+ }
- void Fill(T value) {
+ void Fill(T value) {
for (T *p = Arr, *end = Arr + M * N; p < end; ++p)
- *p = value;
- }
-
-private:
- T* Buf;
- T* Arr;
+ *p = value;
+ }
+
+private:
+ T* Buf;
+ T* Arr;
size_t M, N;
- size_t BufSize;
-};
+ size_t BufSize;
+};