Merge branch 'fix_esm3_exterior_cell_ref_id' into 'master'

Use lexicographical comparison in ESM3ExteriorCellRefId::operator< (#7316)

Closes #7316

See merge request OpenMW/openmw!2909
depth-refraction
psi29a 2 years ago
commit edfc6b78c8

@ -212,6 +212,14 @@ namespace ESM
EXPECT_NE(hash(a), hash(b));
}
TEST(ESMRefIdTest, esm3ExteriorCellHasLexicographicalOrder)
{
const RefId a = RefId::esm3ExteriorCell(0, 0);
const RefId b = RefId::esm3ExteriorCell(1, 0);
EXPECT_LT(a, b);
EXPECT_TRUE(!(b < a));
}
struct ESMRefIdToStringTest : TestWithParam<std::pair<RefId, std::string>>
{
};

@ -28,9 +28,14 @@ namespace ESM
int32_t getX() const { return mX; }
int32_t getY() const { return mY; }
constexpr bool operator==(ESM3ExteriorCellRefId rhs) const noexcept { return mX == rhs.mX && mY == rhs.mY; }
friend inline constexpr auto tie(const ESM3ExteriorCellRefId& value) noexcept
{
return std::tie(value.mX, value.mY);
}
constexpr bool operator==(ESM3ExteriorCellRefId rhs) const noexcept { return tie(*this) == tie(rhs); }
constexpr bool operator<(ESM3ExteriorCellRefId rhs) const noexcept { return mX < rhs.mX && mY < rhs.mY; }
constexpr bool operator<(ESM3ExteriorCellRefId rhs) const noexcept { return tie(*this) < tie(rhs); }
friend std::ostream& operator<<(std::ostream& stream, ESM3ExteriorCellRefId value);

Loading…
Cancel
Save