[nostalgia/geo] Fix Vec2 test

This commit is contained in:
Gary Talent 2022-02-17 06:33:50 -06:00
parent 77b270e084
commit 3f446a64c5
2 changed files with 29 additions and 6 deletions

View File

@ -8,11 +8,9 @@
namespace nostalgia::geo {
#ifndef OX_OS_BareMetal // doesn't compile in devKitPro for some reason
static_assert([] {
Vec2 v(1, 2);
return v.x == 1 && v.y == 2 && v[0] == 1 && v[1] == 2 && v.size() == 2;
});
#endif
}());
}
}

View File

@ -9,6 +9,7 @@
#endif
#include <ox/model/def.hpp>
#include <ox/std/assert.hpp>
#include <ox/std/bit.hpp>
#include <ox/std/def.hpp>
#include <ox/std/error.hpp>
@ -192,11 +193,35 @@ struct Vec {
}
constexpr auto &operator[](std::size_t i) noexcept {
return start()[i];
if (std::is_constant_evaluated()) {
switch (i) {
case 0:
return x;
case 1:
return y;
default:
oxAssert(false, "Read past end of Vec2");
return y;
}
} else {
return start()[i];
}
}
constexpr const auto &operator[](std::size_t i) const noexcept {
return start()[i];
if (std::is_constant_evaluated()) {
switch (i) {
case 0:
return x;
case 1:
return y;
default:
oxAssert(false, "Read past end of Vec2");
return y;
}
} else {
return start()[i];
}
}
constexpr auto operator==(const Vec &v) const noexcept {