From 17e194de8f6ba0deb4d75ff683691ad605ff66df Mon Sep 17 00:00:00 2001 From: npwoods Date: Sun, 4 Aug 2019 21:20:59 -0400 Subject: Follow up to previous listxml_refactor PR (nw) Specifically, this simplifies that change by collapsing the newly introduced enum info_xml_creator::devices_disposition into a bool, more resembling what was there before. It occurred to me that having a tristate was unnecessary, because the need for filtering could be expressed by a null std::function for the filter --- src/frontend/mame/info.cpp | 19 +++++++------------ src/frontend/mame/info.h | 9 +-------- src/frontend/mame/ui/miscmenu.cpp | 6 ++---- 3 files changed, 10 insertions(+), 24 deletions(-) diff --git a/src/frontend/mame/info.cpp b/src/frontend/mame/info.cpp index 977ee7cbf4b..34eec500c60 100644 --- a/src/frontend/mame/info.cpp +++ b/src/frontend/mame/info.cpp @@ -222,11 +222,7 @@ void info_xml_creator::output(FILE *out, const std::vector &pattern if (patterns.empty()) { // no patterns specified - show everything - auto filter = [](const char *, bool &) -> bool - { - return true; - }; - output(out, filter, devices_disposition::ALL); + output(out); } else { @@ -262,7 +258,7 @@ void info_xml_creator::output(FILE *out, const std::vector &pattern } return result; }; - output(out, filter, devices_disposition::FILTERED); + output(out, filter); // throw an error if there were unmatched patterns auto iter = std::find(matched.begin(), matched.end(), false); @@ -280,11 +276,10 @@ void info_xml_creator::output(FILE *out, const std::vector &pattern // known (and filtered) machines //------------------------------------------------- -void info_xml_creator::output(FILE *out, const std::function &filter, devices_disposition devdisp) +void info_xml_creator::output(FILE *out, const std::function &filter, bool include_devices) { // sanity checks assert(out); - assert(filter); // set up output m_output = out; @@ -297,7 +292,7 @@ void info_xml_creator::output(FILE *out, const std::function devfilter; - if (devdisp == devices_disposition::FILTERED) + if (include_devices && filter) devfilter = std::make_unique(); // try enumerating drivers and outputting them @@ -309,7 +304,7 @@ void info_xml_creator::output(FILE *out, const std::functioninsert(&type); if (filter_done) @@ -337,7 +332,7 @@ void info_xml_creator::output(FILE *out, const std::functionempty())) + if (include_devices && (!devfilter || !devfilter->empty())) { if (!header_outputted) { diff --git a/src/frontend/mame/info.h b/src/frontend/mame/info.h index 6fe5fd1d1fb..a4c2f3884ff 100644 --- a/src/frontend/mame/info.h +++ b/src/frontend/mame/info.h @@ -31,19 +31,12 @@ class driver_enumerator; class info_xml_creator { public: - enum class devices_disposition - { - NONE, - FILTERED, - ALL - }; - // construction/destruction info_xml_creator(emu_options const &options, bool dtd = true); // output void output(FILE *out, const std::vector &patterns); - void output(FILE *out, const std::function &filter, devices_disposition devdisp); + void output(FILE *out, const std::function &filter = { }, bool include_devices = true); private: typedef std::unordered_set > device_type_set; diff --git a/src/frontend/mame/ui/miscmenu.cpp b/src/frontend/mame/ui/miscmenu.cpp index 8dea46aab79..f79125ee7e1 100644 --- a/src/frontend/mame/ui/miscmenu.cpp +++ b/src/frontend/mame/ui/miscmenu.cpp @@ -602,13 +602,11 @@ void menu_export::handle() }; // do we want to show devices? - info_xml_creator::devices_disposition devdisp = (uintptr_t(menu_event->itemref) == 1) - ? info_xml_creator::devices_disposition::FILTERED - : info_xml_creator::devices_disposition::NONE; + bool include_devices = uintptr_t(menu_event->itemref) == 1; // and do the dirty work info_xml_creator creator(machine().options()); - creator.output(pfile, filter, devdisp); + creator.output(pfile, filter, include_devices); fclose(pfile); machine().popmessage(_("%s.xml saved under ui folder."), filename.c_str()); } -- cgit v1.2.3