From c07474dfb380aa4c98ad2c64e4d0264a64e38d6e Mon Sep 17 00:00:00 2001 From: Olivier Galibert Date: Sun, 28 May 2023 23:40:30 +0200 Subject: h8: Use finders --- src/devices/cpu/h8/h8_timer8.h | 39 ++++++++++++++++++++++++++------------- 1 file changed, 26 insertions(+), 13 deletions(-) (limited to 'src/devices/cpu/h8/h8_timer8.h') diff --git a/src/devices/cpu/h8/h8_timer8.h b/src/devices/cpu/h8/h8_timer8.h index 3c269f479fe..df0a1bbae1d 100644 --- a/src/devices/cpu/h8/h8_timer8.h +++ b/src/devices/cpu/h8/h8_timer8.h @@ -30,15 +30,23 @@ public: }; h8_timer8_channel_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - h8_timer8_channel_device(const machine_config &mconfig, const char *tag, device_t *owner, const char *intc, int irq_ca, int irq_cb, int irq_v, + template h8_timer8_channel_device(const machine_config &mconfig, const char *tag, device_t *owner, T &&cpu, U &&intc, int irq_ca, int irq_cb, int irq_v, int div1, int div2, int div3, int div4, int div5, int div6) : h8_timer8_channel_device(mconfig, tag, owner, 0) { - set_info(intc, irq_ca, irq_cb, irq_v, div1, div2, div3, div4, div5, div6); + m_cpu.set_tag(std::forward(cpu)); + m_intc.set_tag(std::forward(intc)); + m_irq_ca = irq_ca; + m_irq_cb = irq_cb; + m_irq_v = irq_v; + m_div_tab[0] = div1; + m_div_tab[1] = div2; + m_div_tab[2] = div3; + m_div_tab[3] = div4; + m_div_tab[4] = div5; + m_div_tab[5] = div6; } - void set_info(const char *intc, int irq_ca, int irq_cb, int irq_v, int div1, int div2, int div3, int div4, int div5, int div6); - uint8_t tcr_r(); void tcr_w(uint8_t data); uint8_t tcsr_r(); @@ -77,9 +85,9 @@ protected: }; required_device m_cpu; - h8_timer8_channel_device *m_chained_timer; - h8_intc_device *m_intc; - const char *m_chain_tag, *m_intc_tag; + required_device m_intc; + optional_device m_chained_timer; + int m_irq_ca, m_irq_cb, m_irq_v, m_chain_type; int m_div_tab[6]; uint8_t m_tcor[2]; @@ -103,15 +111,20 @@ protected: class h8h_timer8_channel_device : public h8_timer8_channel_device { public: h8h_timer8_channel_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - h8h_timer8_channel_device(const machine_config &mconfig, const char *tag, device_t *owner, const char *intc, int irq_ca, int irq_cb, int irq_v, - const char *chain_tag, int chain_type, bool has_adte, bool has_ice) + template h8h_timer8_channel_device(const machine_config &mconfig, const char *tag, device_t *owner, T &&cpu, U &&intc, int irq_ca, int irq_cb, int irq_v, + V &&chain, int chain_type, bool has_adte, bool has_ice) : h8h_timer8_channel_device(mconfig, tag, owner, 0) { - set_info(intc, irq_ca, irq_cb, irq_v, chain_tag, chain_type, has_adte, has_ice); + m_cpu.set_tag(std::forward(cpu)); + m_intc.set_tag(std::forward(intc)); + m_irq_ca = irq_ca; + m_irq_cb = irq_cb; + m_irq_v = irq_v; + m_chained_timer.set_tag(std::forward(chain)); + m_chain_type = chain_type; + m_has_adte = has_adte; + m_has_ice = has_ice; } - virtual ~h8h_timer8_channel_device(); - - void set_info(const char *intc, int irq_ca, int irq_cb, int irq_v, const char *chain_tag, int chain_type, bool has_adte, bool has_ice); }; DECLARE_DEVICE_TYPE(H8_TIMER8_CHANNEL, h8_timer8_channel_device) -- cgit v1.2.3-70-g09d2