diff options
| author | Mel <einebeere@gmail.com> | 2023-07-08 03:25:44 +0200 |
|---|---|---|
| committer | Mel <einebeere@gmail.com> | 2023-07-08 03:25:44 +0200 |
| commit | fe2baedc760c2f29e2c720f6b1132a2de33c5430 (patch) | |
| tree | dfbe1c72a17805a3cab6e0d47433e9021890c9ca /src/Math/Tensor.hpp | |
| parent | 41fbca10f6c6cdd9c1623f1347e7ecb40f5e7f59 (diff) | |
| download | meowcraft-fe2baedc760c2f29e2c720f6b1132a2de33c5430.tar.zst meowcraft-fe2baedc760c2f29e2c720f6b1132a2de33c5430.zip | |
Use own size types
Diffstat (limited to 'src/Math/Tensor.hpp')
| -rw-r--r-- | src/Math/Tensor.hpp | 22 |
1 files changed, 11 insertions, 11 deletions
diff --git a/src/Math/Tensor.hpp b/src/Math/Tensor.hpp index e373c1f..95c4548 100644 --- a/src/Math/Tensor.hpp +++ b/src/Math/Tensor.hpp @@ -1,14 +1,14 @@ #pragma once -template<size_t O, typename T, size_t ...S> +template<uint O, typename T, uint ...S> struct Tensor { - static constexpr size_t element_size = (S*...); + static constexpr USize element_size = (S*...); template<typename ...Args> - using EnableArgs = std::enable_if_t<sizeof...(Args) == O, bool>; + using EnableArgs = std::enable_if_t<sizeof...(Args) == O, Bool>; template<typename ...Args> - using EnableArgsPerElement = std::enable_if_t<sizeof...(Args) == element_size, bool>; - using Enable = std::enable_if_t<sizeof...(S) == O, bool>; + using EnableArgsPerElement = std::enable_if_t<sizeof...(Args) == element_size, Bool>; + using Enable = std::enable_if_t<sizeof...(S) == O, Bool>; template<Enable = true> Tensor() : elements{} {} @@ -19,7 +19,7 @@ struct Tensor { } template<Enable = true, typename ...Args, EnableArgsPerElement<Args...> = true> - Tensor(Args... args) : elements{ args... } {} + Tensor(Args... args) : elements{ static_cast<T>(args)... } {} template<typename ...Args, EnableArgs<Args...> = true> auto& operator()(Args... args) { @@ -27,12 +27,12 @@ struct Tensor { } template<typename ...Args, EnableArgs<Args...> = true> - static constexpr size_t pos(Args... args) { - size_t positions[O] = {static_cast<size_t>(args)...}; - size_t dimensions[O] = {S...}; + static constexpr USize pos(Args... args) { + USize positions[O] = {static_cast<USize>(args)...}; + USize dimensions[O] = {S...}; - size_t p = 0; - for (int i = 0; i < O; i++) { + USize p = 0; + for (Int i = 0; i < O; i++) { p *= dimensions[i]; p += positions[i]; } |
