diff options
Diffstat (limited to 'src/devices/video/crtc_ega.h')
-rw-r--r-- | src/devices/video/crtc_ega.h | 38 |
1 files changed, 17 insertions, 21 deletions
diff --git a/src/devices/video/crtc_ega.h b/src/devices/video/crtc_ega.h index 7d442d8dd7f..c3eb7dcc319 100644 --- a/src/devices/video/crtc_ega.h +++ b/src/devices/video/crtc_ega.h @@ -21,28 +21,28 @@ #define MCFG_CRTC_EGA_SET_SCREEN MCFG_VIDEO_SET_SCREEN #define MCFG_CRTC_EGA_BEGIN_UPDATE_CB(_class, _method) \ - crtc_ega_device::set_begin_update_callback(*device, crtc_ega_device::begin_update_delegate(&_class::_method, #_class "::" #_method, this)); + downcast<crtc_ega_device &>(*device).set_begin_update_callback(crtc_ega_device::begin_update_delegate(&_class::_method, #_class "::" #_method, this)); #define MCFG_CRTC_EGA_ROW_UPDATE_CB(_class, _method) \ - crtc_ega_device::set_row_update_callback(*device, crtc_ega_device::row_update_delegate(&_class::_method, #_class "::" #_method, this)); + downcast<crtc_ega_device &>(*device).set_row_update_callback(crtc_ega_device::row_update_delegate(&_class::_method, #_class "::" #_method, this)); #define MCFG_CRTC_EGA_END_UPDATE_CB(_class, _method) \ - crtc_ega_device::set_end_update_callback(*device, crtc_ega_device::end_update_delegate(&_class::_method, #_class "::" #_method, this)); + downcast<crtc_ega_device &>(*device).set_end_update_callback(crtc_ega_device::end_update_delegate(&_class::_method, #_class "::" #_method, this)); #define MCFG_CRTC_EGA_HPIXELS_PER_COLUMN(_pix) \ - crtc_ega_device::set_hpixels_per_column(*device, _pix); + downcast<crtc_ega_device &>(*device).config_set_hpixels_per_column(_pix); #define MCFG_CRTC_EGA_RES_OUT_DE_CB(_devcb) \ - devcb = &crtc_ega_device::set_res_out_de_callback(*device, DEVCB_##_devcb); + devcb = &downcast<crtc_ega_device &>(*device).set_res_out_de_callback(DEVCB_##_devcb); #define MCFG_CRTC_EGA_RES_OUT_HSYNC_CB(_devcb) \ - devcb = &crtc_ega_device::set_res_out_hsync_callback(*device, DEVCB_##_devcb); + devcb = &downcast<crtc_ega_device &>(*device).set_res_out_hsync_callback(DEVCB_##_devcb); #define MCFG_CRTC_EGA_RES_OUT_VSYNC_CB(_devcb) \ - devcb = &crtc_ega_device::set_res_out_vsync_callback(*device, DEVCB_##_devcb); + devcb = &downcast<crtc_ega_device &>(*device).set_res_out_vsync_callback(DEVCB_##_devcb); #define MCFG_CRTC_EGA_RES_OUT_VBLANK_CB(_devcb) \ - devcb = &crtc_ega_device::set_res_out_vblank_callback(*device, DEVCB_##_devcb); + devcb = &downcast<crtc_ega_device &>(*device).set_res_out_vblank_callback(DEVCB_##_devcb); class crtc_ega_device : public device_t, @@ -57,19 +57,15 @@ public: crtc_ega_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class Object> static devcb_base &set_res_out_de_callback(device_t &device, Object &&cb) - { return downcast<crtc_ega_device &>(device).m_res_out_de_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_res_out_hsync_callback(device_t &device, Object &&cb) - { return downcast<crtc_ega_device &>(device).m_res_out_hsync_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_res_out_vsync_callback(device_t &device, Object &&cb) - { return downcast<crtc_ega_device &>(device).m_res_out_vsync_cb.set_callback(std::forward<Object>(cb)); } - template <class Object> static devcb_base &set_res_out_vblank_callback(device_t &device, Object &&cb) - { return downcast<crtc_ega_device &>(device).m_res_out_vblank_cb.set_callback(std::forward<Object>(cb)); } - - static void set_begin_update_callback(device_t &device, begin_update_delegate &&cb) { downcast<crtc_ega_device &>(device).m_begin_update_cb = std::move(cb); } - static void set_row_update_callback(device_t &device, row_update_delegate &&cb) { downcast<crtc_ega_device &>(device).m_row_update_cb = std::move(cb); } - static void set_end_update_callback(device_t &device, end_update_delegate &&cb) { downcast<crtc_ega_device &>(device).m_end_update_cb = std::move(cb); } - static void set_hpixels_per_column(device_t &device, int hpixels_per_column) { downcast<crtc_ega_device &>(device).m_hpixels_per_column = hpixels_per_column; } + template <class Object> devcb_base &set_res_out_de_callback(Object &&cb) { return m_res_out_de_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_res_out_hsync_callback(Object &&cb) { return m_res_out_hsync_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_res_out_vsync_callback(Object &&cb) { return m_res_out_vsync_cb.set_callback(std::forward<Object>(cb)); } + template <class Object> devcb_base &set_res_out_vblank_callback(Object &&cb) { return m_res_out_vblank_cb.set_callback(std::forward<Object>(cb)); } + + template <typename Object> void set_begin_update_callback(Object &&cb) { m_begin_update_cb = std::forward<Object>(cb); } + template <typename Object> void set_row_update_callback(Object &&cb) { m_row_update_cb = std::forward<Object>(cb); } + template <typename Object> void set_end_update_callback(Object &&cb) { m_end_update_cb = std::forward<Object>(cb); } + void config_set_hpixels_per_column(int hpixels_per_column) { m_hpixels_per_column = hpixels_per_column; } /* select one of the registers for reading or writing */ DECLARE_WRITE8_MEMBER( address_w ); |