diff --git a/src/emu/diimage.cpp b/src/emu/diimage.cpp index 62f5b131818..e3314bcaaf5 100644 --- a/src/emu/diimage.cpp +++ b/src/emu/diimage.cpp @@ -850,7 +850,7 @@ bool device_image_interface::load_software(software_list_device &swlist, const c UINT32 crc = 0; bool has_crc = hash_collection(ROM_GETHASHDATA(romp)).crc(crc); - software_info *swinfo = swlist.find(swname); + const software_info *swinfo = swlist.find(swname); if (swinfo == nullptr) return false; @@ -1281,7 +1281,7 @@ void device_image_interface::software_name_split(const char *swlist_swname, std: } -software_part *device_image_interface::find_software_item(const char *path, bool restrict_to_interface) const +const software_part *device_image_interface::find_software_item(const char *path, bool restrict_to_interface) const { // split full software name into software list name and short software name std::string swlist_name, swinfo_name, swpart_name; @@ -1297,10 +1297,10 @@ software_part *device_image_interface::find_software_item(const char *path, bool { if (swlist_name.compare(swlistdev.list_name())==0 || !(swlist_name.length() > 0)) { - software_info *info = swlistdev.find(swinfo_name.c_str()); + const software_info *info = swlistdev.find(swinfo_name.c_str()); if (info != nullptr) { - software_part *part = info->find_part(swpart_name.c_str(), interface); + const software_part *part = info->find_part(swpart_name.c_str(), interface); if (part != nullptr) return part; } @@ -1312,10 +1312,10 @@ software_part *device_image_interface::find_software_item(const char *path, bool // gameboy:sml) which is not handled properly by software_name_split // since the function cannot distinguish between this and the case // path = swinfo_name:swpart_name - software_info *info = swlistdev.find(swpart_name.c_str()); + const software_info *info = swlistdev.find(swpart_name.c_str()); if (info != nullptr) { - software_part *part = info->find_part(nullptr, interface); + const software_part *part = info->find_part(nullptr, interface); if (part != nullptr) return part; } @@ -1340,7 +1340,7 @@ software_part *device_image_interface::find_software_item(const char *path, bool // sw_info and sw_part are also set. //------------------------------------------------- -bool device_image_interface::load_software_part(const char *path, software_part *&swpart) +bool device_image_interface::load_software_part(const char *path, const software_part *&swpart) { // if no match has been found, we suggest similar shortnames swpart = find_software_item(path, true); @@ -1376,7 +1376,7 @@ bool device_image_interface::load_software_part(const char *path, software_part const char *requirement = swpart->feature("requirement"); if (requirement != nullptr) { - software_part *req_swpart = find_software_item(requirement, false); + const software_part *req_swpart = find_software_item(requirement, false); if (req_swpart != nullptr) { device_image_interface *req_image = req_swpart->find_mountable_image(device().mconfig()); @@ -1401,7 +1401,7 @@ std::string device_image_interface::software_get_default_slot(const char *defaul if (*path != '\0') { result.assign(default_card_slot); - software_part *swpart = find_software_item(path, true); + const software_part *swpart = find_software_item(path, true); if (swpart != nullptr) { const char *slot = swpart->feature("slot"); diff --git a/src/emu/diimage.h b/src/emu/diimage.h index e2c6d3600a0..692910e6060 100644 --- a/src/emu/diimage.h +++ b/src/emu/diimage.h @@ -266,8 +266,8 @@ protected: void image_checkhash(); void update_names(const device_type device_type = nullptr, const char *inst = nullptr, const char *brief = nullptr); - software_part *find_software_item(const char *path, bool restrict_to_interface) const; - bool load_software_part(const char *path, software_part *&swpart); + const software_part *find_software_item(const char *path, bool restrict_to_interface) const; + bool load_software_part(const char *path, const software_part *&swpart); std::string software_get_default_slot(const char *default_card_slot) const; // derived class overrides @@ -293,8 +293,8 @@ protected: /* Software information */ std::string m_full_software_name; - software_info *m_software_info_ptr; - software_part *m_software_part_ptr; + const software_info *m_software_info_ptr; + const software_part *m_software_part_ptr; std::string m_software_list_name; /* info read from the hash file/software list */ diff --git a/src/emu/romload.cpp b/src/emu/romload.cpp index 5d832fd2022..deb3ad6d8aa 100644 --- a/src/emu/romload.cpp +++ b/src/emu/romload.cpp @@ -1275,7 +1275,7 @@ void rom_load_manager::load_software_part_region(device_t &device, software_list m_romstotalsize = 0; m_romsloadedsize = 0; - software_info *swinfo = swlist.find(swname); + const software_info *swinfo = swlist.find(swname); if (swinfo != nullptr) { UINT32 supported = swinfo->supported(); diff --git a/src/emu/softlist.cpp b/src/emu/softlist.cpp index 381d32fd4c4..b4dba456a4a 100644 --- a/src/emu/softlist.cpp +++ b/src/emu/softlist.cpp @@ -269,7 +269,7 @@ software_info::software_info(software_list_device &list, const char *name, const // optional interface match //------------------------------------------------- -software_part *software_info::find_part(const char *partname, const char *interface) +const software_part *software_info::find_part(const char *partname, const char *interface) const { // if neither partname nor interface supplied, then we just return the first entry if (partname != nullptr && strlen(partname)==0) partname = nullptr; @@ -278,7 +278,7 @@ software_part *software_info::find_part(const char *partname, const char *interf return m_partdata.first(); // look for the part by name and match against the interface if provided - for (software_part &part : m_partdata) + for (const software_part &part : m_partdata) if (partname != nullptr && strcmp(partname, part.name()) == 0) { if (interface == nullptr || part.matches_interface(interface)) @@ -369,7 +369,7 @@ void software_list_device::device_start() // and optional interface //------------------------------------------------- -void software_list_device::find_approx_matches(const char *name, int matches, software_info **list, const char *interface) +void software_list_device::find_approx_matches(const char *name, int matches, const software_info **list, const char *interface) { // if no name, return if (name == nullptr || name[0] == 0) @@ -384,9 +384,9 @@ void software_list_device::find_approx_matches(const char *name, int matches, so } // iterate over our info (will cause a parse if needed) - for (software_info &swinfo : get_info()) + for (const software_info &swinfo : get_info()) { - software_part *part = swinfo.first_part(); + const software_part *part = swinfo.first_part(); if ((interface == nullptr || part->matches_interface(interface)) && part->is_compatible(*this) == SOFTWARE_IS_COMPATIBLE) { // pick the best match between driver name and description @@ -463,7 +463,7 @@ void software_list_device::display_matches(const machine_config &config, const c for (software_list_device &swlistdev : deviter) { // get the top 16 approximate matches for the selected device interface (i.e. only carts for cartslot, etc.) - software_info *matches[16] = { nullptr }; + const software_info *matches[16] = { nullptr }; swlistdev.find_approx_matches(name, ARRAY_LENGTH(matches), matches, interface); // if we found some, print them @@ -492,7 +492,7 @@ void software_list_device::display_matches(const machine_config &config, const c // from an intermediate point //------------------------------------------------- -software_info *software_list_device::find(const char *look_for, software_info *prev) +const software_info *software_list_device::find(const char *look_for, const software_info *prev) { // nullptr search returns nothing if (look_for == nullptr) @@ -636,7 +636,7 @@ void software_list_device::internal_validity_check(validity_checker &valid) } // make sure the parent exists - software_info *swinfo2 = find(swinfo.parentname()); + const software_info *swinfo2 = find(swinfo.parentname()); if (swinfo2 == nullptr) osd_printf_error("%s: parent '%s' software for '%s' not found\n", filename(), swinfo.parentname(), swinfo.shortname()); diff --git a/src/emu/softlist.h b/src/emu/softlist.h index 536ec9d4754..c5082e16903 100644 --- a/src/emu/softlist.h +++ b/src/emu/softlist.h @@ -118,7 +118,7 @@ public: const char *name() const { return m_name; } const char *interface() const { return m_interface; } const simple_list &featurelist() const { return m_featurelist; } - rom_entry *romdata(unsigned int index = 0) { return (index < m_romdata.size()) ? &m_romdata[index] : nullptr; } + const rom_entry *romdata(unsigned int index = 0) const { return (index < m_romdata.size()) ? &m_romdata[index] : nullptr; } // helpers software_compatibility is_compatible(const software_list_device &swlist) const; @@ -161,10 +161,10 @@ public: const simple_list &shared_info() const { return m_shared_info; } UINT32 supported() const { return m_supported; } const simple_list &parts() const { return m_partdata; } - software_part *first_part() const { return m_partdata.first(); } + const software_part *first_part() const { return m_partdata.first(); } // additional operations - software_part *find_part(const char *partname, const char *interface = nullptr); + const software_part *find_part(const char *partname, const char *interface = nullptr) const; bool has_multiple_parts(const char *interface) const; private: @@ -212,8 +212,8 @@ public: const simple_list &get_info() { if (!m_parsed) parse(); return m_infolist; } // operations - software_info *find(const char *look_for, software_info *prev = nullptr); - void find_approx_matches(const char *name, int matches, software_info **list, const char *interface); + const software_info *find(const char *look_for, const software_info *prev = nullptr); + void find_approx_matches(const char *name, int matches, const software_info **list, const char *interface); void release(); // string pool helpers diff --git a/src/frontend/mame/audit.cpp b/src/frontend/mame/audit.cpp index 4900d98b53f..fb1199812e7 100644 --- a/src/frontend/mame/audit.cpp +++ b/src/frontend/mame/audit.cpp @@ -149,7 +149,7 @@ media_auditor::summary media_auditor::audit_device(device_t &device, const char //------------------------------------------------- // audit_software //------------------------------------------------- -media_auditor::summary media_auditor::audit_software(const char *list_name, software_info *swinfo, const char *validation) +media_auditor::summary media_auditor::audit_software(const char *list_name, const software_info *swinfo, const char *validation) { // start fresh m_record_list.clear(); diff --git a/src/frontend/mame/audit.h b/src/frontend/mame/audit.h index 5252a11be76..a9e3933083c 100644 --- a/src/frontend/mame/audit.h +++ b/src/frontend/mame/audit.h @@ -158,7 +158,7 @@ public: // audit operations summary audit_media(const char *validation = AUDIT_VALIDATE_FULL); summary audit_device(device_t &device, const char *validation = AUDIT_VALIDATE_FULL); - summary audit_software(const char *list_name, software_info *swinfo, const char *validation = AUDIT_VALIDATE_FULL); + summary audit_software(const char *list_name, const software_info *swinfo, const char *validation = AUDIT_VALIDATE_FULL); summary audit_samples(); summary summarize(const char *name, std::ostream *output = nullptr) const; diff --git a/src/frontend/mame/clifront.cpp b/src/frontend/mame/clifront.cpp index 384d52b0e6f..059748b2cfc 100644 --- a/src/frontend/mame/clifront.cpp +++ b/src/frontend/mame/clifront.cpp @@ -520,7 +520,7 @@ int cli_frontend::execute(int argc, char **argv) bool compatible = false; for (software_list_device &swlistdev : iter) { - software_info *swinfo = swlistdev.find(m_options.software_name()); + const software_info *swinfo = swlistdev.find(m_options.software_name()); if (swinfo != nullptr) { // loop through all parts diff --git a/src/frontend/mame/mameopts.cpp b/src/frontend/mame/mameopts.cpp index f8a809efd9d..c64b8fd7ebc 100644 --- a/src/frontend/mame/mameopts.cpp +++ b/src/frontend/mame/mameopts.cpp @@ -376,8 +376,8 @@ void mame_options::set_system_name(emu_options &options, const char *name) // look up the software part machine_config config(*cursystem, options); software_list_device *swlist = software_list_device::find_by_name(config, sw_list.c_str()); - software_info *swinfo = swlist != nullptr ? swlist->find(sw_name.c_str()) : nullptr; - software_part *swpart = swinfo != nullptr ? swinfo->find_part(sw_part.c_str()) : nullptr; + const software_info *swinfo = swlist != nullptr ? swlist->find(sw_name.c_str()) : nullptr; + const software_part *swpart = swinfo != nullptr ? swinfo->find_part(sw_part.c_str()) : nullptr; // then add the options if (new_system) diff --git a/src/frontend/mame/ui/selgame.cpp b/src/frontend/mame/ui/selgame.cpp index 08ce99bc61d..6bb2cf9d1f9 100644 --- a/src/frontend/mame/ui/selgame.cpp +++ b/src/frontend/mame/ui/selgame.cpp @@ -915,7 +915,7 @@ void menu_select_game::inkey_select_favorite(const event *menu_event) media_auditor auditor(drv); drv.next(); software_list_device *swlist = software_list_device::find_by_name(drv.config(), ui_swinfo->listname.c_str()); - software_info *swinfo = swlist->find(ui_swinfo->shortname.c_str()); + const software_info *swinfo = swlist->find(ui_swinfo->shortname.c_str()); media_auditor::summary summary = auditor.audit_software(swlist->list_name(), swinfo, AUDIT_VALIDATE_FAST); diff --git a/src/frontend/mame/ui/selsoft.cpp b/src/frontend/mame/ui/selsoft.cpp index 8839666d838..1b6468579ab 100644 --- a/src/frontend/mame/ui/selsoft.cpp +++ b/src/frontend/mame/ui/selsoft.cpp @@ -525,9 +525,9 @@ void menu_select_software::build_software_list() { m_filter.swlist.name.push_back(swlist.list_name()); m_filter.swlist.description.push_back(swlist.description()); - for (software_info &swinfo : swlist.get_info()) + for (const software_info &swinfo : swlist.get_info()) { - software_part *part = swinfo.first_part(); + const software_part *part = swinfo.first_part(); if (part->is_compatible(swlist) == SOFTWARE_IS_COMPATIBLE) { const char *instance_name = nullptr; @@ -687,7 +687,7 @@ void menu_select_software::inkey_select(const event *menu_event) media_auditor auditor(drivlist); drivlist.next(); software_list_device *swlist = software_list_device::find_by_name(drivlist.config(), ui_swinfo->listname.c_str()); - software_info *swinfo = swlist->find(ui_swinfo->shortname.c_str()); + const software_info *swinfo = swlist->find(ui_swinfo->shortname.c_str()); media_auditor::summary summary = auditor.audit_software(swlist->list_name(), swinfo, AUDIT_VALIDATE_FAST); @@ -1572,7 +1572,7 @@ void bios_selection::handle() driver_enumerator drivlist(machine().options(), *ui_swinfo->driver); drivlist.next(); software_list_device *swlist = software_list_device::find_by_name(drivlist.config(), ui_swinfo->listname.c_str()); - software_info *swinfo = swlist->find(ui_swinfo->shortname.c_str()); + const software_info *swinfo = swlist->find(ui_swinfo->shortname.c_str()); if (!ui().options().skip_parts_menu() && swinfo->has_multiple_parts(ui_swinfo->interface.c_str())) { s_parts parts;