summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/cpu/ccpu/ccpu.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/cpu/ccpu/ccpu.h')
-rw-r--r--src/devices/cpu/ccpu/ccpu.h22
1 files changed, 12 insertions, 10 deletions
diff --git a/src/devices/cpu/ccpu/ccpu.h b/src/devices/cpu/ccpu/ccpu.h
index fea9eccbd4e..c42687aaa0c 100644
--- a/src/devices/cpu/ccpu/ccpu.h
+++ b/src/devices/cpu/ccpu/ccpu.h
@@ -20,15 +20,6 @@
REGISTER ENUMERATION
***************************************************************************/
-
-
-#define MCFG_CCPU_EXTERNAL_FUNC(_devcb) \
- downcast<ccpu_cpu_device &>(*device).set_external_func(DEVCB_##_devcb);
-
-#define MCFG_CCPU_VECTOR_FUNC(d) \
- downcast<ccpu_cpu_device &>(*device).set_vector_func(d);
-
-
class ccpu_cpu_device : public cpu_device
{
public:
@@ -54,8 +45,19 @@ public:
ccpu_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// configuration helpers
- template <class Object> devcb_base &set_external_func(Object &&cb) { return m_external_input.set_callback(std::forward<Object>(cb)); }
+ auto external_func() { return m_external_input.bind(); }
+
template <typename Object> void set_vector_func(Object &&cb) { m_vector_callback = std::forward<Object>(cb); }
+ void set_vector_func(vector_delegate callback) { m_vector_callback = callback; }
+ template <class FunctionClass> void set_vector_func(const char *devname,
+ void (FunctionClass::*callback)(int16_t, int16_t, int16_t, int16_t, uint8_t), const char *name)
+ {
+ set_vector_func(vector_delegate(callback, name, devname, static_cast<FunctionClass *>(nullptr)));
+ }
+ template <class FunctionClass> void set_vector_func(void (FunctionClass::*callback)(int16_t, int16_t, int16_t, int16_t, uint8_t), const char *name)
+ {
+ set_vector_func(vector_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr)));
+ }
DECLARE_READ8_MEMBER( read_jmi );
void wdt_timer_trigger();