aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Robinson <[email protected]>2018-12-04 15:30:39 -0800
committerChris Robinson <[email protected]>2018-12-04 15:30:39 -0800
commitf79b0e24d4cc5c1d4e9aa289b7eb2caba750bb9a (patch)
treed3d905e03d3fd9c9def38084dfdb62e2b3b1ccef
parenta0967967de999d1381e827aa4a73fc9e80ec031b (diff)
Avoid a few more explicit loops
-rw-r--r--Alc/alu.cpp41
1 files changed, 22 insertions, 19 deletions
diff --git a/Alc/alu.cpp b/Alc/alu.cpp
index facb70ed..de46633a 100644
--- a/Alc/alu.cpp
+++ b/Alc/alu.cpp
@@ -61,11 +61,9 @@ ALboolean OverrideReverbSpeedOfSound = AL_FALSE;
namespace {
-void ClearArray(ALfloat f[MAX_OUTPUT_CHANNELS])
+void ClearArray(ALfloat (&f)[MAX_OUTPUT_CHANNELS])
{
- size_t i;
- for(i = 0;i < MAX_OUTPUT_CHANNELS;i++)
- f[i] = 0.0f;
+ std::fill(std::begin(f), std::end(f), 0.0f);
}
struct ChanMap {
@@ -568,17 +566,21 @@ void CalcPanningAndFilters(ALvoice *voice, const ALfloat Azi, const ALfloat Elev
break;
}
- for(c = 0;c < num_channels;c++)
- {
- memset(&voice->Direct.Params[c].Hrtf.Target, 0,
- sizeof(voice->Direct.Params[c].Hrtf.Target));
- ClearArray(voice->Direct.Params[c].Gains.Target);
- }
- for(i = 0;i < NumSends;i++)
- {
- for(c = 0;c < num_channels;c++)
- ClearArray(voice->Send[i].Params[c].Gains.Target);
- }
+ std::for_each(std::begin(voice->Direct.Params), std::begin(voice->Direct.Params)+num_channels,
+ [](DirectParams &params) -> void
+ {
+ params.Hrtf.Target = HrtfParams{};
+ ClearArray(params.Gains.Target);
+ }
+ );
+ std::for_each(voice->Send+0, voice->Send+NumSends,
+ [num_channels](ALvoice::SendData &send) -> void
+ {
+ std::for_each(std::begin(send.Params), std::begin(send.Params)+num_channels,
+ [](SendParams &params) -> void { ClearArray(params.Gains.Target); }
+ );
+ }
+ );
voice->Flags &= ~(VOICE_HAS_HRTF | VOICE_HAS_NFC);
if(isbformat)
@@ -608,8 +610,9 @@ void CalcPanningAndFilters(ALvoice *voice, const ALfloat Azi, const ALfloat Elev
/* Only need to adjust the first channel of a B-Format source. */
NfcFilterAdjust(&voice->Direct.Params[0].NFCtrlFilter, w0);
- for(i = 0;i < MAX_AMBI_ORDER+1;i++)
- voice->Direct.ChannelsPerOrder[i] = Device->NumChannelsPerOrder[i];
+ std::copy(std::begin(Device->NumChannelsPerOrder),
+ std::end(Device->NumChannelsPerOrder),
+ std::begin(voice->Direct.ChannelsPerOrder));
voice->Flags |= VOICE_HAS_NFC;
}
@@ -650,8 +653,8 @@ void CalcPanningAndFilters(ALvoice *voice, const ALfloat Azi, const ALfloat Elev
voice->Direct.ChannelsPerOrder[0] = 1;
voice->Direct.ChannelsPerOrder[1] = mini(voice->Direct.Channels-1, 3);
- for(i = 2;i < MAX_AMBI_ORDER+1;i++)
- voice->Direct.ChannelsPerOrder[i] = 0;
+ std::fill(std::begin(voice->Direct.ChannelsPerOrder)+2,
+ std::end(voice->Direct.ChannelsPerOrder), 0);
voice->Flags |= VOICE_HAS_NFC;
}