diff options
Diffstat (limited to 'src/devices/sound/samples.h')
-rw-r--r-- | src/devices/sound/samples.h | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/devices/sound/samples.h b/src/devices/sound/samples.h index be5684bc37c..f3b6033021f 100644 --- a/src/devices/sound/samples.h +++ b/src/devices/sound/samples.h @@ -56,7 +56,18 @@ public: // configuration helpers void set_channels(uint8_t channels) { m_channels = channels; } void set_samples_names(const char *const *names) { m_names = names; } + + // start callback helpers template <typename Object> void set_samples_start_callback(Object &&cb) { m_samples_start_cb = std::forward<Object>(cb); } + void set_samples_start_callback(start_cb_delegate callback) { m_samples_start_cb = callback; } + template <class FunctionClass> void set_samples_start_callback(const char *devname, void (FunctionClass::*callback)(), const char *name) + { + set_samples_start_callback(start_cb_delegate(callback, name, devname, static_cast<FunctionClass *>(nullptr))); + } + template <class FunctionClass> void set_samples_start_callback(void (FunctionClass::*callback)(), const char *name) + { + set_samples_start_callback(start_cb_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr))); + } // getters bool playing(uint8_t channel) const; |