Merge pull request #5441 from npwoods/infocpp_use_ostream

Changed info_xml_creator to use std::ostream
This commit is contained in:
R. Belmont 2019-08-05 15:41:48 -04:00 committed by GitHub
commit 9c89109d15
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 270 additions and 273 deletions

View File

@ -355,7 +355,7 @@ void cli_frontend::listxml(const std::vector<std::string> &args)
{
// create the XML and print it to stdout
info_xml_creator creator(m_options, m_options.bool_value(CLIOPTION_DTD));
creator.output(stdout, args);
creator.output(std::cout, args);
}

File diff suppressed because it is too large Load Diff

View File

@ -35,44 +35,43 @@ public:
info_xml_creator(emu_options const &options, bool dtd = true);
// output
void output(FILE *out, const std::vector<std::string> &patterns);
void output(FILE *out, const std::function<bool(const char *shortname, bool &done)> &filter = { }, bool include_devices = true);
void output(std::ostream &out, const std::vector<std::string> &patterns);
void output(std::ostream &out, const std::function<bool(const char *shortname, bool &done)> &filter = { }, bool include_devices = true);
private:
typedef std::unordered_set<std::add_pointer_t<device_type> > device_type_set;
// internal helper
void output_header();
void output_footer();
void output_header(std::ostream &out);
void output_footer(std::ostream &out);
void output_one(driver_enumerator &drivlist, device_type_set *devtypes);
void output_sampleof(device_t &device);
void output_bios(device_t const &device);
void output_rom(driver_enumerator *drivlist, const game_driver *driver, device_t &device);
void output_device_refs(device_t &root);
void output_sample(device_t &device);
void output_chips(device_t &device, const char *root_tag);
void output_display(device_t &device, machine_flags::type const *flags, const char *root_tag);
void output_sound(device_t &device);
void output_ioport_condition(const ioport_condition &condition, unsigned indent);
void output_input(const ioport_list &portlist);
void output_switches(const ioport_list &portlist, const char *root_tag, int type, const char *outertag, const char *loctag, const char *innertag);
void output_ports(const ioport_list &portlist);
void output_adjusters(const ioport_list &portlist);
void output_driver(game_driver const &driver, device_t::feature_type unemulated, device_t::feature_type imperfect);
void output_features(device_type type, device_t::feature_type unemulated, device_t::feature_type imperfect);
void output_images(device_t &device, const char *root_tag);
void output_slots(machine_config &config, device_t &device, const char *root_tag, device_type_set *devtypes);
void output_software_list(device_t &root);
void output_ramoptions(device_t &root);
void output_one(std::ostream &out, driver_enumerator &drivlist, device_type_set *devtypes);
void output_sampleof(std::ostream &out, device_t &device);
void output_bios(std::ostream &out, device_t const &device);
void output_rom(std::ostream &out, driver_enumerator *drivlist, const game_driver *driver, device_t &device);
void output_device_refs(std::ostream &out, device_t &root);
void output_sample(std::ostream &out, device_t &device);
void output_chips(std::ostream &out, device_t &device, const char *root_tag);
void output_display(std::ostream &out, device_t &device, machine_flags::type const *flags, const char *root_tag);
void output_sound(std::ostream &out, device_t &device);
void output_ioport_condition(std::ostream &out, const ioport_condition &condition, unsigned indent);
void output_input(std::ostream &out, const ioport_list &portlist);
void output_switches(std::ostream &out, const ioport_list &portlist, const char *root_tag, int type, const char *outertag, const char *loctag, const char *innertag);
void output_ports(std::ostream &out, const ioport_list &portlist);
void output_adjusters(std::ostream &out, const ioport_list &portlist);
void output_driver(std::ostream &out, game_driver const &driver, device_t::feature_type unemulated, device_t::feature_type imperfect);
void output_features(std::ostream &out, device_type type, device_t::feature_type unemulated, device_t::feature_type imperfect);
void output_images(std::ostream &out, device_t &device, const char *root_tag);
void output_slots(std::ostream &out, machine_config &config, device_t &device, const char *root_tag, device_type_set *devtypes);
void output_software_list(std::ostream &out, device_t &root);
void output_ramoptions(std::ostream &out, device_t &root);
void output_one_device(machine_config &config, device_t &device, const char *devtag);
void output_devices(device_type_set const *filter);
void output_one_device(std::ostream &out, machine_config &config, device_t &device, const char *devtag);
void output_devices(std::ostream &out, device_type_set const *filter);
const char *get_merge_name(driver_enumerator &drivlist, const game_driver &driver, util::hash_collection const &romhashes);
// internal state
FILE * m_output; // FIXME: this is not reentrancy-safe
emu_options m_lookup_options;
static const char s_dtd_string[];

View File

@ -25,6 +25,8 @@
#include "ui/inifile.h"
#include "ui/submenu.h"
#include <fstream>
namespace ui {
/***************************************************************************
MENU HANDLERS
@ -585,10 +587,9 @@ void menu_export::handle()
emu_file file(ui().options().ui_path(), OPEN_FLAG_WRITE | OPEN_FLAG_CREATE | OPEN_FLAG_CREATE_PATHS);
if (file.open(filename.c_str(), ".xml") == osd_file::error::NONE)
{
FILE *pfile;
std::string fullpath(file.fullpath());
file.close();
pfile = fopen(fullpath.c_str(), "w");
std::ofstream pfile(fullpath);
// prepare a filter for the drivers we want to show
std::unordered_set<const game_driver *> driver_list(m_list.begin(), m_list.end());
@ -607,7 +608,6 @@ void menu_export::handle()
// and do the dirty work
info_xml_creator creator(machine().options());
creator.output(pfile, filter, include_devices);
fclose(pfile);
machine().popmessage(_("%s.xml saved under ui folder."), filename.c_str());
}
}