diff options
Diffstat (limited to 'src/emu/output.cpp')
-rw-r--r-- | src/emu/output.cpp | 53 |
1 files changed, 27 insertions, 26 deletions
diff --git a/src/emu/output.cpp b/src/emu/output.cpp index d374ef1e9a8..95b92cfc5d0 100644 --- a/src/emu/output.cpp +++ b/src/emu/output.cpp @@ -11,8 +11,6 @@ #include "emu.h" #include "output.h" -#include "coreutil.h" - #include <algorithm> @@ -59,10 +57,10 @@ void output_manager::output_item::notify(s32 value) // OUTPUT ITEM PROXY //************************************************************************** -void output_manager::item_proxy::resolve(device_t &device, std::string const &name) +void output_manager::item_proxy::resolve(device_t &device, std::string_view name) { assert(!m_item); - m_item = &device.machine().output().find_or_create_item(name.c_str(), 0); + m_item = &device.machine().output().find_or_create_item(name, 0); } @@ -118,7 +116,7 @@ void output_manager::register_save() find_item - find an item based on a string -------------------------------------------------*/ -output_manager::output_item *output_manager::find_item(char const *string) +output_manager::output_item *output_manager::find_item(std::string_view string) { auto item = m_itemtable.find(std::string(string)); if (item != m_itemtable.end()) @@ -132,7 +130,7 @@ output_manager::output_item *output_manager::find_item(char const *string) create_new_item - create a new item -------------------------------------------------*/ -output_manager::output_item &output_manager::create_new_item(char const *outname, s32 value) +output_manager::output_item &output_manager::create_new_item(std::string_view outname, s32 value) { if (OUTPUT_VERBOSE) osd_printf_verbose("Creating output %s = %d%s\n", outname, value, m_save_data ? " (will not be saved)" : ""); @@ -140,12 +138,12 @@ output_manager::output_item &output_manager::create_new_item(char const *outname auto const ins(m_itemtable.emplace( std::piecewise_construct, std::forward_as_tuple(outname), - std::forward_as_tuple(*this, outname, m_uniqueid++, value))); + std::forward_as_tuple(*this, std::string(outname), m_uniqueid++, value))); assert(ins.second); return ins.first->second; } -output_manager::output_item &output_manager::find_or_create_item(char const *outname, s32 value) +output_manager::output_item &output_manager::find_or_create_item(std::string_view outname, s32 value) { output_item *const item = find_item(outname); return item ? *item : create_new_item(outname, value); @@ -193,7 +191,7 @@ void output_manager::postload() output_set_value - set the value of an output -------------------------------------------------*/ -void output_manager::set_value(char const *outname, s32 value) +void output_manager::set_value(std::string_view outname, s32 value) { output_item *const item = find_item(outname); @@ -210,7 +208,7 @@ void output_manager::set_value(char const *outname, s32 value) output -------------------------------------------------*/ -s32 output_manager::get_value(char const *outname) +s32 output_manager::get_value(std::string_view outname) { output_item const *const item = find_item(outname); @@ -219,24 +217,27 @@ s32 output_manager::get_value(char const *outname) } -/*------------------------------------------------- - output_set_notifier - sets a notifier callback - for a particular output, or for all outputs - if nullptr is specified --------------------------------------------------*/ +//------------------------------------------------- +// set_notifier - sets a notifier callback for a +// particular output +//------------------------------------------------- -void output_manager::set_notifier(char const *outname, notifier_func callback, void *param) +void output_manager::set_notifier(std::string_view outname, notifier_func callback, void *param) { // if an item is specified, find/create it - if (outname) - { - output_item *const item = find_item(outname); - (item ? *item : create_new_item(outname, 0)).set_notifier(callback, param); - } - else - { - m_global_notifylist.emplace_back(callback, param); - } + output_item *const item = find_item(outname); + (item ? *item : create_new_item(outname, 0)).set_notifier(callback, param); +} + + +//------------------------------------------------- +// set_global_notifier - sets a notifier callback +// for all outputs +//------------------------------------------------- + +void output_manager::set_global_notifier(notifier_func callback, void *param) +{ + m_global_notifylist.emplace_back(callback, param); } @@ -245,7 +246,7 @@ void output_manager::set_notifier(char const *outname, notifier_func callback, v a given name -------------------------------------------------*/ -u32 output_manager::name_to_id(char const *outname) +u32 output_manager::name_to_id(std::string_view outname) { // if no item, ID is 0 output_item const *const item = find_item(outname); |