Added a set of macros to minimize the amount of copy/pasting necessary to convert a device to the new style. [Harmony]

This commit is contained in:
Ryan Holtz 2010-08-26 01:56:46 +00:00
parent a862b86555
commit e2f6e9c473
2 changed files with 44 additions and 0 deletions

1
.gitattributes vendored
View File

@ -708,6 +708,7 @@ src/emu/machine/cdp1852.c svneol=native#text/plain
src/emu/machine/cdp1852.h svneol=native#text/plain
src/emu/machine/cr589.c svneol=native#text/plain
src/emu/machine/cr589.h svneol=native#text/plain
src/emu/machine/devhelpr.h svneol=native#text/plain
src/emu/machine/ds1302.c svneol=native#text/plain
src/emu/machine/ds1302.h svneol=native#text/plain
src/emu/machine/ds2401.c svneol=native#text/plain

View File

@ -0,0 +1,43 @@
/**********************************************************************
Generic modern device trampolines and other helpers, to minimize
the amount of redundant copy/pasting between modernized devices.
**********************************************************************/
#ifndef __DEVHELPR_H__
#define __DEVHELPR_H__
#define READ8_DEVICE_HANDLER_TRAMPOLINE(devname, funcname) \
READ8_DEVICE_HANDLER( funcname ) \
{ return downcast<devname##_device*>(device)->funcname(offset); } \
UINT8 devname##_device::funcname(UINT32 offset)
#define WRITE8_DEVICE_HANDLER_TRAMPOLINE(devname, funcname) \
WRITE8_DEVICE_HANDLER( funcname ) \
{ downcast<devname##_device*>(device)->funcname(offset, data); } \
void devname##_device::funcname(UINT32 offset, UINT8 data)
#define READ_LINE_DEVICE_HANDLER_TRAMPOLINE(devname, funcname) \
READ_LINE_DEVICE_HANDLER( funcname ) \
{ return downcast<devname##_device *>(device)->funcname(); } \
void devname##_device::funcname()
#define WRITE_LINE_DEVICE_HANDLER_TRAMPOLINE(devname, funcname) \
WRITE_LINE_DEVICE_HANDLER( funcname ) \
{ return downcast<devname##_device *>(device)->funcname(state); } \
void devname##_device::funcname(UINT8 state)
#define GENERIC_DEVICE_CONFIG_SETUP(devname, devtag) \
devname##_device_config::devname##_device_config(const machine_config &mconfig, const char *tag, const device_config *owner, UINT32 clock) \
: device_config(mconfig, static_alloc_device_config, devtag, tag, owner, clock) \
{ } \
\
device_config *devname##_device_config::static_alloc_device_config(const machine_config &mconfig, const char *tag, const device_config *owner, UINT32 clock) \
{ return global_alloc(devname##_device_config(mconfig, tag, owner, clock)); } \
\
device_t *devname##_device_config::alloc_device(running_machine &machine) const \
{ return auto_alloc(&machine, devname##_device(machine, *this)); }
#endif // __DEVHELPR_H__