From fe2baedc760c2f29e2c720f6b1132a2de33c5430 Mon Sep 17 00:00:00 2001 From: Mel Date: Sat, 8 Jul 2023 03:25:44 +0200 Subject: Use own size types --- src/Math/Vector.hpp | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) (limited to 'src/Math/Vector.hpp') diff --git a/src/Math/Vector.hpp b/src/Math/Vector.hpp index f6bdd7a..3d5a5be 100644 --- a/src/Math/Vector.hpp +++ b/src/Math/Vector.hpp @@ -1,15 +1,15 @@ #pragma once -#include +#include "../Common/Sizes.hpp" #include #include -template +template struct Vector { Vector(): elements{} {} - template = 0> - Vector(Args... args) : elements{ args... } {} + template = 0> + Vector(Args... args) : elements{ static_cast(args)... } {} explicit Vector(const T values[S]) { std::copy(values, values + S, elements); @@ -24,7 +24,7 @@ struct Vector { elements[S - 1] = scalar; } - template S), int> = 0> + template S), Int> = 0> explicit Vector(const Vector vector) { std::copy(vector.elements, vector.elements + S, elements); } @@ -32,7 +32,7 @@ struct Vector { template Vector map(F f) const { Vector result{}; - for (int i = 0; i < S; i++) { + for (Int i = 0; i < S; i++) { result[i] = f(elements[i]); } return result; @@ -41,7 +41,7 @@ struct Vector { template Vector map_indexed(F f) const { Vector result{}; - for (int i = 0; i < S; i++) { + for (Int i = 0; i < S; i++) { result[i] = f(i, elements[i]); } return result; @@ -50,7 +50,7 @@ struct Vector { template T reduce(F f) const { T result = elements[0]; - for (int i = 1; i < S; i++) { + for (Int i = 1; i < S; i++) { result = f(result, elements[i]); } return result; @@ -92,11 +92,11 @@ struct Vector { }; } - T operator[](size_t index) const { + T operator[](USize index) const { return elements[index]; } - T& operator[](size_t index) { + T& operator[](USize index) { return elements[index]; } @@ -128,8 +128,8 @@ struct Vector { return map([=](auto x) { return x / scalar; }); } - bool operator==(const Vector& other) { - for (int i = 0; i < S; i++) { + Bool operator==(const Vector& other) { + for (Int i = 0; i < S; i++) { if (elements[i] != other[i]) { return false; } @@ -137,7 +137,7 @@ struct Vector { return true; } - bool operator!=(const Vector& other) { + Bool operator!=(const Vector& other) { return !this->operator==(other); } @@ -162,7 +162,7 @@ struct Vector { std::stringstream str{}; str << "[ "; - for (int i = 0; i < S; i++) { + for (Int i = 0; i < S; i++) { str << elements[i] << " "; } str << "]"; -- cgit 1.4.1