mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-11-22 07:30:19 +00:00
LibGfx: Fix Clang build failulres in VectorN
Clang didn't accept the friend declaration here, as the class has a requires clause attached to it, and I couldn't immediately figure out what it wants instead. Add accessors for VectorN::m_data and use those where needed instead for now.
This commit is contained in:
parent
caf652799f
commit
3a2118cc7d
Notes:
sideshowbarker
2024-07-17 11:16:25 +09:00
Author: https://github.com/awesomekling Commit: https://github.com/SerenityOS/serenity/commit/3a2118cc7d
1 changed files with 12 additions and 12 deletions
|
@ -31,9 +31,6 @@ namespace Gfx {
|
|||
|
||||
template<size_t N, typename T>
|
||||
requires(N >= 2 && N <= 4) class VectorN final {
|
||||
template<size_t U, typename V>
|
||||
friend class VectorN;
|
||||
|
||||
static_assert(LOOP_UNROLL_N >= N, "Unroll the entire loop for performance.");
|
||||
|
||||
public:
|
||||
|
@ -71,7 +68,7 @@ public:
|
|||
{
|
||||
UNROLL_LOOP
|
||||
for (auto i = 0u; i < N; ++i)
|
||||
m_data[i] += other.m_data[i];
|
||||
m_data[i] += other.data()[i];
|
||||
return *this;
|
||||
}
|
||||
|
||||
|
@ -79,7 +76,7 @@ public:
|
|||
{
|
||||
UNROLL_LOOP
|
||||
for (auto i = 0u; i < N; ++i)
|
||||
m_data[i] -= other.m_data[i];
|
||||
m_data[i] -= other.data()[i];
|
||||
return *this;
|
||||
}
|
||||
|
||||
|
@ -96,7 +93,7 @@ public:
|
|||
VectorN result;
|
||||
UNROLL_LOOP
|
||||
for (auto i = 0u; i < N; ++i)
|
||||
result.m_data[i] = m_data[i] + other.m_data[i];
|
||||
result.m_data[i] = m_data[i] + other.data()[i];
|
||||
return result;
|
||||
}
|
||||
|
||||
|
@ -105,7 +102,7 @@ public:
|
|||
VectorN result;
|
||||
UNROLL_LOOP
|
||||
for (auto i = 0u; i < N; ++i)
|
||||
result.m_data[i] = m_data[i] - other.m_data[i];
|
||||
result.m_data[i] = m_data[i] - other.data()[i];
|
||||
return result;
|
||||
}
|
||||
|
||||
|
@ -114,7 +111,7 @@ public:
|
|||
VectorN result;
|
||||
UNROLL_LOOP
|
||||
for (auto i = 0u; i < N; ++i)
|
||||
result.m_data[i] = m_data[i] * other.m_data[i];
|
||||
result.m_data[i] = m_data[i] * other.data()[i];
|
||||
return result;
|
||||
}
|
||||
|
||||
|
@ -132,7 +129,7 @@ public:
|
|||
VectorN result;
|
||||
UNROLL_LOOP
|
||||
for (auto i = 0u; i < N; ++i)
|
||||
result.m_data[i] = m_data[i] / other.m_data[i];
|
||||
result.m_data[i] = m_data[i] / other.data()[i];
|
||||
return result;
|
||||
}
|
||||
|
||||
|
@ -161,7 +158,7 @@ public:
|
|||
T result {};
|
||||
UNROLL_LOOP
|
||||
for (auto i = 0u; i < N; ++i)
|
||||
result += m_data[i] * other.m_data[i];
|
||||
result += m_data[i] * other.data()[i];
|
||||
return result;
|
||||
}
|
||||
|
||||
|
@ -238,13 +235,16 @@ public:
|
|||
UNROLL_LOOP
|
||||
for (auto i = 0u; i < N; ++i) {
|
||||
if constexpr (IsSame<T, float>)
|
||||
result.m_data[i] = static_cast<U>(lrintf(m_data[i]));
|
||||
result.data()[i] = static_cast<U>(lrintf(m_data[i]));
|
||||
else
|
||||
result.m_data[i] = static_cast<U>(lrint(m_data[i]));
|
||||
result.data()[i] = static_cast<U>(lrint(m_data[i]));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
auto& data() { return m_data; }
|
||||
auto const& data() const { return m_data; }
|
||||
|
||||
private:
|
||||
AK::Array<T, N> m_data;
|
||||
};
|
||||
|
|
Loading…
Reference in a new issue