void menu_software_list::append_software_entry(const software_info &swinfo) { entry_info entry; bool entry_updated = false; // check if at least one of the parts has the correct interface and add a menu entry only in this case for (const software_part &swpart : swinfo.parts()) { if (swpart.matches_interface(m_interface) && m_swlist->is_compatible(swpart) == SOFTWARE_IS_COMPATIBLE) { entry_updated = true; entry.short_name.assign(swinfo.shortname()); entry.long_name.assign(swinfo.longname()); break; } } // skip this if no new entry has been allocated (e.g. if the software has no matching interface for this image device) if (entry_updated) { // find the end of the list auto iter = m_entrylist.begin(); while (iter != m_entrylist.end() && compare_entries(entry, *iter, m_ordered_by_shortname) >= 0) ++iter; m_entrylist.emplace(iter, std::move(entry)); } }
void media_identifier::file_info::match( std::string const &list, software_info const &software, rom_entry const &rom, util::hash_collection const &hashes) { if (hashes == m_hashes) { m_matches.emplace_back( util::string_format("%s:%s", list, software.shortname()), std::string(software.longname()), ROM_GETNAME(&rom), hashes.flag(util::hash_collection::FLAG_BAD_DUMP), false); } }