40 Bool(
bool value =
false) : value_(value) {}
41 Bool& operator=(
bool value) {
46 operator bool()
const {
49 const bool* operator&()
const {
55 bool operator==(
const Bool& rhs)
const {
56 return value_ == rhs.value_;
58 bool operator==(
bool rhs)
const {
61 bool operator!=(
const Bool& rhs)
const {
62 return value_ != rhs.value_;
64 bool operator!=(
bool rhs)
const {
76template <
typename T,
size_t N>
79 static constexpr size_t kSize = N;
88 template <
typename Z = enable_if<(N == 2), T>>
92 template <
typename Z = enable_if<(N == 3), T>>
96 template <
typename W = enable_if<(N == 4), T>>
97 PointND(T x, T y, T z, T w) : dim{x, y, z, w} {}
100 for (
size_t s = 0; s < N; s++) {
101 if (dim[s] != rhs.dim[s]) {
107 bool operator!=(
const PointND<T, N>& rhs)
const {
108 return !operator==(rhs);
110 PointND& operator=(
const T rhs[N]) {
111 for (
size_t s = 0; s < N; s++) {
130 template <
typename Z = enable_if<(N > 2), T>>
134 template <
typename Z = enable_if<(N > 2), T>>
138 template <
typename W = enable_if<(N > 3), T>>
142 template <
typename W = enable_if<(N > 3), T>>
147 T& operator[](
size_t n) {
150 const T& operator[](
size_t n)
const {
179template <
typename T,
size_t N>
182 static constexpr size_t kMatrixSize = N;
198 for (
size_t s = 0; s < N; s++) {
199 if (points[s] != rhs[s]) {
206 return !operator==(rhs);
208 MatrixND& operator=(
const T rhs[N][N]) {
209 for (
size_t s = 0; s < N; s++) {
Substitute for bool POD type, which can be used safely in DataPiece templates.
Definition DataPieceTypes.h:37
Definition AsyncDiskFileChunk.hpp:49
MatrixND< float, 2 > Matrix2Df
2D float matrix class.
Definition DataPieceTypes.h:221
PointND< double, 2 > Point2Dd
2D double point class.
Definition DataPieceTypes.h:158
MatrixND< double, 4 > Matrix4Dd
4D double matrix class.
Definition DataPieceTypes.h:233
PointND< double, 3 > Point3Dd
3D double point class.
Definition DataPieceTypes.h:165
PointND< double, 4 > Point4Dd
4D double point class.
Definition DataPieceTypes.h:172
PointND< int32_t, 2 > Point2Di
2D int32_t point class.
Definition DataPieceTypes.h:162
MatrixND< float, 4 > Matrix4Df
4D float matrix class.
Definition DataPieceTypes.h:235
PointND< float, 2 > Point2Df
2D float point class.
Definition DataPieceTypes.h:160
MatrixND< float, 3 > Matrix3Df
3D float matrix class.
Definition DataPieceTypes.h:228
PointND< float, 4 > Point4Df
4D float point class.
Definition DataPieceTypes.h:174
MatrixND< int32_t, 3 > Matrix3Di
3D int32_t matrix class.
Definition DataPieceTypes.h:230
PointND< float, 3 > Point3Df
3D float point class.
Definition DataPieceTypes.h:167
MatrixND< double, 3 > Matrix3Dd
3D double matrix class.
Definition DataPieceTypes.h:226
PointND< int32_t, 3 > Point3Di
3D int32_t point class.
Definition DataPieceTypes.h:169
PointND< int32_t, 4 > Point4Di
4D int32_t point class.
Definition DataPieceTypes.h:176
MatrixND< int32_t, 2 > Matrix2Di
2D int32_t matrix class.
Definition DataPieceTypes.h:223
MatrixND< double, 2 > Matrix2Dd
2D double matrix class.
Definition DataPieceTypes.h:219
MatrixND< int32_t, 4 > Matrix4Di
4D int32_t matrix class.
Definition DataPieceTypes.h:237
Class to represent matrices of 3 and 4 dimensions, each for either int32_t, float or double.
Definition DataPieceTypes.h:180
POD type for of 2, 3 and 4 dimensions points, each for either int32_t, float or double.
Definition DataPieceTypes.h:77
PointND(T x, T y, T z)
3D point constructor
Definition DataPieceTypes.h:93
PointND(T x, T y)
2D point constructor
Definition DataPieceTypes.h:89
PointND(T x, T y, T z, T w)
4D point constructor
Definition DataPieceTypes.h:97