diff options
author | Chris Robinson <[email protected]> | 2020-12-26 09:21:30 -0800 |
---|---|---|
committer | Chris Robinson <[email protected]> | 2020-12-26 09:21:30 -0800 |
commit | 54719de13235f6ea216e8d200661027c047bd283 (patch) | |
tree | 469e890debbe901619a4cbbcfc6b682a4b686b80 /al/effect.cpp | |
parent | 8850a3f730dee76c57d5500b0c418078c91096c7 (diff) |
Avoid AL enums for the EffectSlot type
Diffstat (limited to 'al/effect.cpp')
-rw-r--r-- | al/effect.cpp | 59 |
1 files changed, 24 insertions, 35 deletions
diff --git a/al/effect.cpp b/al/effect.cpp index 7ddf9664..02b31fac 100644 --- a/al/effect.cpp +++ b/al/effect.cpp @@ -82,30 +82,29 @@ effect_exception::effect_exception(ALenum code, const char *msg, ...) : mErrorCo namespace { -struct FactoryItem { +struct EffectPropsItem { ALenum Type; - EffectStateFactory* (&GetFactory)(void); const EffectProps &DefaultProps; const EffectVtable &Vtable; }; -constexpr FactoryItem FactoryList[] = { - { AL_EFFECT_NULL, NullStateFactory_getFactory, NullEffectProps, NullEffectVtable }, - { AL_EFFECT_EAXREVERB, ReverbStateFactory_getFactory, ReverbEffectProps, ReverbEffectVtable }, - { AL_EFFECT_REVERB, StdReverbStateFactory_getFactory, StdReverbEffectProps, StdReverbEffectVtable }, - { AL_EFFECT_AUTOWAH, AutowahStateFactory_getFactory, AutowahEffectProps, AutowahEffectVtable }, - { AL_EFFECT_CHORUS, ChorusStateFactory_getFactory, ChorusEffectProps, ChorusEffectVtable }, - { AL_EFFECT_COMPRESSOR, CompressorStateFactory_getFactory, CompressorEffectProps, CompressorEffectVtable }, - { AL_EFFECT_DISTORTION, DistortionStateFactory_getFactory, DistortionEffectProps, DistortionEffectVtable }, - { AL_EFFECT_ECHO, EchoStateFactory_getFactory, EchoEffectProps, EchoEffectVtable }, - { AL_EFFECT_EQUALIZER, EqualizerStateFactory_getFactory, EqualizerEffectProps, EqualizerEffectVtable }, - { AL_EFFECT_FLANGER, FlangerStateFactory_getFactory, FlangerEffectProps, FlangerEffectVtable }, - { AL_EFFECT_FREQUENCY_SHIFTER, FshifterStateFactory_getFactory, FshifterEffectProps, FshifterEffectVtable }, - { AL_EFFECT_RING_MODULATOR, ModulatorStateFactory_getFactory, ModulatorEffectProps, ModulatorEffectVtable }, - { AL_EFFECT_PITCH_SHIFTER, PshifterStateFactory_getFactory, PshifterEffectProps, PshifterEffectVtable }, - { AL_EFFECT_VOCAL_MORPHER, VmorpherStateFactory_getFactory, VmorpherEffectProps, VmorpherEffectVtable }, - { AL_EFFECT_DEDICATED_DIALOGUE, DedicatedStateFactory_getFactory, DedicatedEffectProps, DedicatedEffectVtable }, - { AL_EFFECT_DEDICATED_LOW_FREQUENCY_EFFECT, DedicatedStateFactory_getFactory, DedicatedEffectProps, DedicatedEffectVtable }, - { AL_EFFECT_CONVOLUTION_REVERB_SOFT, ConvolutionStateFactory_getFactory, ConvolutionEffectProps, ConvolutionEffectVtable }, +constexpr EffectPropsItem EffectPropsList[] = { + { AL_EFFECT_NULL, NullEffectProps, NullEffectVtable }, + { AL_EFFECT_EAXREVERB, ReverbEffectProps, ReverbEffectVtable }, + { AL_EFFECT_REVERB, StdReverbEffectProps, StdReverbEffectVtable }, + { AL_EFFECT_AUTOWAH, AutowahEffectProps, AutowahEffectVtable }, + { AL_EFFECT_CHORUS, ChorusEffectProps, ChorusEffectVtable }, + { AL_EFFECT_COMPRESSOR, CompressorEffectProps, CompressorEffectVtable }, + { AL_EFFECT_DISTORTION, DistortionEffectProps, DistortionEffectVtable }, + { AL_EFFECT_ECHO, EchoEffectProps, EchoEffectVtable }, + { AL_EFFECT_EQUALIZER, EqualizerEffectProps, EqualizerEffectVtable }, + { AL_EFFECT_FLANGER, FlangerEffectProps, FlangerEffectVtable }, + { AL_EFFECT_FREQUENCY_SHIFTER, FshifterEffectProps, FshifterEffectVtable }, + { AL_EFFECT_RING_MODULATOR, ModulatorEffectProps, ModulatorEffectVtable }, + { AL_EFFECT_PITCH_SHIFTER, PshifterEffectProps, PshifterEffectVtable }, + { AL_EFFECT_VOCAL_MORPHER, VmorpherEffectProps, VmorpherEffectVtable }, + { AL_EFFECT_DEDICATED_DIALOGUE, DedicatedEffectProps, DedicatedEffectVtable }, + { AL_EFFECT_DEDICATED_LOW_FREQUENCY_EFFECT, DedicatedEffectProps, DedicatedEffectVtable }, + { AL_EFFECT_CONVOLUTION_REVERB_SOFT, ConvolutionEffectProps, ConvolutionEffectVtable }, }; @@ -128,17 +127,17 @@ void ALeffect_getParamfv(const ALeffect *effect, ALenum param, float *values) { effect->vtab->getParamfv(&effect->Props, param, values); } -const FactoryItem *getFactoryItemByType(ALenum type) +const EffectPropsItem *getEffectPropsItemByType(ALenum type) { - auto iter = std::find_if(std::begin(FactoryList), std::end(FactoryList), - [type](const FactoryItem &item) noexcept -> bool + auto iter = std::find_if(std::begin(EffectPropsList), std::end(EffectPropsList), + [type](const EffectPropsItem &item) noexcept -> bool { return item.Type == type; }); - return (iter != std::end(FactoryList)) ? std::addressof(*iter) : nullptr; + return (iter != std::end(EffectPropsList)) ? std::addressof(*iter) : nullptr; } void InitEffectParams(ALeffect *effect, ALenum type) { - const FactoryItem *item{getFactoryItemByType(type)}; + const EffectPropsItem *item{getEffectPropsItemByType(type)}; if(item) { effect->Props = item->DefaultProps; @@ -554,16 +553,6 @@ EffectSubList::~EffectSubList() } -EffectStateFactory *getFactoryByType(ALenum type) -{ - auto iter = std::find_if(std::begin(FactoryList), std::end(FactoryList), - [type](const FactoryItem &item) noexcept -> bool - { return item.Type == type; } - ); - return (iter != std::end(FactoryList)) ? iter->GetFactory() : nullptr; -} - - #define DECL(x) { #x, EFX_REVERB_PRESET_##x } static const struct { const char name[32]; |