Skip to content

Commit

Permalink
Make StereoFrame operators hidden friends
Browse files Browse the repository at this point in the history
  • Loading branch information
tobiashienzsch committed Feb 11, 2024
1 parent 12510b9 commit 9da985b
Showing 1 changed file with 112 additions and 144 deletions.
256 changes: 112 additions & 144 deletions lib/grit/audio/stereo/stereo_frame.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -8,152 +8,120 @@ struct StereoFrame
{
using value_type = SampleType;

friend constexpr auto operator+(StereoFrame lhs, SampleType rhs) -> StereoFrame
{
return {
lhs.left + rhs,
lhs.right + rhs,
};
}

friend constexpr auto operator-(StereoFrame lhs, SampleType rhs) -> StereoFrame
{
return {
lhs.left - rhs,
lhs.right - rhs,
};
}

friend constexpr auto operator*(StereoFrame lhs, SampleType rhs) -> StereoFrame
{
return {
lhs.left * rhs,
lhs.right * rhs,
};
}

friend constexpr auto operator/(StereoFrame lhs, SampleType rhs) -> StereoFrame
{
return {
lhs.left / rhs,
lhs.right / rhs,
};
}

friend constexpr auto operator+(StereoFrame lhs, StereoFrame rhs) -> StereoFrame
{
return {
lhs.left + rhs.left,
lhs.right + rhs.right,
};
}

friend constexpr auto operator-(StereoFrame lhs, StereoFrame rhs) -> StereoFrame
{
return {
lhs.left - rhs.left,
lhs.right - rhs.right,
};
}

friend constexpr auto operator*(StereoFrame lhs, StereoFrame rhs) -> StereoFrame
{
return {
lhs.left * rhs.left,
lhs.right * rhs.right,
};
}

friend constexpr auto operator/(StereoFrame lhs, StereoFrame rhs) -> StereoFrame
{
return {
lhs.left / rhs.left,
lhs.right / rhs.right,
};
}

friend constexpr auto operator+=(StereoFrame& lhs, StereoFrame rhs) -> StereoFrame&
{
lhs = lhs + rhs;
return lhs;
}

friend constexpr auto operator-=(StereoFrame& lhs, StereoFrame rhs) -> StereoFrame&
{
lhs = lhs - rhs;
return lhs;
}

friend constexpr auto operator*=(StereoFrame& lhs, StereoFrame rhs) -> StereoFrame&
{
lhs = lhs * rhs;
return lhs;
}

friend constexpr auto operator/=(StereoFrame& lhs, StereoFrame rhs) -> StereoFrame&
{
lhs = lhs / rhs;
return lhs;
}

friend constexpr auto operator+=(StereoFrame& lhs, SampleType rhs) -> StereoFrame&
{
lhs = lhs + rhs;
return lhs;
}

friend constexpr auto operator-=(StereoFrame& lhs, SampleType rhs) -> StereoFrame&
{
lhs = lhs - rhs;
return lhs;
}

friend constexpr auto operator*=(StereoFrame& lhs, SampleType rhs) -> StereoFrame&
{
lhs = lhs * rhs;
return lhs;
}

friend constexpr auto operator/=(StereoFrame& lhs, SampleType rhs) -> StereoFrame&
{
lhs = lhs / rhs;
return lhs;
}

SampleType left{};
SampleType right{};
};

/// \ingroup grit-audio-stereo
template<typename T>
[[nodiscard]] constexpr auto operator+(StereoFrame<T> lhs, StereoFrame<T> rhs) -> StereoFrame<T>
{
return {
lhs.left + rhs.left,
lhs.right + rhs.right,
};
}

/// \ingroup grit-audio-stereo
template<typename T>
[[nodiscard]] constexpr auto operator-(StereoFrame<T> lhs, StereoFrame<T> rhs) -> StereoFrame<T>
{
return {
lhs.left - rhs.left,
lhs.right - rhs.right,
};
}

/// \ingroup grit-audio-stereo
template<typename T>
[[nodiscard]] constexpr auto operator*(StereoFrame<T> lhs, StereoFrame<T> rhs) -> StereoFrame<T>
{
return {
lhs.left * rhs.left,
lhs.right * rhs.right,
};
}

/// \ingroup grit-audio-stereo
template<typename T>
[[nodiscard]] constexpr auto operator/(StereoFrame<T> lhs, StereoFrame<T> rhs) -> StereoFrame<T>
{
return {
lhs.left / rhs.left,
lhs.right / rhs.right,
};
}

/// \ingroup grit-audio-stereo
template<typename T>
[[nodiscard]] constexpr auto operator+(StereoFrame<T> lhs, T rhs) -> StereoFrame<T>
{
return {
lhs.left + rhs,
lhs.right + rhs,
};
}

/// \ingroup grit-audio-stereo
template<typename T>
[[nodiscard]] constexpr auto operator-(StereoFrame<T> lhs, T rhs) -> StereoFrame<T>
{
return {
lhs.left - rhs,
lhs.right - rhs,
};
}

/// \ingroup grit-audio-stereo
template<typename T>
[[nodiscard]] constexpr auto operator*(StereoFrame<T> lhs, T rhs) -> StereoFrame<T>
{
return {
lhs.left * rhs,
lhs.right * rhs,
};
}

/// \ingroup grit-audio-stereo
template<typename T>
[[nodiscard]] constexpr auto operator/(StereoFrame<T> lhs, T rhs) -> StereoFrame<T>
{
return {
lhs.left / rhs,
lhs.right / rhs,
};
}

/// \ingroup grit-audio-stereo
template<typename T>
constexpr auto operator+=(StereoFrame<T>& lhs, StereoFrame<T> rhs) -> StereoFrame<T>&
{
lhs = lhs + rhs;
return lhs;
}

/// \ingroup grit-audio-stereo
template<typename T>
constexpr auto operator-=(StereoFrame<T>& lhs, StereoFrame<T> rhs) -> StereoFrame<T>&
{
lhs = lhs - rhs;
return lhs;
}

/// \ingroup grit-audio-stereo
template<typename T>
constexpr auto operator*=(StereoFrame<T>& lhs, StereoFrame<T> rhs) -> StereoFrame<T>&
{
lhs = lhs * rhs;
return lhs;
}

/// \ingroup grit-audio-stereo
template<typename T>
constexpr auto operator/=(StereoFrame<T>& lhs, StereoFrame<T> rhs) -> StereoFrame<T>&
{
lhs = lhs / rhs;
return lhs;
}

/// \ingroup grit-audio-stereo
template<typename T>
constexpr auto operator+=(StereoFrame<T>& lhs, T rhs) -> StereoFrame<T>&
{
lhs = lhs + rhs;
return lhs;
}

/// \ingroup grit-audio-stereo
template<typename T>
constexpr auto operator-=(StereoFrame<T>& lhs, T rhs) -> StereoFrame<T>&
{
lhs = lhs - rhs;
return lhs;
}

/// \ingroup grit-audio-stereo
template<typename T>
constexpr auto operator*=(StereoFrame<T>& lhs, T rhs) -> StereoFrame<T>&
{
lhs = lhs * rhs;
return lhs;
}

/// \ingroup grit-audio-stereo
template<typename T>
constexpr auto operator/=(StereoFrame<T>& lhs, T rhs) -> StereoFrame<T>&
{
lhs = lhs / rhs;
return lhs;
}

} // namespace grit

0 comments on commit 9da985b

Please sign in to comment.