diff options
Diffstat (limited to 'Alc')
-rw-r--r-- | Alc/effects/autowah.cpp (renamed from Alc/effects/autowah.c) | 21 | ||||
-rw-r--r-- | Alc/effects/chorus.cpp (renamed from Alc/effects/chorus.c) | 38 | ||||
-rw-r--r-- | Alc/effects/compressor.cpp (renamed from Alc/effects/compressor.c) | 22 |
3 files changed, 48 insertions, 33 deletions
diff --git a/Alc/effects/autowah.c b/Alc/effects/autowah.cpp index f65f1be6..b4ef8f3c 100644 --- a/Alc/effects/autowah.c +++ b/Alc/effects/autowah.cpp @@ -33,9 +33,7 @@ #define MAX_FREQ 2500.0f #define Q_FACTOR 5.0f -typedef struct ALautowahState { - DERIVE_FROM_TYPE(ALeffectState); - +struct ALautowahState final : public ALeffectState { /* Effect parameters */ ALfloat AttackRate; ALfloat ReleaseRate; @@ -64,7 +62,7 @@ typedef struct ALautowahState { /* Effects buffers */ alignas(16) ALfloat BufferOut[BUFFERSIZE]; -} ALautowahState; +}; static ALvoid ALautowahState_Destruct(ALautowahState *state); static ALboolean ALautowahState_deviceUpdate(ALautowahState *state, ALCdevice *device); @@ -76,6 +74,7 @@ DEFINE_ALEFFECTSTATE_VTABLE(ALautowahState); static void ALautowahState_Construct(ALautowahState *state) { + new (state) ALautowahState{}; ALeffectState_Construct(STATIC_CAST(ALeffectState, state)); SET_VTABLE2(ALautowahState, ALeffectState, state); } @@ -83,6 +82,7 @@ static void ALautowahState_Construct(ALautowahState *state) static ALvoid ALautowahState_Destruct(ALautowahState *state) { ALeffectState_Destruct(STATIC_CAST(ALeffectState,state)); + state->~ALautowahState(); } static ALboolean ALautowahState_deviceUpdate(ALautowahState *state, ALCdevice *UNUSED(device)) @@ -204,9 +204,9 @@ static ALvoid ALautowahState_process(ALautowahState *state, ALsizei SamplesToDo, } } -typedef struct AutowahStateFactory { - DERIVE_FROM_TYPE(EffectStateFactory); -} AutowahStateFactory; +struct AutowahStateFactory final : public EffectStateFactory { + AutowahStateFactory() noexcept; +}; static ALeffectState *AutowahStateFactory_create(AutowahStateFactory *UNUSED(factory)) { @@ -220,9 +220,14 @@ static ALeffectState *AutowahStateFactory_create(AutowahStateFactory *UNUSED(fac DEFINE_EFFECTSTATEFACTORY_VTABLE(AutowahStateFactory); +AutowahStateFactory::AutowahStateFactory() noexcept + : EffectStateFactory{GET_VTABLE2(AutowahStateFactory, EffectStateFactory)} +{ +} + EffectStateFactory *AutowahStateFactory_getFactory(void) { - static AutowahStateFactory AutowahFactory = { { GET_VTABLE2(AutowahStateFactory, EffectStateFactory) } }; + static AutowahStateFactory AutowahFactory{}; return STATIC_CAST(EffectStateFactory, &AutowahFactory); } diff --git a/Alc/effects/chorus.c b/Alc/effects/chorus.cpp index 725189b3..b658098e 100644 --- a/Alc/effects/chorus.c +++ b/Alc/effects/chorus.cpp @@ -38,9 +38,7 @@ enum WaveForm { WF_Triangle }; -typedef struct ALchorusState { - DERIVE_FROM_TYPE(ALeffectState); - +struct ALchorusState final : public ALeffectState { ALfloat *SampleBuffer; ALsizei BufferLength; ALsizei offset; @@ -61,7 +59,7 @@ typedef struct ALchorusState { ALint delay; ALfloat depth; ALfloat feedback; -} ALchorusState; +}; static ALvoid ALchorusState_Destruct(ALchorusState *state); static ALboolean ALchorusState_deviceUpdate(ALchorusState *state, ALCdevice *Device); @@ -74,6 +72,7 @@ DEFINE_ALEFFECTSTATE_VTABLE(ALchorusState); static void ALchorusState_Construct(ALchorusState *state) { + new (state) ALchorusState{}; ALeffectState_Construct(STATIC_CAST(ALeffectState, state)); SET_VTABLE2(ALchorusState, ALeffectState, state); @@ -91,6 +90,7 @@ static ALvoid ALchorusState_Destruct(ALchorusState *state) state->SampleBuffer = NULL; ALeffectState_Destruct(STATIC_CAST(ALeffectState,state)); + state->~ALchorusState(); } static ALboolean ALchorusState_deviceUpdate(ALchorusState *state, ALCdevice *Device) @@ -107,8 +107,7 @@ static ALboolean ALchorusState_deviceUpdate(ALchorusState *state, ALCdevice *Dev if(!temp) return AL_FALSE; al_free(state->SampleBuffer); - state->SampleBuffer = temp; - + state->SampleBuffer = static_cast<float*>(temp); state->BufferLength = maxlen; } @@ -285,9 +284,9 @@ static ALvoid ALchorusState_process(ALchorusState *state, ALsizei SamplesToDo, c } -typedef struct ChorusStateFactory { - DERIVE_FROM_TYPE(EffectStateFactory); -} ChorusStateFactory; +struct ChorusStateFactory final : public EffectStateFactory { + ChorusStateFactory() noexcept; +}; static ALeffectState *ChorusStateFactory_create(ChorusStateFactory *UNUSED(factory)) { @@ -301,11 +300,14 @@ static ALeffectState *ChorusStateFactory_create(ChorusStateFactory *UNUSED(facto DEFINE_EFFECTSTATEFACTORY_VTABLE(ChorusStateFactory); +ChorusStateFactory::ChorusStateFactory() noexcept + : EffectStateFactory{GET_VTABLE2(ChorusStateFactory, EffectStateFactory)} +{ +} EffectStateFactory *ChorusStateFactory_getFactory(void) { - static ChorusStateFactory ChorusFactory = { { GET_VTABLE2(ChorusStateFactory, EffectStateFactory) } }; - + static ChorusStateFactory ChorusFactory{}; return STATIC_CAST(EffectStateFactory, &ChorusFactory); } @@ -422,9 +424,9 @@ DEFINE_ALEFFECT_VTABLE(ALchorus); /* Flanger is basically a chorus with a really short delay. They can both use * the same processing functions, so piggyback flanger on the chorus functions. */ -typedef struct FlangerStateFactory { - DERIVE_FROM_TYPE(EffectStateFactory); -} FlangerStateFactory; +struct FlangerStateFactory final : public EffectStateFactory { + FlangerStateFactory() noexcept; +}; ALeffectState *FlangerStateFactory_create(FlangerStateFactory *UNUSED(factory)) { @@ -438,10 +440,14 @@ ALeffectState *FlangerStateFactory_create(FlangerStateFactory *UNUSED(factory)) DEFINE_EFFECTSTATEFACTORY_VTABLE(FlangerStateFactory); -EffectStateFactory *FlangerStateFactory_getFactory(void) +FlangerStateFactory::FlangerStateFactory() noexcept + : EffectStateFactory{GET_VTABLE2(FlangerStateFactory, EffectStateFactory)} { - static FlangerStateFactory FlangerFactory = { { GET_VTABLE2(FlangerStateFactory, EffectStateFactory) } }; +} +EffectStateFactory *FlangerStateFactory_getFactory(void) +{ + static FlangerStateFactory FlangerFactory{}; return STATIC_CAST(EffectStateFactory, &FlangerFactory); } diff --git a/Alc/effects/compressor.c b/Alc/effects/compressor.cpp index d9b9f1e0..0a307a5f 100644 --- a/Alc/effects/compressor.c +++ b/Alc/effects/compressor.cpp @@ -34,9 +34,7 @@ #define RELEASE_TIME 0.2f /* 200ms to drop from max to min */ -typedef struct ALcompressorState { - DERIVE_FROM_TYPE(ALeffectState); - +struct ALcompressorState final : public ALeffectState { /* Effect gains for each channel */ ALfloat Gain[MAX_EFFECT_CHANNELS][MAX_OUTPUT_CHANNELS]; @@ -45,7 +43,7 @@ typedef struct ALcompressorState { ALfloat AttackMult; ALfloat ReleaseMult; ALfloat EnvFollower; -} ALcompressorState; +}; static ALvoid ALcompressorState_Destruct(ALcompressorState *state); static ALboolean ALcompressorState_deviceUpdate(ALcompressorState *state, ALCdevice *device); @@ -58,6 +56,7 @@ DEFINE_ALEFFECTSTATE_VTABLE(ALcompressorState); static void ALcompressorState_Construct(ALcompressorState *state) { + new (state) ALcompressorState{}; ALeffectState_Construct(STATIC_CAST(ALeffectState, state)); SET_VTABLE2(ALcompressorState, ALeffectState, state); @@ -70,6 +69,7 @@ static void ALcompressorState_Construct(ALcompressorState *state) static ALvoid ALcompressorState_Destruct(ALcompressorState *state) { ALeffectState_Destruct(STATIC_CAST(ALeffectState,state)); + state->~ALcompressorState(); } static ALboolean ALcompressorState_deviceUpdate(ALcompressorState *state, ALCdevice *device) @@ -172,9 +172,9 @@ static ALvoid ALcompressorState_process(ALcompressorState *state, ALsizei Sample } -typedef struct CompressorStateFactory { - DERIVE_FROM_TYPE(EffectStateFactory); -} CompressorStateFactory; +struct CompressorStateFactory final : public EffectStateFactory { + CompressorStateFactory() noexcept; +}; static ALeffectState *CompressorStateFactory_create(CompressorStateFactory *UNUSED(factory)) { @@ -188,10 +188,14 @@ static ALeffectState *CompressorStateFactory_create(CompressorStateFactory *UNUS DEFINE_EFFECTSTATEFACTORY_VTABLE(CompressorStateFactory); -EffectStateFactory *CompressorStateFactory_getFactory(void) +CompressorStateFactory::CompressorStateFactory() noexcept + : EffectStateFactory{GET_VTABLE2(CompressorStateFactory, EffectStateFactory)} { - static CompressorStateFactory CompressorFactory = { { GET_VTABLE2(CompressorStateFactory, EffectStateFactory) } }; +} +EffectStateFactory *CompressorStateFactory_getFactory(void) +{ + static CompressorStateFactory CompressorFactory{}; return STATIC_CAST(EffectStateFactory, &CompressorFactory); } |