diff --git a/modules/juce_audio_basics/buffers/juce_FloatVectorOperations.cpp b/modules/juce_audio_basics/buffers/juce_FloatVectorOperations.cpp index e4aa2e7fb6..fbe494320c 100644 --- a/modules/juce_audio_basics/buffers/juce_FloatVectorOperations.cpp +++ b/modules/juce_audio_basics/buffers/juce_FloatVectorOperations.cpp @@ -1177,245 +1177,245 @@ namespace //============================================================================== template -void JUCE_CALLTYPE detail::FloatVectorOperationsBase::clear (FloatType* dest, - CountType numValues) noexcept +void JUCE_CALLTYPE FloatVectorOperationsBase::clear (FloatType* dest, + CountType numValues) noexcept { FloatVectorHelpers::clear (dest, numValues); } template -void JUCE_CALLTYPE detail::FloatVectorOperationsBase::fill (FloatType* dest, - FloatType valueToFill, - CountType numValues) noexcept +void JUCE_CALLTYPE FloatVectorOperationsBase::fill (FloatType* dest, + FloatType valueToFill, + CountType numValues) noexcept { FloatVectorHelpers::fill (dest, valueToFill, numValues); } template -void JUCE_CALLTYPE detail::FloatVectorOperationsBase::copy (FloatType* dest, - const FloatType* src, - CountType numValues) noexcept +void JUCE_CALLTYPE FloatVectorOperationsBase::copy (FloatType* dest, + const FloatType* src, + CountType numValues) noexcept { memcpy (dest, src, (size_t) numValues * sizeof (FloatType)); } template -void JUCE_CALLTYPE detail::FloatVectorOperationsBase::copyWithMultiply (FloatType* dest, - const FloatType* src, - FloatType multiplier, - CountType numValues) noexcept +void JUCE_CALLTYPE FloatVectorOperationsBase::copyWithMultiply (FloatType* dest, + const FloatType* src, + FloatType multiplier, + CountType numValues) noexcept { FloatVectorHelpers::copyWithMultiply (dest, src, multiplier, numValues); } template -void JUCE_CALLTYPE detail::FloatVectorOperationsBase::add (FloatType* dest, - FloatType amountToAdd, - CountType numValues) noexcept +void JUCE_CALLTYPE FloatVectorOperationsBase::add (FloatType* dest, + FloatType amountToAdd, + CountType numValues) noexcept { FloatVectorHelpers::add (dest, amountToAdd, numValues); } template -void JUCE_CALLTYPE detail::FloatVectorOperationsBase::add (FloatType* dest, - const FloatType* src, - FloatType amount, - CountType numValues) noexcept +void JUCE_CALLTYPE FloatVectorOperationsBase::add (FloatType* dest, + const FloatType* src, + FloatType amount, + CountType numValues) noexcept { FloatVectorHelpers::add (dest, src, amount, numValues); } template -void JUCE_CALLTYPE detail::FloatVectorOperationsBase::add (FloatType* dest, - const FloatType* src, - CountType numValues) noexcept +void JUCE_CALLTYPE FloatVectorOperationsBase::add (FloatType* dest, + const FloatType* src, + CountType numValues) noexcept { FloatVectorHelpers::add (dest, src, numValues); } template -void JUCE_CALLTYPE detail::FloatVectorOperationsBase::add (FloatType* dest, - const FloatType* src1, - const FloatType* src2, - CountType num) noexcept +void JUCE_CALLTYPE FloatVectorOperationsBase::add (FloatType* dest, + const FloatType* src1, + const FloatType* src2, + CountType num) noexcept { FloatVectorHelpers::add (dest, src1, src2, num); } template -void JUCE_CALLTYPE detail::FloatVectorOperationsBase::subtract (FloatType* dest, - const FloatType* src, - CountType numValues) noexcept +void JUCE_CALLTYPE FloatVectorOperationsBase::subtract (FloatType* dest, + const FloatType* src, + CountType numValues) noexcept { FloatVectorHelpers::subtract (dest, src, numValues); } template -void JUCE_CALLTYPE detail::FloatVectorOperationsBase::subtract (FloatType* dest, - const FloatType* src1, - const FloatType* src2, - CountType num) noexcept +void JUCE_CALLTYPE FloatVectorOperationsBase::subtract (FloatType* dest, + const FloatType* src1, + const FloatType* src2, + CountType num) noexcept { FloatVectorHelpers::subtract (dest, src1, src2, num); } template -void JUCE_CALLTYPE detail::FloatVectorOperationsBase::addWithMultiply (FloatType* dest, - const FloatType* src, - FloatType multiplier, - CountType numValues) noexcept +void JUCE_CALLTYPE FloatVectorOperationsBase::addWithMultiply (FloatType* dest, + const FloatType* src, + FloatType multiplier, + CountType numValues) noexcept { FloatVectorHelpers::addWithMultiply (dest, src, multiplier, numValues); } template -void JUCE_CALLTYPE detail::FloatVectorOperationsBase::addWithMultiply (FloatType* dest, - const FloatType* src1, - const FloatType* src2, - CountType num) noexcept +void JUCE_CALLTYPE FloatVectorOperationsBase::addWithMultiply (FloatType* dest, + const FloatType* src1, + const FloatType* src2, + CountType num) noexcept { FloatVectorHelpers::addWithMultiply (dest, src1, src2, num); } template -void JUCE_CALLTYPE detail::FloatVectorOperationsBase::subtractWithMultiply (FloatType* dest, - const FloatType* src, - FloatType multiplier, - CountType numValues) noexcept +void JUCE_CALLTYPE FloatVectorOperationsBase::subtractWithMultiply (FloatType* dest, + const FloatType* src, + FloatType multiplier, + CountType numValues) noexcept { FloatVectorHelpers::subtractWithMultiply (dest, src, multiplier, numValues); } template -void JUCE_CALLTYPE detail::FloatVectorOperationsBase::subtractWithMultiply (FloatType* dest, - const FloatType* src1, - const FloatType* src2, - CountType num) noexcept +void JUCE_CALLTYPE FloatVectorOperationsBase::subtractWithMultiply (FloatType* dest, + const FloatType* src1, + const FloatType* src2, + CountType num) noexcept { FloatVectorHelpers::subtractWithMultiply (dest, src1, src2, num); } template -void JUCE_CALLTYPE detail::FloatVectorOperationsBase::multiply (FloatType* dest, - const FloatType* src, - CountType numValues) noexcept +void JUCE_CALLTYPE FloatVectorOperationsBase::multiply (FloatType* dest, + const FloatType* src, + CountType numValues) noexcept { FloatVectorHelpers::multiply (dest, src, numValues); } template -void JUCE_CALLTYPE detail::FloatVectorOperationsBase::multiply (FloatType* dest, - const FloatType* src1, - const FloatType* src2, - CountType numValues) noexcept +void JUCE_CALLTYPE FloatVectorOperationsBase::multiply (FloatType* dest, + const FloatType* src1, + const FloatType* src2, + CountType numValues) noexcept { FloatVectorHelpers::multiply (dest, src1, src2, numValues); } template -void JUCE_CALLTYPE detail::FloatVectorOperationsBase::multiply (FloatType* dest, - FloatType multiplier, - CountType numValues) noexcept +void JUCE_CALLTYPE FloatVectorOperationsBase::multiply (FloatType* dest, + FloatType multiplier, + CountType numValues) noexcept { FloatVectorHelpers::multiply (dest, multiplier, numValues); } template -void JUCE_CALLTYPE detail::FloatVectorOperationsBase::multiply (FloatType* dest, - const FloatType* src, - FloatType multiplier, - CountType num) noexcept +void JUCE_CALLTYPE FloatVectorOperationsBase::multiply (FloatType* dest, + const FloatType* src, + FloatType multiplier, + CountType num) noexcept { FloatVectorHelpers::multiply (dest, src, multiplier, num); } template -void JUCE_CALLTYPE detail::FloatVectorOperationsBase::negate (FloatType* dest, - const FloatType* src, - CountType numValues) noexcept +void JUCE_CALLTYPE FloatVectorOperationsBase::negate (FloatType* dest, + const FloatType* src, + CountType numValues) noexcept { FloatVectorHelpers::negate (dest, src, numValues); } template -void JUCE_CALLTYPE detail::FloatVectorOperationsBase::abs (FloatType* dest, - const FloatType* src, - CountType numValues) noexcept +void JUCE_CALLTYPE FloatVectorOperationsBase::abs (FloatType* dest, + const FloatType* src, + CountType numValues) noexcept { FloatVectorHelpers::abs (dest, src, numValues); } template -void JUCE_CALLTYPE detail::FloatVectorOperationsBase::min (FloatType* dest, - const FloatType* src, - FloatType comp, - CountType num) noexcept +void JUCE_CALLTYPE FloatVectorOperationsBase::min (FloatType* dest, + const FloatType* src, + FloatType comp, + CountType num) noexcept { FloatVectorHelpers::min (dest, src, comp, num); } template -void JUCE_CALLTYPE detail::FloatVectorOperationsBase::min (FloatType* dest, - const FloatType* src1, - const FloatType* src2, - CountType num) noexcept +void JUCE_CALLTYPE FloatVectorOperationsBase::min (FloatType* dest, + const FloatType* src1, + const FloatType* src2, + CountType num) noexcept { FloatVectorHelpers::min (dest, src1, src2, num); } template -void JUCE_CALLTYPE detail::FloatVectorOperationsBase::max (FloatType* dest, - const FloatType* src, - FloatType comp, - CountType num) noexcept +void JUCE_CALLTYPE FloatVectorOperationsBase::max (FloatType* dest, + const FloatType* src, + FloatType comp, + CountType num) noexcept { FloatVectorHelpers::max (dest, src, comp, num); } template -void JUCE_CALLTYPE detail::FloatVectorOperationsBase::max (FloatType* dest, - const FloatType* src1, - const FloatType* src2, - CountType num) noexcept +void JUCE_CALLTYPE FloatVectorOperationsBase::max (FloatType* dest, + const FloatType* src1, + const FloatType* src2, + CountType num) noexcept { FloatVectorHelpers::max (dest, src1, src2, num); } template -void JUCE_CALLTYPE detail::FloatVectorOperationsBase::clip (FloatType* dest, - const FloatType* src, - FloatType low, - FloatType high, - CountType num) noexcept +void JUCE_CALLTYPE FloatVectorOperationsBase::clip (FloatType* dest, + const FloatType* src, + FloatType low, + FloatType high, + CountType num) noexcept { FloatVectorHelpers::clip (dest, src, low, high, num); } template -Range JUCE_CALLTYPE detail::FloatVectorOperationsBase::findMinAndMax (const FloatType* src, - CountType numValues) noexcept +Range JUCE_CALLTYPE FloatVectorOperationsBase::findMinAndMax (const FloatType* src, + CountType numValues) noexcept { return FloatVectorHelpers::findMinAndMax (src, numValues); } template -FloatType JUCE_CALLTYPE detail::FloatVectorOperationsBase::findMinimum (const FloatType* src, - CountType numValues) noexcept +FloatType JUCE_CALLTYPE FloatVectorOperationsBase::findMinimum (const FloatType* src, + CountType numValues) noexcept { return FloatVectorHelpers::findMinimum (src, numValues); } template -FloatType JUCE_CALLTYPE detail::FloatVectorOperationsBase::findMaximum (const FloatType* src, - CountType numValues) noexcept +FloatType JUCE_CALLTYPE FloatVectorOperationsBase::findMaximum (const FloatType* src, + CountType numValues) noexcept { return FloatVectorHelpers::findMaximum (src, numValues); } -template struct detail::FloatVectorOperationsBase; -template struct detail::FloatVectorOperationsBase; -template struct detail::FloatVectorOperationsBase; -template struct detail::FloatVectorOperationsBase; +template struct FloatVectorOperationsBase; +template struct FloatVectorOperationsBase; +template struct FloatVectorOperationsBase; +template struct FloatVectorOperationsBase; void JUCE_CALLTYPE FloatVectorOperations::convertFixedToFloat (float* dest, const int* src, float multiplier, size_t num) noexcept { diff --git a/modules/juce_audio_basics/buffers/juce_FloatVectorOperations.h b/modules/juce_audio_basics/buffers/juce_FloatVectorOperations.h index 2bdcef7a1d..ce6ee0359d 100644 --- a/modules/juce_audio_basics/buffers/juce_FloatVectorOperations.h +++ b/modules/juce_audio_basics/buffers/juce_FloatVectorOperations.h @@ -32,10 +32,24 @@ namespace juce #endif class ScopedNoDenormals; -#if ! DOXYGEN -namespace detail -{ +//============================================================================== +/** + A collection of simple vector operations on arrays of floating point numbers, + accelerated with SIMD instructions where possible, usually accessed from + the FloatVectorOperations class. + + @code + float data[64]; + + // The following two function calls are equivalent: + FloatVectorOperationsBase::clear (data, 64); + FloatVectorOperations::clear (data, 64); + @endcode + + @see FloatVectorOperations + @tags{Audio} +*/ template struct FloatVectorOperationsBase { @@ -69,6 +83,10 @@ struct FloatVectorOperationsBase static FloatType JUCE_CALLTYPE findMaximum (const FloatType* src, CountType numValues) noexcept; }; +#if ! DOXYGEN +namespace detail +{ + template struct NameForwarder; @@ -135,15 +153,18 @@ struct NameForwarder : Head, NameForwarder //============================================================================== /** - A collection of simple vector operations on arrays of floats, accelerated with - SIMD instructions where possible. + A collection of simple vector operations on arrays of floating point numbers, + accelerated with SIMD instructions where possible and providing all methods + from FloatVectorOperationsBase. + + @see FloatVectorOperationsBase @tags{Audio} */ -class JUCE_API FloatVectorOperations : public detail::NameForwarder, - detail::FloatVectorOperationsBase, - detail::FloatVectorOperationsBase, - detail::FloatVectorOperationsBase> +class JUCE_API FloatVectorOperations : public detail::NameForwarder, + FloatVectorOperationsBase, + FloatVectorOperationsBase, + FloatVectorOperationsBase> { public: static void JUCE_CALLTYPE convertFixedToFloat (float* dest, const int* src, float multiplier, int num) noexcept;