Cleanup the ALeffectStateFactory_create methods

Get rid of the ALeffectStateFactory_create macro, and use the VCALL_NOARGS
helper (requires adding the 'this' factory parameter).
This commit is contained in:
Chris Robinson
2013-05-27 13:16:17 -07:00
parent 8d874512b6
commit 334a7c1d59
11 changed files with 23 additions and 16 deletions
+2 -1
View File
@@ -251,9 +251,10 @@ static void ALchorusState_Delete(ALchorusState *state)
DEFINE_ALEFFECTSTATE_VTABLE(ALchorusState);
static ALeffectState *ALchorusStateFactory_create(void)
static ALeffectState *ALchorusStateFactory_create(ALchorusStateFactory *factory)
{
ALchorusState *state;
(void)factory;
state = malloc(sizeof(*state));
if(!state) return NULL;
+2 -1
View File
@@ -93,10 +93,11 @@ static void ALdedicatedState_Delete(ALdedicatedState *state)
DEFINE_ALEFFECTSTATE_VTABLE(ALdedicatedState);
ALeffectState *ALdedicatedStateFactory_create(void)
ALeffectState *ALdedicatedStateFactory_create(ALdedicatedStateFactory *factory)
{
ALdedicatedState *state;
ALsizei s;
(void)factory;
state = malloc(sizeof(*state));
if(!state) return NULL;
+2 -1
View File
@@ -242,9 +242,10 @@ static void ALdistortionState_Delete(ALdistortionState *state)
DEFINE_ALEFFECTSTATE_VTABLE(ALdistortionState);
static ALeffectState *ALdistortionStateFactory_create(void)
static ALeffectState *ALdistortionStateFactory_create(ALdistortionStateFactory *factory)
{
ALdistortionState *state;
(void)factory;
state = malloc(sizeof(*state));
if(!state) return NULL;
+2 -1
View File
@@ -183,9 +183,10 @@ static void ALechoState_Delete(ALechoState *state)
DEFINE_ALEFFECTSTATE_VTABLE(ALechoState);
ALeffectState *ALechoStateFactory_create(void)
ALeffectState *ALechoStateFactory_create(ALechoStateFactory *factory)
{
ALechoState *state;
(void)factory;
state = malloc(sizeof(*state));
if(!state) return NULL;
+2 -1
View File
@@ -284,10 +284,11 @@ static void ALequalizerState_Delete(ALequalizerState *state)
DEFINE_ALEFFECTSTATE_VTABLE(ALequalizerState);
ALeffectState *ALequalizerStateFactory_create(void)
ALeffectState *ALequalizerStateFactory_create(ALequalizerStateFactory *factory)
{
ALequalizerState *state;
int it;
(void)factory;
state = malloc(sizeof(*state));
if(!state) return NULL;
+2 -1
View File
@@ -251,9 +251,10 @@ static void ALflangerState_Delete(ALflangerState *state)
DEFINE_ALEFFECTSTATE_VTABLE(ALflangerState);
ALeffectState *ALflangerStateFactory_create(void)
ALeffectState *ALflangerStateFactory_create(ALflangerStateFactory *factory)
{
ALflangerState *state;
(void)factory;
state = malloc(sizeof(*state));
if(!state) return NULL;
+2 -1
View File
@@ -205,9 +205,10 @@ static void ALmodulatorState_Delete(ALmodulatorState *state)
DEFINE_ALEFFECTSTATE_VTABLE(ALmodulatorState);
static ALeffectState *ALmodulatorStateFactory_create(void)
static ALeffectState *ALmodulatorStateFactory_create(ALmodulatorStateFactory *factory)
{
ALmodulatorState *state;
(void)factory;
state = malloc(sizeof(*state));
if(!state) return NULL;
+2 -1
View File
@@ -71,9 +71,10 @@ DEFINE_ALEFFECTSTATE_VTABLE(ALnullState);
/* Creates ALeffectState objects of the appropriate type. */
ALeffectState *ALnullStateFactory_create(void)
ALeffectState *ALnullStateFactory_create(ALnullStateFactory *factory)
{
ALnullState *state;
(void)factory;
state = calloc(1, sizeof(*state));
if(!state) return NULL;
+2 -1
View File
@@ -1182,10 +1182,11 @@ static void ALreverbState_Delete(ALreverbState *state)
DEFINE_ALEFFECTSTATE_VTABLE(ALreverbState);
static ALeffectState *ALreverbStateFactory_create(void)
static ALeffectState *ALreverbStateFactory_create(ALreverbStateFactory *factory)
{
ALreverbState *state;
ALuint index;
(void)factory;
state = malloc(sizeof(ALreverbState));
if(!state) return NULL;
+3 -5
View File
@@ -48,18 +48,16 @@ static const struct ALeffectStateVtable T##_ALeffectState_vtable = { \
struct ALeffectStateFactoryVtable {
ALeffectState *(*const create)(void);
ALeffectState *(*const create)(ALeffectStateFactory *factory);
};
struct ALeffectStateFactory {
const struct ALeffectStateFactoryVtable *vtbl;
};
#define ALeffectStateFactory_create(p) ((p)->vtbl->create())
#define DEFINE_ALEFFECTSTATEFACTORY_VTABLE(T) \
static ALeffectState* T##_ALeffectStateFactory_create(void) \
{ return T##_create(); } \
static ALeffectState* T##_ALeffectStateFactory_create(ALeffectStateFactory *factory) \
{ return T##_create(STATIC_UPCAST(T, ALeffectStateFactory, factory)); } \
\
static const struct ALeffectStateFactoryVtable T##_ALeffectStateFactory_vtable = { \
T##_ALeffectStateFactory_create, \
+2 -2
View File
@@ -486,7 +486,7 @@ ALenum InitializeEffect(ALCdevice *Device, ALeffectslot *EffectSlot, ALeffect *e
ERR("Failed to find factory for effect type 0x%04x\n", newtype);
return AL_INVALID_ENUM;
}
State = ALeffectStateFactory_create(factory);
State = VCALL_NOARGS(factory,create);
if(!State)
return AL_OUT_OF_MEMORY;
@@ -548,7 +548,7 @@ ALenum InitEffectSlot(ALeffectslot *slot)
slot->EffectType = AL_EFFECT_NULL;
factory = getFactoryByType(AL_EFFECT_NULL);
if(!(slot->EffectState=ALeffectStateFactory_create(factory)))
if(!(slot->EffectState=VCALL_NOARGS(factory,create)))
return AL_OUT_OF_MEMORY;
slot->Gain = 1.0;