Add a macro to simplify allocating and constructing an object

This commit is contained in:
Chris Robinson 2015-05-18 16:39:44 -07:00
parent 9479ea656b
commit 9f49ac0fda
12 changed files with 29 additions and 117 deletions

View File

@ -1352,25 +1352,15 @@ static ALCbackend* ALCalsaBackendFactory_createBackend(ALCalsaBackendFactory* UN
if(type == ALCbackend_Playback)
{
ALCplaybackAlsa *backend;
backend = ALCplaybackAlsa_New(sizeof(*backend));
NEW_OBJ(backend, ALCplaybackAlsa)(device);
if(!backend) return NULL;
memset(backend, 0, sizeof(*backend));
ALCplaybackAlsa_Construct(backend, device);
return STATIC_CAST(ALCbackend, backend);
}
if(type == ALCbackend_Capture)
{
ALCcaptureAlsa *backend;
backend = ALCcaptureAlsa_New(sizeof(*backend));
NEW_OBJ(backend, ALCcaptureAlsa)(device);
if(!backend) return NULL;
memset(backend, 0, sizeof(*backend));
ALCcaptureAlsa_Construct(backend, device);
return STATIC_CAST(ALCbackend, backend);
}

View File

@ -1039,26 +1039,16 @@ static ALCbackend* ALCdsoundBackendFactory_createBackend(ALCdsoundBackendFactory
if(type == ALCbackend_Playback)
{
ALCdsoundPlayback *backend;
backend = ALCdsoundPlayback_New(sizeof(*backend));
NEW_OBJ(backend, ALCdsoundPlayback)(device);
if(!backend) return NULL;
memset(backend, 0, sizeof(*backend));
ALCdsoundPlayback_Construct(backend, device);
return STATIC_CAST(ALCbackend, backend);
}
if(type == ALCbackend_Capture)
{
ALCdsoundCapture *backend;
backend = ALCdsoundCapture_New(sizeof(*backend));
NEW_OBJ(backend, ALCdsoundCapture)(device);
if(!backend) return NULL;
memset(backend, 0, sizeof(*backend));
ALCdsoundCapture_Construct(backend, device);
return STATIC_CAST(ALCbackend, backend);
}

View File

@ -592,13 +592,8 @@ static ALCbackend* ALCjackBackendFactory_createBackend(ALCjackBackendFactory* UN
if(type == ALCbackend_Playback)
{
ALCjackPlayback *backend;
backend = ALCjackPlayback_New(sizeof(*backend));
NEW_OBJ(backend, ALCjackPlayback)(device);
if(!backend) return NULL;
memset(backend, 0, sizeof(*backend));
ALCjackPlayback_Construct(backend, device);
return STATIC_CAST(ALCbackend, backend);
}

View File

@ -124,13 +124,8 @@ static ALCbackend* ALCloopbackFactory_createBackend(ALCloopbackFactory* UNUSED(s
if(type == ALCbackend_Loopback)
{
ALCloopback *backend;
backend = ALCloopback_New(sizeof(*backend));
NEW_OBJ(backend, ALCloopback)(device);
if(!backend) return NULL;
memset(backend, 0, sizeof(*backend));
ALCloopback_Construct(backend, device);
return STATIC_CAST(ALCbackend, backend);
}

View File

@ -1756,25 +1756,15 @@ static ALCbackend* ALCmmdevBackendFactory_createBackend(ALCmmdevBackendFactory*
if(type == ALCbackend_Playback)
{
ALCmmdevPlayback *backend;
backend = ALCmmdevPlayback_New(sizeof(*backend));
NEW_OBJ(backend, ALCmmdevPlayback)(device);
if(!backend) return NULL;
memset(backend, 0, sizeof(*backend));
ALCmmdevPlayback_Construct(backend, device);
return STATIC_CAST(ALCbackend, backend);
}
if(type == ALCbackend_Capture)
{
ALCmmdevCapture *backend;
backend = ALCmmdevCapture_New(sizeof(*backend));
NEW_OBJ(backend, ALCmmdevCapture)(device);
if(!backend) return NULL;
memset(backend, 0, sizeof(*backend));
ALCmmdevCapture_Construct(backend, device);
return STATIC_CAST(ALCbackend, backend);
}

View File

@ -214,13 +214,8 @@ static ALCbackend* ALCnullBackendFactory_createBackend(ALCnullBackendFactory* UN
if(type == ALCbackend_Playback)
{
ALCnullBackend *backend;
backend = ALCnullBackend_New(sizeof(*backend));
NEW_OBJ(backend, ALCnullBackend)(device);
if(!backend) return NULL;
memset(backend, 0, sizeof(*backend));
ALCnullBackend_Construct(backend, device);
return STATIC_CAST(ALCbackend, backend);
}

View File

@ -606,25 +606,15 @@ ALCbackend* ALCossBackendFactory_createBackend(ALCossBackendFactory* UNUSED(self
if(type == ALCbackend_Playback)
{
ALCplaybackOSS *backend;
backend = ALCplaybackOSS_New(sizeof(*backend));
NEW_OBJ(backend, ALCplaybackOSS)(device);
if(!backend) return NULL;
memset(backend, 0, sizeof(*backend));
ALCplaybackOSS_Construct(backend, device);
return STATIC_CAST(ALCbackend, backend);
}
if(type == ALCbackend_Capture)
{
ALCcaptureOSS *backend;
backend = ALCcaptureOSS_New(sizeof(*backend));
NEW_OBJ(backend, ALCcaptureOSS)(device);
if(!backend) return NULL;
memset(backend, 0, sizeof(*backend));
ALCcaptureOSS_Construct(backend, device);
return STATIC_CAST(ALCbackend, backend);
}

View File

@ -1689,25 +1689,15 @@ static ALCbackend* ALCpulseBackendFactory_createBackend(ALCpulseBackendFactory*
if(type == ALCbackend_Playback)
{
ALCpulsePlayback *backend;
backend = ALCpulsePlayback_New(sizeof(*backend));
NEW_OBJ(backend, ALCpulsePlayback)(device);
if(!backend) return NULL;
memset(backend, 0, sizeof(*backend));
ALCpulsePlayback_Construct(backend, device);
return STATIC_CAST(ALCbackend, backend);
}
if(type == ALCbackend_Capture)
{
ALCpulseCapture *backend;
backend = ALCpulseCapture_New(sizeof(*backend));
NEW_OBJ(backend, ALCpulseCapture)(device);
if(!backend) return NULL;
memset(backend, 0, sizeof(*backend));
ALCpulseCapture_Construct(backend, device);
return STATIC_CAST(ALCbackend, backend);
}

View File

@ -329,13 +329,8 @@ ALCbackend* ALCsolarisBackendFactory_createBackend(ALCsolarisBackendFactory* UNU
if(type == ALCbackend_Playback)
{
ALCsolarisBackend *backend;
backend = ALCsolarisBackend_New(sizeof(*backend));
NEW_OBJ(backend, ALCsolarisBackend)(device);
if(!backend) return NULL;
memset(backend, 0, sizeof(*backend));
ALCsolarisBackend_Construct(backend, device);
return STATIC_CAST(ALCbackend, backend);
}

View File

@ -433,30 +433,10 @@ static ALCbackend* ALCwaveBackendFactory_createBackend(ALCwaveBackendFactory* UN
if(type == ALCbackend_Playback)
{
ALCwaveBackend *backend;
backend = ALCwaveBackend_New(sizeof(*backend));
NEW_OBJ(backend, ALCwaveBackend)(device);
if(!backend) return NULL;
memset(backend, 0, sizeof(*backend));
ALCwaveBackend_Construct(backend, device);
return STATIC_CAST(ALCbackend, backend);
}
return NULL;
}
void alc_wave_probe(enum DevProbe type)
{
if(!ConfigValueExists("wave", "file"))
return;
switch(type)
{
case ALL_DEVICE_PROBE:
AppendAllDevicesList(waveDevice);
break;
case CAPTURE_DEVICE_PROBE:
break;
}
}

View File

@ -780,25 +780,15 @@ static ALCbackend* ALCwinmmBackendFactory_createBackend(ALCwinmmBackendFactory*
if(type == ALCbackend_Playback)
{
ALCwinmmPlayback *backend;
backend = ALCwinmmPlayback_New(sizeof(*backend));
NEW_OBJ(backend, ALCwinmmPlayback)(device);
if(!backend) return NULL;
memset(backend, 0, sizeof(*backend));
ALCwinmmPlayback_Construct(backend, device);
return STATIC_CAST(ALCbackend, backend);
}
if(type == ALCbackend_Capture)
{
ALCwinmmCapture *backend;
backend = ALCwinmmCapture_New(sizeof(*backend));
NEW_OBJ(backend, ALCwinmmCapture)(device);
if(!backend) return NULL;
memset(backend, 0, sizeof(*backend));
ALCwinmmCapture_Construct(backend, device);
return STATIC_CAST(ALCbackend, backend);
}

View File

@ -413,6 +413,18 @@ static void T##_Delete(void *ptr) { al_free(ptr); }
} while(0)
#define EXTRACT_NEW_ARGS(...) __VA_ARGS__); \
} \
} while(0)
#define NEW_OBJ(_ptr, T) do { \
_ptr = T##_New(sizeof(*_ptr)); \
if(_ptr) \
{ \
memset(_ptr, 0, sizeof(*_ptr)); \
T##_Construct(_ptr, EXTRACT_NEW_ARGS
#ifdef __cplusplus
extern "C" {
#endif