summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/softlist_dev.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/emu/softlist_dev.h')
-rw-r--r--src/emu/softlist_dev.h44
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