From 734562844e4db51f4884a9db524e9a5ae19b33ea Mon Sep 17 00:00:00 2001 From: Fabio Priuli Date: Thu, 23 Feb 2012 16:18:48 +0000 Subject: [PATCH] info.c: additional cleanup for device info output made possible by Micko's work + renamed slot "shortname" attribute to "devname" to make clear it is the name of the device to be mounted. no whatsnew. --- src/emu/info.c | 55 +++++++++++++++++++++----------------------------- src/emu/info.h | 3 +-- 2 files changed, 24 insertions(+), 34 deletions(-) diff --git a/src/emu/info.c b/src/emu/info.c index 47ca17f67e8..f20ed52b451 100644 --- a/src/emu/info.c +++ b/src/emu/info.c @@ -179,7 +179,7 @@ const char info_xml_creator::s_dtd_string[] = "\t\t\t\n" "\t\t\t\n" "\t\t\t\t\n" -"\t\t\t\t\n" +"\t\t\t\t\n" "\t\t\t\t\n" "\t\t\n" "\t\t\t\n" @@ -340,7 +340,7 @@ void info_xml_creator::output_one() // a single device //------------------------------------------------- -void info_xml_creator::output_one_device(device_t &device, const char *innertag, const char *outertag) +void info_xml_creator::output_one_device(device_t &device, const char *devtag) { bool has_speaker = FALSE, has_input = FALSE; // check if the device adds speakers to the system @@ -363,38 +363,26 @@ void info_xml_creator::output_one_device(device_t &device, const char *innertag, } // start to output info - fprintf(m_output, "\t<%s", outertag); - // TODO: merge handling for devices with roms and other devices - if (outertag == emulator_info::get_xml_top()) - { - // it's a device with roms necessary for this configuration - fprintf(m_output, " name=\"%s\"", xml_normalize_string(device.shortname())); - fprintf(m_output, " isdevice=\"yes\""); - fprintf(m_output, " runnable=\"no\""); - } - else - { - // it's a generic device - astring shrtnm(device.shortname()); - if (shrtnm.cmp("")) - fprintf(m_output, " shortname=\"%s\"", shrtnm.cstr()); - } + fprintf(m_output, "\t<%s", emulator_info::get_xml_top()); + fprintf(m_output, " name=\"%s\"", xml_normalize_string(device.shortname())); + fprintf(m_output, " isdevice=\"yes\""); + fprintf(m_output, " runnable=\"no\""); fprintf(m_output, ">\n"); fprintf(m_output, "\t\t%s\n", xml_normalize_string(device.name())); output_rom(device); - output_chips(device, innertag); + output_chips(device, devtag); output_display(device); if (has_speaker) output_sound(device); if (has_input) output_input(portlist); - output_switches(portlist, innertag, IPT_DIPSWITCH, "dipswitch", "dipvalue"); - output_switches(portlist, innertag, IPT_CONFIG, "configuration", "confsetting"); + output_switches(portlist, devtag, IPT_DIPSWITCH, "dipswitch", "dipvalue"); + output_switches(portlist, devtag, IPT_CONFIG, "configuration", "confsetting"); output_adjusters(portlist); - output_images(device, innertag); - output_slots(device, innertag); - fprintf(m_output, "\t\n", outertag); + output_images(device, devtag); + output_slots(device, devtag); + fprintf(m_output, "\t\n", emulator_info::get_xml_top()); } @@ -409,20 +397,23 @@ typedef tagmap_t slot_map; void info_xml_creator::output_devices() { m_drivlist.reset(); - slot_map desc; + slot_map shortnames; - // first, run through slot devices while (m_drivlist.next()) { + // first, run through devices with roms which belongs to the default configuration device_iterator deviter(m_drivlist.config().root_device()); deviter.first(); - for (device_t *device = deviter.next(); device != NULL; device = deviter.next()) { + for (device_t *device = deviter.next(); device != NULL; device = deviter.next()) + { if (device->rom_region() != NULL && device->shortname()!= NULL) { - if (desc.add(device->name(), 0, FALSE) != TMERR_DUPLICATE) - output_one_device(*device, device->tag(), emulator_info::get_xml_top()); + if (shortnames.add(device->shortname(), 0, FALSE) != TMERR_DUPLICATE) + output_one_device(*device, device->tag()); } } + + // then, run through slot devices slot_interface_iterator iter(m_drivlist.config().root_device()); for (const device_slot_interface *slot = iter.first(); slot != NULL; slot = iter.next()) { @@ -439,8 +430,8 @@ void info_xml_creator::output_devices() if (!device->configured()) device->config_complete(); - if (desc.add(dev->name(), 0, FALSE) != TMERR_DUPLICATE) - output_one_device(*dev, temptag.cstr(), emulator_info::get_xml_top()); + if (shortnames.add(dev->shortname(), 0, FALSE) != TMERR_DUPLICATE) + output_one_device(*dev, temptag.cstr()); const_cast(m_drivlist.config()).device_remove(&m_drivlist.config().root_device(), temptag.cstr()); global_free(dev); @@ -1286,7 +1277,7 @@ void info_xml_creator::output_slots(device_t &device, const char *root_tag) fprintf(m_output, "\t\t\tshortname())); + fprintf(m_output, " devname=\"%s\"", xml_normalize_string(dev->shortname())); if (slot->get_default_card(m_drivlist.config(), m_drivlist.options())) { if (slot->get_default_card(m_drivlist.config(), m_drivlist.options()) == intf[i].name) diff --git a/src/emu/info.h b/src/emu/info.h index 9f038fb0fdd..1ebdea13322 100644 --- a/src/emu/info.h +++ b/src/emu/info.h @@ -77,7 +77,7 @@ private: void output_software_list(); void output_ramoptions(); - void output_one_device(device_t &device, const char *innertag, const char *outertag); + void output_one_device(device_t &device, const char *devtag); void output_devices(); const char *get_merge_name(const hash_collection &romhashes); @@ -85,7 +85,6 @@ private: // internal state FILE * m_output; driver_enumerator & m_drivlist; - dynamic_array m_device_used; emu_options m_lookup_options; static const char s_dtd_string[];