From 9f0d29158f1f8439062b813659f58a7e7e0ddfa6 Mon Sep 17 00:00:00 2001 From: npwoods Date: Tue, 13 Aug 2019 10:58:04 -0400 Subject: [PATCH] Ensuring that devices emitted by -listxml are sorted This is primarily to make the output be deterministic. --- src/frontend/mame/info.cpp | 10 ++++++++++ src/frontend/mame/info.h | 8 +++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/frontend/mame/info.cpp b/src/frontend/mame/info.cpp index 18ee054769a..af16254a99a 100644 --- a/src/frontend/mame/info.cpp +++ b/src/frontend/mame/info.cpp @@ -1951,3 +1951,13 @@ const char *info_xml_creator::get_merge_name(driver_enumerator &drivlist, const return nullptr; } + + +//------------------------------------------------- +// device_type_compare::operator() +//------------------------------------------------- + +bool info_xml_creator::device_type_compare::operator()(const std::add_pointer_t &lhs, const std::add_pointer_t &rhs) const +{ + return strcmp(lhs->shortname(), rhs->shortname()) < 0; +} diff --git a/src/frontend/mame/info.h b/src/frontend/mame/info.h index 9fc50a6af98..610e576e7f3 100644 --- a/src/frontend/mame/info.h +++ b/src/frontend/mame/info.h @@ -39,7 +39,13 @@ public: void output(std::ostream &out, const std::function &filter = { }, bool include_devices = true); private: - typedef std::unordered_set > device_type_set; + class device_type_compare + { + public: + bool operator()(const std::add_pointer_t &lhs, const std::add_pointer_t &rhs) const; + }; + + typedef std::set, device_type_compare> device_type_set; // internal helper void output_header(std::ostream &out);