diff options
Diffstat (limited to 'src/emu/softlist_dev.h')
-rw-r--r-- | src/emu/softlist_dev.h | 44 |
1 files changed, 22 insertions, 22 deletions
diff --git a/src/emu/softlist_dev.h b/src/emu/softlist_dev.h index 4370ec8a20d..41c92b4f3c0 100644 --- a/src/emu/softlist_dev.h +++ b/src/emu/softlist_dev.h @@ -25,12 +25,6 @@ #define SOFTWARE_SUPPORTED_PARTIAL 1 #define SOFTWARE_SUPPORTED_NO 2 -enum softlist_type -{ - SOFTWARE_LIST_ORIGINAL_SYSTEM, - SOFTWARE_LIST_COMPATIBLE_SYSTEM -}; - enum software_compatibility { SOFTWARE_IS_COMPATIBLE, @@ -49,7 +43,7 @@ enum software_compatibility class software_list_loader { public: - virtual bool load_software(device_image_interface &image, software_list_device &swlist, const char *swname, const rom_entry *start_entry) const = 0; + virtual std::error_condition load_software(device_image_interface &image, software_list_device &swlist, std::string_view swname, const rom_entry *start_entry) const = 0; }; @@ -58,7 +52,7 @@ public: class false_software_list_loader : public software_list_loader { public: - virtual bool load_software(device_image_interface &image, software_list_device &swlist, const char *swname, const rom_entry *start_entry) const override; + virtual std::error_condition load_software(device_image_interface &image, software_list_device &swlist, std::string_view swname, const rom_entry *start_entry) const override; static const software_list_loader &instance() { return s_instance; } private: @@ -71,7 +65,7 @@ private: class rom_software_list_loader : public software_list_loader { public: - virtual bool load_software(device_image_interface &image, software_list_device &swlist, const char *swname, const rom_entry *start_entry) const override; + virtual std::error_condition load_software(device_image_interface &image, software_list_device &swlist, std::string_view swname, const rom_entry *start_entry) const override; static const software_list_loader &instance() { return s_instance; } private: @@ -84,7 +78,7 @@ private: class image_software_list_loader : public software_list_loader { public: - virtual bool load_software(device_image_interface &image, software_list_device &swlist, const char *swname, const rom_entry *start_entry) const override; + virtual std::error_condition load_software(device_image_interface &image, software_list_device &swlist, std::string_view swname, const rom_entry *start_entry) const override; static const software_list_loader &instance() { return s_instance; } private: @@ -97,23 +91,28 @@ private: // device representing a software list class software_list_device : public device_t { - friend class softlist_parser; - public: + enum class softlist_type + { + ORIGINAL_SYSTEM, + COMPATIBLE_SYSTEM + }; + // construction/destruction software_list_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock = 0); // inline configuration helpers software_list_device &set_type(const char *list, softlist_type list_type) { m_list_name.assign(list); m_list_type = list_type; return *this; } - software_list_device &set_original(const char *list) { return set_type(list, SOFTWARE_LIST_ORIGINAL_SYSTEM); } - software_list_device &set_compatible(const char *list) { return set_type(list, SOFTWARE_LIST_COMPATIBLE_SYSTEM); } + software_list_device &set_original(const char *list) { return set_type(list, softlist_type::ORIGINAL_SYSTEM); } + software_list_device &set_compatible(const char *list) { return set_type(list, softlist_type::COMPATIBLE_SYSTEM); } software_list_device &set_filter(const char *filter) { m_filter = filter; return *this; } // getters const std::string &list_name() const { return m_list_name; } softlist_type list_type() const { return m_list_type; } + bool is_original() const { return softlist_type::ORIGINAL_SYSTEM == m_list_type; } + bool is_compatible() const { return softlist_type::COMPATIBLE_SYSTEM == m_list_type; } const char *filter() const { return m_filter; } - const char *filename() { return m_file.filename(); } // getters that may trigger a parse const std::string &description() { if (!m_parsed) parse(); return m_description; } @@ -122,20 +121,20 @@ public: const std::list<software_info> &get_info() { if (!m_parsed) parse(); return m_infolist; } // operations - const software_info *find(const std::string &look_for); - void find_approx_matches(const std::string &name, int matches, const software_info **list, const char *interface); + const software_info *find(std::string_view look_for); + void find_approx_matches(std::string_view name, int matches, const software_info **list, const char *interface); void release(); software_compatibility is_compatible(const software_part &part) const; // static helpers - static software_list_device *find_by_name(const machine_config &mconfig, const std::string &name); - static void display_matches(const machine_config &config, const char *interface, const std::string &name); + static software_list_device *find_by_name(const machine_config &mconfig, std::string_view name); + static void display_matches(const machine_config &config, const char *interface, std::string_view name); static device_image_interface *find_mountable_image(const machine_config &mconfig, const software_part &part, std::function<bool (const device_image_interface &)> filter); static device_image_interface *find_mountable_image(const machine_config &mconfig, const software_part &part); protected: // device-level overrides - virtual void device_start() override; + virtual void device_start() override ATTR_COLD; virtual void device_validity_check(validity_checker &valid) const override ATTR_COLD; private: @@ -150,7 +149,8 @@ private: // internal state bool m_parsed; - emu_file m_file; + std::string m_filename; + std::string m_shortname; std::string m_description; std::string m_errors; std::list<software_info> m_infolist; @@ -161,7 +161,7 @@ private: DECLARE_DEVICE_TYPE(SOFTWARE_LIST, software_list_device) // device type iterator -typedef device_type_iterator<software_list_device> software_list_device_iterator; +typedef device_type_enumerator<software_list_device> software_list_device_enumerator; #endif // MAME_EMU_SOFTLIST_DEV_H |