csv-parser 1.1.0
Csv::Parser (csv-parser)
Loading...
Searching...
No Matches
csv_matrix.h
Go to the documentation of this file.
1/**************************************************************************
2Copyright: (C) 2022 Alexander Shaduri
3License: Zlib
4***************************************************************************/
5
6#ifndef CSV_MATRIX_H
7#define CSV_MATRIX_H
8
9#include <cstddef>
10
11
19namespace Csv {
20
21
22
24enum class MatrixOrder {
25 RowMajor,
27};
28
29
30
33 public:
34
42 [[nodiscard]] static constexpr std::size_t matrixIndex(std::size_t row, std::size_t column,
43 std::size_t rows, std::size_t columns, MatrixOrder order)
44 {
45 if (order == MatrixOrder::RowMajor) {
46 return row * columns + column;
47 }
48 return column * rows + row;
49 }
50
51
52
57 [[nodiscard]] constexpr std::size_t matrixIndex(std::size_t row, std::size_t column) const
58 {
59 return matrixIndex(row, column, rows_, columns_, order_);
60 }
61
62
64 [[nodiscard]] constexpr std::size_t getRows() const
65 {
66 return rows_;
67 }
68
69
71 constexpr void setRows(const std::size_t rows)
72 {
73 rows_ = rows;
74 }
75
76
78 [[nodiscard]] constexpr std::size_t getColumns() const
79 {
80 return columns_;
81 }
82
83
85 constexpr void setColumns(const std::size_t columns)
86 {
87 columns_ = columns;
88 }
89
90
92 [[nodiscard]] constexpr MatrixOrder getOrder() const
93 {
94 return order_;
95 }
96
97
99 constexpr void setOrder(MatrixOrder order)
100 {
101 order_ = order;
102 }
103
104
105 private:
106 std::size_t rows_ = 0;
107 std::size_t columns_ = 0;
108 MatrixOrder order_ = MatrixOrder::RowMajor;
109
110};
111
112
113
114} // end ns
115
116
117
118#endif
Matrix information (dimensions, order).
Definition csv_matrix.h:32
constexpr void setColumns(const std::size_t columns)
Set number of columns in matrix.
Definition csv_matrix.h:85
constexpr MatrixOrder getOrder() const
Get element order (row-major or column-major).
Definition csv_matrix.h:92
constexpr void setOrder(MatrixOrder order)
Set element order (row-major or column-major).
Definition csv_matrix.h:99
constexpr std::size_t getRows() const
Get number of rows in matrix.
Definition csv_matrix.h:64
constexpr std::size_t getColumns() const
Get number of columns in matrix.
Definition csv_matrix.h:78
constexpr void setRows(const std::size_t rows)
Set number of rows in matrix.
Definition csv_matrix.h:71
constexpr std::size_t matrixIndex(std::size_t row, std::size_t column) const
Get index (offset) in flat-matrix vector, based on matrix information.
Definition csv_matrix.h:57
static constexpr std::size_t matrixIndex(std::size_t row, std::size_t column, std::size_t rows, std::size_t columns, MatrixOrder order)
Get index (offset) in flat-matrix vector.
Definition csv_matrix.h:42
MatrixOrder
Order of elements in a matrix.
Definition csv_matrix.h:24
@ RowMajor
A11, A12, A13, A21, ...
@ ColumnMajor
A11, A21, A31, A12, ...