summary refs log tree commit diff
path: root/src/Math/Vector.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/Math/Vector.hpp')
-rw-r--r--src/Math/Vector.hpp28
1 files changed, 14 insertions, 14 deletions
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 <cstddef>
+#include "../Common/Sizes.hpp"
 #include <sstream>
 #include <cmath>
 
-template <size_t S, typename T = float>
+template <uint S, typename T = Real>
 struct Vector {
     Vector(): elements{} {}
 
-    template<typename ...Args, std::enable_if_t<sizeof...(Args) == S, int> = 0>
-    Vector(Args... args) : elements{ args... } {}
+    template<typename ...Args, std::enable_if_t<sizeof...(Args) == S, Int> = 0>
+    Vector(Args... args) : elements{ static_cast<T>(args)... } {}
 
     explicit Vector(const T values[S]) {
         std::copy(values, values + S, elements);
@@ -24,7 +24,7 @@ struct Vector {
         elements[S - 1] = scalar;
     }
 
-    template<size_t N, std::enable_if_t<(N > S), int> = 0>
+    template<uint N, std::enable_if_t<(N > S), Int> = 0>
     explicit Vector(const Vector<N, T> vector) {
         std::copy(vector.elements, vector.elements + S, elements);
     }
@@ -32,7 +32,7 @@ struct Vector {
     template<typename F>
     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<typename F>
     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<typename F>
     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 << "]";