summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--src/devices/cpu/adsp2100/adsp2100.cpp10
-rw-r--r--src/devices/cpu/alph8201/alph8201.cpp2
-rw-r--r--src/devices/cpu/alto2/alto2cpu.cpp13
-rw-r--r--src/devices/cpu/am29000/am29000.cpp21
-rw-r--r--src/devices/cpu/amis2000/amis2000.cpp2
-rw-r--r--src/devices/cpu/apexc/apexc.cpp2
-rw-r--r--src/devices/cpu/arm/arm.cpp4
-rw-r--r--src/devices/cpu/arm7/arm7.cpp4
-rw-r--r--src/devices/cpu/asap/asap.cpp16
-rw-r--r--src/devices/cpu/avr8/avr8.cpp2
-rw-r--r--src/devices/cpu/ccpu/ccpu.cpp2
-rw-r--r--src/devices/cpu/cop400/cop400.cpp8
-rw-r--r--src/devices/cpu/cosmac/cosmac.cpp10
-rw-r--r--src/devices/cpu/cp1610/cp1610.cpp2
-rw-r--r--src/devices/cpu/cubeqcpu/cubeqcpu.cpp16
-rw-r--r--src/devices/cpu/drcbec.cpp9
-rw-r--r--src/devices/cpu/drcbex64.cpp2
-rw-r--r--src/devices/cpu/drcbex86.cpp2
-rw-r--r--src/devices/cpu/drcuml.cpp2
-rw-r--r--src/devices/cpu/dsp16/dsp16.cpp152
-rw-r--r--src/devices/cpu/dsp16/dsp16dis.cpp68
-rw-r--r--src/devices/cpu/dsp32/dsp32.cpp6
-rw-r--r--src/devices/cpu/dsp56k/dsp56k.cpp10
-rw-r--r--src/devices/cpu/e0c6200/e0c6200.cpp2
-rw-r--r--src/devices/cpu/e132xs/e132xs.cpp2
-rw-r--r--src/devices/cpu/esrip/esrip.cpp2
-rw-r--r--src/devices/cpu/f8/f8.cpp12
-rw-r--r--src/devices/cpu/g65816/g65816.cpp2
-rw-r--r--src/devices/cpu/h6280/h6280.cpp2
-rw-r--r--src/devices/cpu/h8/h8.cpp42
-rw-r--r--src/devices/cpu/hcd62121/hcd62121.cpp68
-rw-r--r--src/devices/cpu/hd61700/hd61700.cpp4
-rw-r--r--src/devices/cpu/hmcs40/hmcs40.cpp2
-rw-r--r--src/devices/cpu/hphybrid/hphybrid.cpp2
-rw-r--r--src/devices/cpu/i386/i386.cpp34
-rw-r--r--src/devices/cpu/i4004/i4004.cpp12
-rw-r--r--src/devices/cpu/i8008/i8008.cpp4
-rw-r--r--src/devices/cpu/i8085/i8085.cpp2
-rw-r--r--src/devices/cpu/i8089/i8089.cpp14
-rw-r--r--src/devices/cpu/i86/i286.cpp4
-rw-r--r--src/devices/cpu/i86/i86.cpp4
-rw-r--r--src/devices/cpu/i960/i960.cpp2
-rw-r--r--src/devices/cpu/ie15/ie15.cpp4
-rw-r--r--src/devices/cpu/jaguar/jaguar.cpp2
-rw-r--r--src/devices/cpu/lc8670/lc8670.cpp2
-rw-r--r--src/devices/cpu/lh5801/lh5801.cpp2
-rw-r--r--src/devices/cpu/lr35902/lr35902.cpp4
-rw-r--r--src/devices/cpu/m37710/m37710.cpp2
-rw-r--r--src/devices/cpu/m6502/m6502.cpp2
-rw-r--r--src/devices/cpu/m6502/m65ce02.cpp4
-rw-r--r--src/devices/cpu/m6502/m740.cpp2
-rw-r--r--src/devices/cpu/m6800/m6800.cpp2
-rw-r--r--src/devices/cpu/m68000/m68kcpu.cpp24
-rw-r--r--src/devices/cpu/m6805/m6805.cpp2
-rw-r--r--src/devices/cpu/m6809/m6809.cpp2
-rw-r--r--src/devices/cpu/mb86233/mb86233.cpp2
-rw-r--r--src/devices/cpu/mb86235/mb86235.cpp2
-rw-r--r--src/devices/cpu/mb88xx/mb88xx.cpp2
-rw-r--r--src/devices/cpu/mc68hc11/mc68hc11.cpp2
-rw-r--r--src/devices/cpu/mcs48/mcs48.cpp4
-rw-r--r--src/devices/cpu/mcs51/mcs51.cpp2
-rw-r--r--src/devices/cpu/mcs96/mcs96.cpp2
-rw-r--r--src/devices/cpu/melps4/melps4.cpp2
-rw-r--r--src/devices/cpu/minx/minx.cpp2
-rw-r--r--src/devices/cpu/mips/mips3.cpp130
-rw-r--r--src/devices/cpu/mn10200/mn10200.cpp2
-rw-r--r--src/devices/cpu/nec/nec.cpp2
-rw-r--r--src/devices/cpu/nec/v25.cpp2
-rw-r--r--src/devices/cpu/pdp1/pdp1.cpp2
-rw-r--r--src/devices/cpu/pic16c5x/pic16c5x.cpp4
-rw-r--r--src/devices/cpu/pic16c62x/pic16c62x.cpp4
-rw-r--r--src/devices/cpu/powerpc/ppccom.cpp64
-rw-r--r--src/devices/cpu/pps4/pps4.cpp2
-rw-r--r--src/devices/cpu/psx/psx.cpp4
-rw-r--r--src/devices/cpu/rsp/rsp.cpp2
-rw-r--r--src/devices/cpu/rsp/rspcp2.cpp64
-rw-r--r--src/devices/cpu/rsp/rspcp2d.cpp64
-rw-r--r--src/devices/cpu/s2650/s2650.cpp2
-rw-r--r--src/devices/cpu/saturn/saturn.cpp22
-rw-r--r--src/devices/cpu/sc61860/sc61860.cpp2
-rw-r--r--src/devices/cpu/scmp/scmp.cpp2
-rw-r--r--src/devices/cpu/score/score.cpp8
-rw-r--r--src/devices/cpu/scudsp/scudsp.cpp2
-rw-r--r--src/devices/cpu/se3208/se3208.cpp2
-rw-r--r--src/devices/cpu/sh2/sh2.cpp2
-rw-r--r--src/devices/cpu/sh4/sh4.cpp66
-rw-r--r--src/devices/cpu/sm8500/sm8500.cpp20
-rw-r--r--src/devices/cpu/spc700/spc700.cpp2
-rw-r--r--src/devices/cpu/ssem/ssem.cpp2
-rw-r--r--src/devices/cpu/ssp1601/ssp1601.cpp7
-rw-r--r--src/devices/cpu/t11/t11.cpp4
-rw-r--r--src/devices/cpu/tlcs90/tlcs90.cpp2
-rw-r--r--src/devices/cpu/tlcs900/tlcs900.cpp2
-rw-r--r--src/devices/cpu/tms0980/tms0980.cpp2
-rw-r--r--src/devices/cpu/tms32010/tms32010.cpp2
-rw-r--r--src/devices/cpu/tms32025/tms32025.cpp2
-rw-r--r--src/devices/cpu/tms32031/tms32031.cpp4
-rw-r--r--src/devices/cpu/tms32082/tms32082.cpp4
-rw-r--r--src/devices/cpu/tms34010/tms34010.cpp6
-rw-r--r--src/devices/cpu/tms7000/tms7000.cpp2
-rw-r--r--src/devices/cpu/ucom4/ucom4.cpp2
-rw-r--r--src/devices/cpu/uml.cpp65
-rw-r--r--src/devices/cpu/upd7725/upd7725.cpp4
-rw-r--r--src/devices/cpu/upd7810/upd7810.cpp2
-rw-r--r--src/devices/cpu/v30mz/v30mz.cpp4
-rw-r--r--src/devices/cpu/v810/v810.cpp2
-rw-r--r--src/devices/cpu/z180/z180.cpp2
-rw-r--r--src/devices/cpu/z8/z8.cpp4
-rw-r--r--src/devices/cpu/z80/z80.cpp2
-rw-r--r--src/devices/cpu/z8000/z8000.cpp2
-rw-r--r--src/devices/imagedev/diablo.cpp4
-rw-r--r--src/devices/imagedev/harddriv.cpp4
-rw-r--r--src/devices/imagedev/mfmhd.cpp10
-rw-r--r--src/devices/machine/netlist.h4
-rw-r--r--src/devices/machine/ram.cpp12
-rw-r--r--src/emu/audit.cpp26
-rw-r--r--src/emu/cheat.cpp29
-rw-r--r--src/emu/clifront.cpp6
-rw-r--r--src/emu/debug/debugcmd.cpp29
-rw-r--r--src/emu/debug/debugcpu.cpp14
-rw-r--r--src/emu/debug/dvbpoints.cpp16
-rw-r--r--src/emu/debug/dvdisasm.cpp2
-rw-r--r--src/emu/debug/dvmemory.cpp10
-rw-r--r--src/emu/debug/dvstate.cpp10
-rw-r--r--src/emu/debug/dvwpoints.cpp14
-rw-r--r--src/emu/devfind.h4
-rw-r--r--src/emu/diimage.cpp7
-rw-r--r--src/emu/distate.cpp2
-rw-r--r--src/emu/emuopts.cpp12
-rw-r--r--src/emu/hash.cpp6
-rw-r--r--src/emu/hash.h8
-rw-r--r--src/emu/info.cpp42
-rw-r--r--src/emu/input.cpp4
-rw-r--r--src/emu/ioport.cpp123
-rw-r--r--src/emu/machine.cpp13
-rw-r--r--src/emu/memory.cpp11
-rw-r--r--src/emu/profiler.cpp6
-rw-r--r--src/emu/romload.cpp36
-rw-r--r--src/emu/save.cpp4
-rw-r--r--src/emu/schedule.cpp2
-rw-r--r--src/emu/softlist.cpp11
-rw-r--r--src/emu/sound.cpp13
-rw-r--r--src/emu/ui/auditmenu.cpp13
-rw-r--r--src/emu/ui/custmenu.cpp34
-rw-r--r--src/emu/ui/custui.cpp23
-rw-r--r--src/emu/ui/devctrl.h6
-rw-r--r--src/emu/ui/devopt.cpp93
-rw-r--r--src/emu/ui/dsplmenu.cpp3
-rw-r--r--src/emu/ui/filemngr.cpp7
-rw-r--r--src/emu/ui/info.cpp5
-rw-r--r--src/emu/ui/inifile.cpp37
-rw-r--r--src/emu/ui/inputmap.cpp35
-rw-r--r--src/emu/ui/menu.cpp12
-rw-r--r--src/emu/ui/miscmenu.cpp44
-rw-r--r--src/emu/ui/selgame.cpp142
-rw-r--r--src/emu/ui/selsoft.cpp59
-rw-r--r--src/emu/ui/simpleselgame.cpp42
-rw-r--r--src/emu/ui/sndmenu.cpp8
-rw-r--r--src/emu/ui/tapectrl.cpp4
-rw-r--r--src/emu/ui/ui.cpp214
-rw-r--r--src/emu/video.cpp63
-rw-r--r--src/lib/util/cdrom.cpp7
-rw-r--r--src/lib/util/corestr.cpp28
-rw-r--r--src/lib/util/corestr.h4
-rw-r--r--src/lib/util/hashing.cpp22
-rw-r--r--src/lib/util/options.cpp124
-rw-r--r--src/lib/util/strformat.h1453
-rw-r--r--src/mame/drivers/aim65.cpp6
-rw-r--r--src/mame/drivers/bfm_sc45_helper.cpp2
-rw-r--r--src/mame/drivers/cps3.cpp2
-rw-r--r--src/mame/drivers/pegasus.cpp5
-rw-r--r--src/mame/machine/spec_snqk.cpp12
-rw-r--r--src/mame/machine/thomson.cpp8
-rw-r--r--src/osd/modules/debugger/debugint.cpp5
-rw-r--r--src/osd/modules/debugger/qt/mainwindow.cpp18
-rw-r--r--src/osd/modules/debugger/win/consolewininfo.cpp11
-rw-r--r--src/osd/modules/debugger/win/disasmbasewininfo.cpp8
-rw-r--r--src/osd/modules/lib/osdobj_common.h14
-rw-r--r--src/osd/modules/render/d3d/d3dhlsl.cpp10
-rw-r--r--src/osd/sdl/osdsdl.h6
-rw-r--r--src/osd/windows/winmain.cpp12
-rw-r--r--src/tools/chdman.cpp19
-rw-r--r--src/tools/imgtool/imghd.cpp26
-rw-r--r--src/tools/regrep.cpp18
-rw-r--r--src/tools/split.cpp2
-rw-r--r--src/tools/src2html.cpp49
186 files changed, 2890 insertions, 1578 deletions
diff --git a/src/devices/cpu/adsp2100/adsp2100.cpp b/src/devices/cpu/adsp2100/adsp2100.cpp
index 63788892288..55cf0b3ab65 100644
--- a/src/devices/cpu/adsp2100/adsp2100.cpp
+++ b/src/devices/cpu/adsp2100/adsp2100.cpp
@@ -545,13 +545,13 @@ void adsp21xx_device::device_start()
state_add(ADSP2100_SR1_SEC, "SR1_SEC", m_alt.sr.srx.sr1.u);
for (int ireg = 0; ireg < 8; ireg++)
- state_add(ADSP2100_I0 + ireg, strformat("I%d", ireg).c_str(), m_i[ireg]).mask(0x3fff).callimport();
+ state_add(ADSP2100_I0 + ireg, string_format("I%d", ireg).c_str(), m_i[ireg]).mask(0x3fff).callimport();
for (int lreg = 0; lreg < 8; lreg++)
- state_add(ADSP2100_L0 + lreg, strformat("L%d", lreg).c_str(), m_l[lreg]).mask(0x3fff).callimport();
+ state_add(ADSP2100_L0 + lreg, string_format("L%d", lreg).c_str(), m_l[lreg]).mask(0x3fff).callimport();
for (int mreg = 0; mreg < 8; mreg++)
- state_add(ADSP2100_M0 + mreg, strformat("M%d", mreg).c_str(), m_m[mreg]).signed_mask(0x3fff);
+ state_add(ADSP2100_M0 + mreg, string_format("M%d", mreg).c_str(), m_m[mreg]).signed_mask(0x3fff);
state_add(ADSP2100_PX, "PX", m_px);
state_add(ADSP2100_CNTR, "CNTR", m_cntr).mask(0x3fff);
@@ -570,7 +570,7 @@ void adsp21xx_device::device_start()
for (int irqnum = 0; irqnum < 4; irqnum++)
if (irqnum < 4 || m_chip_type == CHIP_TYPE_ADSP2100)
- state_add(ADSP2100_IRQSTATE0 + irqnum, strformat("IRQ%d", irqnum).c_str(), m_irq_state[irqnum]).mask(1).callimport();
+ state_add(ADSP2100_IRQSTATE0 + irqnum, string_format("IRQ%d", irqnum).c_str(), m_irq_state[irqnum]).mask(1).callimport();
state_add(ADSP2100_FLAGIN, "FLAGIN", m_flagin).mask(1);
state_add(ADSP2100_FLAGOUT, "FLAGOUT", m_flagout).mask(1);
@@ -724,7 +724,7 @@ void adsp21xx_device::state_string_export(const device_state_entry &entry, std::
switch (entry.index())
{
case STATE_GENFLAGS:
- strprintf(str, "%c%c%c%c%c%c%c%c",
+ str = string_format("%c%c%c%c%c%c%c%c",
m_astat & 0x80 ? 'X':'.',
m_astat & 0x40 ? 'M':'.',
m_astat & 0x20 ? 'Q':'.',
diff --git a/src/devices/cpu/alph8201/alph8201.cpp b/src/devices/cpu/alph8201/alph8201.cpp
index 9c40d8d55ee..dec4a650ab8 100644
--- a/src/devices/cpu/alph8201/alph8201.cpp
+++ b/src/devices/cpu/alph8201/alph8201.cpp
@@ -532,7 +532,7 @@ void alpha8201_cpu_device::state_string_export(const device_state_entry &entry,
switch (entry.index())
{
case STATE_GENFLAGS:
- strprintf(str, "%c%c", m_cf ? 'C' : '.', m_zf ? 'Z' : '.');
+ str = string_format("%c%c", m_cf ? 'C' : '.', m_zf ? 'Z' : '.');
break;
}
}
diff --git a/src/devices/cpu/alto2/alto2cpu.cpp b/src/devices/cpu/alto2/alto2cpu.cpp
index 653f56949e5..fb2d1700d5f 100644
--- a/src/devices/cpu/alto2/alto2cpu.cpp
+++ b/src/devices/cpu/alto2/alto2cpu.cpp
@@ -1009,14 +1009,15 @@ void alto2_cpu_device::state_string_export(const device_state_entry &entry, std:
switch (entry.index())
{
case A2_TASK:
- strprintf(str, "%s", task_name(m_task));
+ str = string_format("%s", task_name(m_task));
break;
case STATE_GENFLAGS:
- strprintf(str, "%s%s%s%s",
- m_aluc0 ? "C":"-",
- m_laluc0 ? "c":"-",
- m_shifter == 0 ? "0":"-",
- static_cast<INT16>(m_shifter) < 0 ? "<":"-");
+ str = string_format(
+ "%c%c%c%c",
+ m_aluc0 ? 'C' : '-',
+ m_laluc0 ? 'c' : '-',
+ (m_shifter == 0) ? '0' : '-',
+ (INT16(m_shifter) < 0) ? '<' : '-');
break;
}
}
diff --git a/src/devices/cpu/am29000/am29000.cpp b/src/devices/cpu/am29000/am29000.cpp
index a31dc3b0374..bfeefebbcbf 100644
--- a/src/devices/cpu/am29000/am29000.cpp
+++ b/src/devices/cpu/am29000/am29000.cpp
@@ -409,16 +409,17 @@ void am29000_cpu_device::state_string_export(const device_state_entry &entry, st
switch (entry.index())
{
case STATE_GENFLAGS:
- strprintf(str, "%c%c%c%c%c%c%c%c%c|%3d", m_alu & ALU_V ? 'V' : '.',
- m_alu & ALU_Z ? 'Z' : '.',
- m_alu & ALU_N ? 'N' : '.',
- m_alu & ALU_C ? 'C' : '.',
- m_cps & CPS_IP ? 'I' : '.',
- m_cps & CPS_FZ ? 'F' : '.',
- m_cps & CPS_SM ? 'S' : 'U',
- m_cps & CPS_DI ? 'I' : '.',
- m_cps & CPS_DA ? 'D' : '.',
- (m_r[1] >> 2) & 0x7f);
+ str = string_format("%c%c%c%c%c%c%c%c%c|%3d",
+ m_alu & ALU_V ? 'V' : '.',
+ m_alu & ALU_Z ? 'Z' : '.',
+ m_alu & ALU_N ? 'N' : '.',
+ m_alu & ALU_C ? 'C' : '.',
+ m_cps & CPS_IP ? 'I' : '.',
+ m_cps & CPS_FZ ? 'F' : '.',
+ m_cps & CPS_SM ? 'S' : 'U',
+ m_cps & CPS_DI ? 'I' : '.',
+ m_cps & CPS_DA ? 'D' : '.',
+ (m_r[1] >> 2) & 0x7f);
break;
}
}
diff --git a/src/devices/cpu/amis2000/amis2000.cpp b/src/devices/cpu/amis2000/amis2000.cpp
index 57ed4d99578..326437b5baa 100644
--- a/src/devices/cpu/amis2000/amis2000.cpp
+++ b/src/devices/cpu/amis2000/amis2000.cpp
@@ -75,7 +75,7 @@ void amis2000_base_device::state_string_export(const device_state_entry &entry,
switch (entry.index())
{
case STATE_GENFLAGS:
- strprintf(str, "%c%c%c%c%c%c",
+ str = string_format("%c%c%c%c%c%c",
m_f & 0x20 ? '6':'.',
m_f & 0x10 ? '5':'.',
m_f & 0x08 ? '4':'.',
diff --git a/src/devices/cpu/apexc/apexc.cpp b/src/devices/cpu/apexc/apexc.cpp
index 87c5ff9a351..c39c6b0b418 100644
--- a/src/devices/cpu/apexc/apexc.cpp
+++ b/src/devices/cpu/apexc/apexc.cpp
@@ -819,7 +819,7 @@ void apexc_cpu_device::state_string_export(const device_state_entry &entry, std:
switch (entry.index())
{
case STATE_GENFLAGS:
- strprintf(str, "%c", m_running ? 'R' : 'S');
+ str = string_format("%c", m_running ? 'R' : 'S');
break;
}
}
diff --git a/src/devices/cpu/arm/arm.cpp b/src/devices/cpu/arm/arm.cpp
index 34dc1635639..f9505fda6d8 100644
--- a/src/devices/cpu/arm/arm.cpp
+++ b/src/devices/cpu/arm/arm.cpp
@@ -559,14 +559,14 @@ void arm_cpu_device::state_string_export(const device_state_entry &entry, std::s
switch (entry.index())
{
case STATE_GENFLAGS:
- strprintf(str, "%c%c%c%c%c%c %s",
+ str = string_format("%c%c%c%c%c%c %s",
(m_sArmRegister[15] & N_MASK) ? 'N' : '-',
(m_sArmRegister[15] & Z_MASK) ? 'Z' : '-',
(m_sArmRegister[15] & C_MASK) ? 'C' : '-',
(m_sArmRegister[15] & V_MASK) ? 'V' : '-',
(m_sArmRegister[15] & I_MASK) ? 'I' : '-',
(m_sArmRegister[15] & F_MASK) ? 'F' : '-',
- s[m_sArmRegister[15] & 3] );
+ s[m_sArmRegister[15] & 3]);
break;
}
}
diff --git a/src/devices/cpu/arm7/arm7.cpp b/src/devices/cpu/arm7/arm7.cpp
index 828f8562811..f10537dfd16 100644
--- a/src/devices/cpu/arm7/arm7.cpp
+++ b/src/devices/cpu/arm7/arm7.cpp
@@ -569,7 +569,7 @@ void arm7_cpu_device::state_string_export(const device_state_entry &entry, std::
switch (entry.index())
{
case STATE_GENFLAGS:
- strprintf(str, "%c%c%c%c%c%c%c%c %s",
+ str = string_format("%c%c%c%c%c%c%c%c %s",
(ARM7REG(eCPSR) & N_MASK) ? 'N' : '-',
(ARM7REG(eCPSR) & Z_MASK) ? 'Z' : '-',
(ARM7REG(eCPSR) & C_MASK) ? 'C' : '-',
@@ -578,7 +578,7 @@ void arm7_cpu_device::state_string_export(const device_state_entry &entry, std::
(ARM7REG(eCPSR) & I_MASK) ? 'I' : '-',
(ARM7REG(eCPSR) & F_MASK) ? 'F' : '-',
(ARM7REG(eCPSR) & T_MASK) ? 'T' : '-',
- GetModeText(ARM7REG(eCPSR)) );
+ GetModeText(ARM7REG(eCPSR)));
break;
}
}
diff --git a/src/devices/cpu/asap/asap.cpp b/src/devices/cpu/asap/asap.cpp
index b369ab6d07b..6f08253b425 100644
--- a/src/devices/cpu/asap/asap.cpp
+++ b/src/devices/cpu/asap/asap.cpp
@@ -193,7 +193,7 @@ void asap_device::device_start()
state_add(ASAP_PC, "PC", m_pc);
state_add(ASAP_PS, "PS", m_flagsio).callimport().callexport();
for (int regnum = 0; regnum < 32; regnum++)
- state_add(ASAP_R0 + regnum, strformat("R%d", regnum).c_str(), m_src2val[REGBASE + regnum]);
+ state_add(ASAP_R0 + regnum, string_format("R%d", regnum).c_str(), m_src2val[REGBASE + regnum]);
// register our state for saving
save_item(NAME(m_pc));
@@ -285,13 +285,13 @@ void asap_device::state_string_export(const device_state_entry &entry, std::stri
switch (entry.index())
{
case STATE_GENFLAGS:
- strprintf(str, "%c%c%c%c%c%c",
- m_pflag ? 'P' : '.',
- m_iflag ? 'I' : '.',
- ((INT32)m_znflag < 0) ? 'N' : '.',
- (m_znflag == 0) ? 'Z' : '.',
- ((m_vflag >> 30) & PS_VFLAG) ? 'V' : '.',
- m_cflag ? 'C' : '.');
+ str = string_format("%c%c%c%c%c%c",
+ m_pflag ? 'P' : '.',
+ m_iflag ? 'I' : '.',
+ ((INT32)m_znflag < 0) ? 'N' : '.',
+ (m_znflag == 0) ? 'Z' : '.',
+ ((m_vflag >> 30) & PS_VFLAG) ? 'V' : '.',
+ m_cflag ? 'C' : '.');
break;
}
}
diff --git a/src/devices/cpu/avr8/avr8.cpp b/src/devices/cpu/avr8/avr8.cpp
index 756562f0ea7..d4a00c1d325 100644
--- a/src/devices/cpu/avr8/avr8.cpp
+++ b/src/devices/cpu/avr8/avr8.cpp
@@ -910,7 +910,7 @@ void avr8_device::state_string_export(const device_state_entry &entry, std::stri
switch (entry.index())
{
case STATE_GENFLAGS:
- strprintf(str, "%c%c%c%c%c%c%c%c",
+ str = string_format("%c%c%c%c%c%c%c%c",
(m_r[AVR8_REGIDX_SREG] & 0x80) ? 'I' : '-',
(m_r[AVR8_REGIDX_SREG] & 0x40) ? 'T' : '-',
(m_r[AVR8_REGIDX_SREG] & 0x20) ? 'H' : '-',
diff --git a/src/devices/cpu/ccpu/ccpu.cpp b/src/devices/cpu/ccpu/ccpu.cpp
index bde43753786..f7731312241 100644
--- a/src/devices/cpu/ccpu/ccpu.cpp
+++ b/src/devices/cpu/ccpu/ccpu.cpp
@@ -145,7 +145,7 @@ void ccpu_cpu_device::state_string_export(const device_state_entry &entry, std::
switch (entry.index())
{
case STATE_GENFLAGS:
- strprintf(str, "%c%c%c%c%c%c",
+ str = string_format("%c%c%c%c%c%c",
TEST_A0 ? '0' : 'o',
TEST_NC ? 'N' : 'n',
TEST_LT ? 'L' : 'l',
diff --git a/src/devices/cpu/cop400/cop400.cpp b/src/devices/cpu/cop400/cop400.cpp
index ae14bd59cab..e5039743800 100644
--- a/src/devices/cpu/cop400/cop400.cpp
+++ b/src/devices/cpu/cop400/cop400.cpp
@@ -1210,10 +1210,10 @@ void cop400_cpu_device::state_string_export(const device_state_entry &entry, std
switch (entry.index())
{
case STATE_GENFLAGS:
- strprintf(str, "%c%c%c",
- m_c ? 'C' : '.',
- m_skl ? 'S' : '.',
- m_skt_latch ? 'T' : '.');
+ str = string_format("%c%c%c",
+ m_c ? 'C' : '.',
+ m_skl ? 'S' : '.',
+ m_skt_latch ? 'T' : '.');
break;
}
}
diff --git a/src/devices/cpu/cosmac/cosmac.cpp b/src/devices/cpu/cosmac/cosmac.cpp
index d8e3d52c6fd..fa53c68807b 100644
--- a/src/devices/cpu/cosmac/cosmac.cpp
+++ b/src/devices/cpu/cosmac/cosmac.cpp
@@ -354,7 +354,7 @@ void cosmac_device::device_start()
state_add(COSMAC_N, "N", m_n).mask(0xf);
for (int regnum = 0; regnum < 16; regnum++)
- state_add(COSMAC_R0 + regnum, strformat("R%x", regnum).c_str(), m_r[regnum]);
+ state_add(COSMAC_R0 + regnum, string_format("R%x", regnum).c_str(), m_r[regnum]);
state_add(COSMAC_DF, "DF", m_df).mask(0x1).noshow();
state_add(COSMAC_IE, "IE", m_ie).mask(0x1).noshow();
@@ -473,10 +473,10 @@ void cosmac_device::state_string_export(const device_state_entry &entry, std::st
switch (entry.index())
{
case STATE_GENFLAGS:
- strprintf(str, "%c%c%c",
- m_df ? 'D' : '.',
- m_ie ? 'I' : '.',
- m_q ? 'Q' : '.');
+ str = string_format("%c%c%c",
+ m_df ? 'D' : '.',
+ m_ie ? 'I' : '.',
+ m_q ? 'Q' : '.');
break;
}
}
diff --git a/src/devices/cpu/cp1610/cp1610.cpp b/src/devices/cpu/cp1610/cp1610.cpp
index a05bbbc0d49..f882d4a73ac 100644
--- a/src/devices/cpu/cp1610/cp1610.cpp
+++ b/src/devices/cpu/cp1610/cp1610.cpp
@@ -3406,7 +3406,7 @@ void cp1610_cpu_device::state_string_export(const device_state_entry &entry, std
switch (entry.index())
{
case STATE_GENFLAGS:
- strprintf(str, "%c%c%c%c",
+ str = string_format("%c%c%c%c",
m_flags & 0x80 ? 'S':'.',
m_flags & 0x40 ? 'Z':'.',
m_flags & 0x20 ? 'V':'.',
diff --git a/src/devices/cpu/cubeqcpu/cubeqcpu.cpp b/src/devices/cpu/cubeqcpu/cubeqcpu.cpp
index a657a23680e..b042b8de8b5 100644
--- a/src/devices/cpu/cubeqcpu/cubeqcpu.cpp
+++ b/src/devices/cpu/cubeqcpu/cubeqcpu.cpp
@@ -352,9 +352,10 @@ void cquestrot_cpu_device::state_string_export(const device_state_entry &entry,
switch (entry.index())
{
case STATE_GENFLAGS:
- strprintf(str, "%c%c%c", m_cflag ? 'C' : '.',
- m_vflag ? 'V' : '.',
- m_f ? '.' : 'Z');
+ str = string_format("%c%c%c",
+ m_cflag ? 'C' : '.',
+ m_vflag ? 'V' : '.',
+ m_f ? '.' : 'Z');
break;
}
}
@@ -476,10 +477,11 @@ void cquestlin_cpu_device::state_string_export(const device_state_entry &entry,
switch (entry.index())
{
case STATE_GENFLAGS:
- strprintf(str, "%c%c%c|%cG", m_cflag ? 'C' : '.',
- m_vflag ? 'V' : '.',
- m_f ? '.' : 'Z',
- ( m_clkcnt & 3 ) ? 'B' : 'F');
+ str = string_format("%c%c%c|%cG",
+ m_cflag ? 'C' : '.',
+ m_vflag ? 'V' : '.',
+ m_f ? '.' : 'Z',
+ ( m_clkcnt & 3 ) ? 'B' : 'F');
break;
}
}
diff --git a/src/devices/cpu/drcbec.cpp b/src/devices/cpu/drcbec.cpp
index 5b494c947f3..8736a2b6703 100644
--- a/src/devices/cpu/drcbec.cpp
+++ b/src/devices/cpu/drcbec.cpp
@@ -12,10 +12,7 @@
#include "debugger.h"
#include "drcbec.h"
-#ifdef _MSC_VER
-#include <float.h>
-#define isnan _isnan
-#endif
+#include <cmath>
using namespace uml;
@@ -1898,7 +1895,7 @@ int drcbe_c::execute(code_handle &entry)
break;
case MAKE_OPCODE_SHORT(OP_FCMP, 4, 1): // FSCMP src1,src2
- if (isnan(FSPARAM0) || isnan(FSPARAM1))
+ if (std::isnan(FSPARAM0) || std::isnan(FSPARAM1))
flags = FLAG_U;
else
flags = (FSPARAM0 < FSPARAM1) | ((FSPARAM0 == FSPARAM1) << 2);
@@ -2037,7 +2034,7 @@ int drcbe_c::execute(code_handle &entry)
break;
case MAKE_OPCODE_SHORT(OP_FCMP, 8, 1): // FDCMP src1,src2
- if (isnan(FDPARAM0) || isnan(FDPARAM1))
+ if (std::isnan(FDPARAM0) || std::isnan(FDPARAM1))
flags = FLAG_U;
else
flags = (FDPARAM0 < FDPARAM1) | ((FDPARAM0 == FDPARAM1) << 2);
diff --git a/src/devices/cpu/drcbex64.cpp b/src/devices/cpu/drcbex64.cpp
index 034f06def80..b9583123af0 100644
--- a/src/devices/cpu/drcbex64.cpp
+++ b/src/devices/cpu/drcbex64.cpp
@@ -806,7 +806,7 @@ void drcbe_x64::generate(drcuml_block &block, const instruction *instlist, UINT3
if (inst.opcode() == OP_HANDLE)
blockname = inst.param(0).handle().string();
else if (inst.opcode() == OP_HASH)
- blockname = strformat("Code: mode=%d PC=%08X", (UINT32)inst.param(0).immediate(), (offs_t)inst.param(1).immediate()).c_str();
+ blockname = string_format("Code: mode=%d PC=%08X", (UINT32)inst.param(0).immediate(), (offs_t)inst.param(1).immediate()).c_str();
}
// generate code
diff --git a/src/devices/cpu/drcbex86.cpp b/src/devices/cpu/drcbex86.cpp
index 3ca840e1c6f..be63ac1e869 100644
--- a/src/devices/cpu/drcbex86.cpp
+++ b/src/devices/cpu/drcbex86.cpp
@@ -789,7 +789,7 @@ void drcbe_x86::generate(drcuml_block &block, const instruction *instlist, UINT3
if (inst.opcode() == OP_HANDLE)
blockname = inst.param(0).handle().string();
else if (inst.opcode() == OP_HASH)
- blockname = strformat("Code: mode=%d PC=%08X", (UINT32)inst.param(0).immediate(), (offs_t)inst.param(1).immediate()).c_str();
+ blockname = string_format("Code: mode=%d PC=%08X", (UINT32)inst.param(0).immediate(), (offs_t)inst.param(1).immediate()).c_str();
}
// generate code
diff --git a/src/devices/cpu/drcuml.cpp b/src/devices/cpu/drcuml.cpp
index 3bbd610cfa9..f52234e6ca4 100644
--- a/src/devices/cpu/drcuml.cpp
+++ b/src/devices/cpu/drcuml.cpp
@@ -525,7 +525,7 @@ const char *drcuml_block::get_comment_text(const instruction &inst, std::string
// mapvars comment about their values
else if (inst.opcode() == OP_MAPVAR) {
- strprintf(comment,"m%d = $%X", (int)inst.param(0).mapvar() - MAPVAR_M0, (UINT32)inst.param(1).immediate());
+ comment = string_format("m%d = $%X", (int)inst.param(0).mapvar() - MAPVAR_M0, (UINT32)inst.param(1).immediate());
return comment.c_str();
}
diff --git a/src/devices/cpu/dsp16/dsp16.cpp b/src/devices/cpu/dsp16/dsp16.cpp
index 8b97ce4c064..a5e4b9b03b8 100644
--- a/src/devices/cpu/dsp16/dsp16.cpp
+++ b/src/devices/cpu/dsp16/dsp16.cpp
@@ -218,105 +218,105 @@ void dsp16_device::state_string_export(const device_state_entry &entry, std::str
{
switch (entry.index())
{
- case STATE_GENFLAGS:
- strprintf(str, "(below)");
- break;
+ case STATE_GENFLAGS:
+ str = "(below)";
+ break;
- case DSP16_AUC:
+ case DSP16_AUC:
{
std::string alignString;
const UINT8 align = m_auc & 0x03;
switch (align)
{
- case 0x00: strprintf(alignString,"xy"); break;
- case 0x01: strprintf(alignString,"/4"); break;
- case 0x02: strprintf(alignString,"x4"); break;
- case 0x03: strprintf(alignString,",,"); break;
+ case 0x00: alignString = "xy"; break;
+ case 0x01: alignString = "/4"; break;
+ case 0x02: alignString = "x4"; break;
+ case 0x03: alignString = ",,"; break;
}
- strprintf(str, "%c%c%c%c%c%s",
- m_auc & 0x40 ? 'Y':'.',
- m_auc & 0x20 ? '1':'.',
- m_auc & 0x10 ? '0':'.',
- m_auc & 0x08 ? '1':'.',
- m_auc & 0x04 ? '0':'.',
- alignString.c_str());
- break;
+ str = string_format("%c%c%c%c%c%s",
+ m_auc & 0x40 ? 'Y':'.',
+ m_auc & 0x20 ? '1':'.',
+ m_auc & 0x10 ? '0':'.',
+ m_auc & 0x08 ? '1':'.',
+ m_auc & 0x04 ? '0':'.',
+ alignString);
}
-
- case DSP16_PSW:
- strprintf(str, "%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c",
- m_psw & 0x8000 ? 'M':'.',
- m_psw & 0x4000 ? 'E':'.',
- m_psw & 0x2000 ? 'L':'.',
- m_psw & 0x1000 ? 'V':'.',
- m_psw & 0x0800 ? ',':',',
- m_psw & 0x0400 ? ',':',',
- m_psw & 0x0200 ? 'O':'.',
- m_psw & 0x0100 ? '1':'.',
- m_psw & 0x0080 ? '1':'.',
- m_psw & 0x0040 ? '1':'.',
- m_psw & 0x0020 ? '1':'.',
- m_psw & 0x0010 ? 'O':'.',
- m_psw & 0x0008 ? '1':'.',
- m_psw & 0x0004 ? '1':'.',
- m_psw & 0x0002 ? '1':'.',
- m_psw & 0x0001 ? '1':'.');
- break;
-
- case DSP16_PIOC:
+ break;
+
+ case DSP16_PSW:
+ str = string_format("%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c",
+ m_psw & 0x8000 ? 'M':'.',
+ m_psw & 0x4000 ? 'E':'.',
+ m_psw & 0x2000 ? 'L':'.',
+ m_psw & 0x1000 ? 'V':'.',
+ m_psw & 0x0800 ? ',':',',
+ m_psw & 0x0400 ? ',':',',
+ m_psw & 0x0200 ? 'O':'.',
+ m_psw & 0x0100 ? '1':'.',
+ m_psw & 0x0080 ? '1':'.',
+ m_psw & 0x0040 ? '1':'.',
+ m_psw & 0x0020 ? '1':'.',
+ m_psw & 0x0010 ? 'O':'.',
+ m_psw & 0x0008 ? '1':'.',
+ m_psw & 0x0004 ? '1':'.',
+ m_psw & 0x0002 ? '1':'.',
+ m_psw & 0x0001 ? '1':'.');
+ break;
+
+ case DSP16_PIOC:
{
std::string strobeString;
const UINT8 strobe = (m_pioc & 0x6000) >> 13;
switch (strobe)
{
- case 0x00: strprintf(strobeString, "1T"); break;
- case 0x01: strprintf(strobeString, "2T"); break;
- case 0x02: strprintf(strobeString, "3T"); break;
- case 0x03: strprintf(strobeString, "4T"); break;
+ case 0x00: strobeString = "1T"; break;
+ case 0x01: strobeString = "2T"; break;
+ case 0x02: strobeString = "3T"; break;
+ case 0x03: strobeString = "4T"; break;
}
- strprintf(str, "%c%s%c%c%c%c%c%c%c%c%c%c%c%c%c",
- m_pioc & 0x8000 ? 'I':'.',
- strobeString.c_str(),
- m_pioc & 0x1000 ? 'O':'I',
- m_pioc & 0x0800 ? 'O':'I',
- m_pioc & 0x0400 ? 'S':'.',
- m_pioc & 0x0200 ? 'I':'.',
- m_pioc & 0x0100 ? 'O':'.',
- m_pioc & 0x0080 ? 'P':'.',
- m_pioc & 0x0040 ? 'P':'.',
- m_pioc & 0x0020 ? 'I':'.',
- m_pioc & 0x0010 ? 'I':'.',
- m_pioc & 0x0008 ? 'O':'.',
- m_pioc & 0x0004 ? 'P':'.',
- m_pioc & 0x0002 ? 'P':'.',
- m_pioc & 0x0001 ? 'I':'.');
- break;
+ str = string_format("%c%s%c%c%c%c%c%c%c%c%c%c%c%c%c",
+ m_pioc & 0x8000 ? 'I':'.',
+ strobeString,
+ m_pioc & 0x1000 ? 'O':'I',
+ m_pioc & 0x0800 ? 'O':'I',
+ m_pioc & 0x0400 ? 'S':'.',
+ m_pioc & 0x0200 ? 'I':'.',
+ m_pioc & 0x0100 ? 'O':'.',
+ m_pioc & 0x0080 ? 'P':'.',
+ m_pioc & 0x0040 ? 'P':'.',
+ m_pioc & 0x0020 ? 'I':'.',
+ m_pioc & 0x0010 ? 'I':'.',
+ m_pioc & 0x0008 ? 'O':'.',
+ m_pioc & 0x0004 ? 'P':'.',
+ m_pioc & 0x0002 ? 'P':'.',
+ m_pioc & 0x0001 ? 'I':'.');
}
+ break;
- // Placeholder for a better view later (TODO)
- case DSP16_SIOC:
+ // Placeholder for a better view later (TODO)
+ case DSP16_SIOC:
{
std::string clkString;
const UINT8 clk = (m_sioc & 0x0180) >> 7;
switch (clk)
{
- case 0x00: strprintf(clkString, "/4"); break;
- case 0x01: strprintf(clkString, "12"); break;
- case 0x02: strprintf(clkString, "16"); break;
- case 0x03: strprintf(clkString, "20"); break;
+ case 0x00: clkString = "/4"; break;
+ case 0x01: clkString = "12"; break;
+ case 0x02: clkString = "16"; break;
+ case 0x03: clkString = "20"; break;
}
- strprintf(str, "%c%s%c%c%c%c%c%c%c",
- m_sioc & 0x0200 ? 'I':'O',
- clkString.c_str(),
- m_sioc & 0x0040 ? 'L':'M',
- m_sioc & 0x0020 ? 'I':'O',
- m_sioc & 0x0010 ? 'I':'O',
- m_sioc & 0x0008 ? 'I':'O',
- m_sioc & 0x0004 ? 'I':'O',
- m_sioc & 0x0002 ? '2':'1',
- m_sioc & 0x0001 ? '2':'1');
- break;
+ str = string_format("%c%s%c%c%c%c%c%c%c",
+ m_sioc & 0x0200 ? 'I':'O',
+ clkString,
+ m_sioc & 0x0040 ? 'L':'M',
+ m_sioc & 0x0020 ? 'I':'O',
+ m_sioc & 0x0010 ? 'I':'O',
+ m_sioc & 0x0008 ? 'I':'O',
+ m_sioc & 0x0004 ? 'I':'O',
+ m_sioc & 0x0002 ? '2':'1',
+ m_sioc & 0x0001 ? '2':'1');
}
+ break;
}
}
diff --git a/src/devices/cpu/dsp16/dsp16dis.cpp b/src/devices/cpu/dsp16/dsp16dis.cpp
index 2e144df03af..6b2de29a79c 100644
--- a/src/devices/cpu/dsp16/dsp16dis.cpp
+++ b/src/devices/cpu/dsp16/dsp16dis.cpp
@@ -5,29 +5,27 @@
std::string disasmF1Field(const UINT8& F1, const UINT8& D, const UINT8& S)
{
- std::string ret = "";
switch (F1)
{
- case 0x00: strprintf(ret, "a%d = p, p = x*y", D); break;
- case 0x01: strprintf(ret, "a%d = a%d + p, p = x*y", D, S); break;
- case 0x02: strprintf(ret, "p = x*y"); break;
- case 0x03: strprintf(ret, "a%d = a%d - p, p = x*y", D, S); break;
- case 0x04: strprintf(ret, "a%d = p", D); break;
- case 0x05: strprintf(ret, "a%d = a%d + p", D, S); break;
- case 0x06: strprintf(ret, "NOP"); break;
- case 0x07: strprintf(ret, "a%d = a%d - p", D, S); break;
- case 0x08: strprintf(ret, "a%d = a%d | y", D, S); break;
- case 0x09: strprintf(ret, "a%d = a%d ^ y", D, S); break;
- case 0x0a: strprintf(ret, "a%d & y", S); break;
- case 0x0b: strprintf(ret, "a%d - y", S); break;
- case 0x0c: strprintf(ret, "a%d = y", D); break;
- case 0x0d: strprintf(ret, "a%d = a%d + y", D, S); break;
- case 0x0e: strprintf(ret, "a%d = a%d & y", D, S); break;
- case 0x0f: strprintf(ret, "a%d = a%d - y", D, S); break;
+ case 0x00: return string_format("a%u = p, p = x*y", D); break;
+ case 0x01: return string_format("a%u = a%u + p, p = x*y", D, S); break;
+ case 0x02: return string_format("p = x*y"); break;
+ case 0x03: return string_format("a%u = a%u - p, p = x*y", D, S); break;
+ case 0x04: return string_format("a%u = p", D); break;
+ case 0x05: return string_format("a%u = a%u + p", D, S); break;
+ case 0x06: return string_format("NOP"); break;
+ case 0x07: return string_format("a%u = a%u - p", D, S); break;
+ case 0x08: return string_format("a%u = a%u | y", D, S); break;
+ case 0x09: return string_format("a%u = a%u ^ y", D, S); break;
+ case 0x0a: return string_format("a%u & y", S); break;
+ case 0x0b: return string_format("a%u - y", S); break;
+ case 0x0c: return string_format("a%u = y", D); break;
+ case 0x0d: return string_format("a%u = a%u + y", D, S); break;
+ case 0x0e: return string_format("a%u = a%u & y", D, S); break;
+ case 0x0f: return string_format("a%u = a%u - y", D, S); break;
default: return "UNKNOWN";
}
- return ret;
}
std::string disasmYField(const UINT8& Y)
@@ -95,23 +93,23 @@ std::string disasmF2Field(const UINT8& F2, const UINT8& D, const UINT8& S)
std::string ret = "";
switch (F2)
{
- case 0x00: strprintf(ret, "a%d = a%d >> 1", D, S); break;
- case 0x01: strprintf(ret, "a%d = a%d << 1", D, S); break;
- case 0x02: strprintf(ret, "a%d = a%d >> 4", D, S); break;
- case 0x03: strprintf(ret, "a%d = a%d << 4", D, S); break;
- case 0x04: strprintf(ret, "a%d = a%d >> 8", D, S); break;
- case 0x05: strprintf(ret, "a%d = a%d << 8", D, S); break;
- case 0x06: strprintf(ret, "a%d = a%d >> 16", D, S); break;
- case 0x07: strprintf(ret, "a%d = a%d << 16", D, S); break;
-
- case 0x08: strprintf(ret, "a%d = p", D); break;
- case 0x09: strprintf(ret, "a%dh = a%dh + 1", D, S); break;
- case 0x0a: strprintf(ret, "RESERVED"); break;
- case 0x0b: strprintf(ret, "a%d = rnd(a%d)", D, S); break;
- case 0x0c: strprintf(ret, "a%d = y", D); break;
- case 0x0d: strprintf(ret, "a%d = a%d + 1", D, S); break;
- case 0x0e: strprintf(ret, "a%d = a%d", D, S); break;
- case 0x0f: strprintf(ret, "a%d = -a%d", D, S); break;
+ case 0x00: return string_format("a%u = a%u >> 1", D, S); break;
+ case 0x01: return string_format("a%u = a%u << 1", D, S); break;
+ case 0x02: return string_format("a%u = a%u >> 4", D, S); break;
+ case 0x03: return string_format("a%u = a%u << 4", D, S); break;
+ case 0x04: return string_format("a%u = a%u >> 8", D, S); break;
+ case 0x05: return string_format("a%u = a%u << 8", D, S); break;
+ case 0x06: return string_format("a%u = a%u >> 16", D, S); break;
+ case 0x07: return string_format("a%u = a%u << 16", D, S); break;
+
+ case 0x08: return string_format("a%u = p", D); break;
+ case 0x09: return string_format("a%uh = a%uh + 1", D, S); break;
+ case 0x0a: return string_format("RESERVED"); break;
+ case 0x0b: return string_format("a%u = rnd(a%u)", D, S); break;
+ case 0x0c: return string_format("a%u = y", D); break;
+ case 0x0d: return string_format("a%u = a%u + 1", D, S); break;
+ case 0x0e: return string_format("a%u = a%u", D, S); break;
+ case 0x0f: return string_format("a%u = -a%u", D, S); break;
default: return "UNKNOWN";
}
diff --git a/src/devices/cpu/dsp32/dsp32.cpp b/src/devices/cpu/dsp32/dsp32.cpp
index 98640f7d1b4..dbd8e62aef7 100644
--- a/src/devices/cpu/dsp32/dsp32.cpp
+++ b/src/devices/cpu/dsp32/dsp32.cpp
@@ -200,7 +200,7 @@ void dsp32c_device::device_start()
state_add(STATE_GENFLAGS, "GENFLAGS", m_iotemp).callimport().callexport().formatstr("%6s").noshow();
state_add(DSP32_PC, "PC", m_r[15]).mask(0xffffff);
for (int regnum = 0; regnum <= 14; regnum++)
- state_add(DSP32_R0 + regnum, strformat("R%d", regnum).c_str(), m_r[regnum]).mask(0xffffff);
+ state_add(DSP32_R0 + regnum, string_format("R%d", regnum).c_str(), m_r[regnum]).mask(0xffffff);
state_add(DSP32_R15, "R15", m_r[17]).mask(0xffffff);
state_add(DSP32_R16, "R16", m_r[18]).mask(0xffffff);
state_add(DSP32_R17, "R17", m_r[19]).mask(0xffffff);
@@ -373,7 +373,7 @@ void dsp32c_device::state_string_export(const device_state_entry &entry, std::st
switch (entry.index())
{
case STATE_GENFLAGS:
- strprintf(str, "%c%c%c%c%c%c%c%c",
+ str = string_format("%c%c%c%c%c%c%c%c",
NFLAG ? 'N':'.',
ZFLAG ? 'Z':'.',
UFLAG ? 'U':'.',
@@ -388,7 +388,7 @@ void dsp32c_device::state_string_export(const device_state_entry &entry, std::st
case DSP32_A1:
case DSP32_A2:
case DSP32_A3:
- strprintf(str, "%8g", *(double *)entry.dataptr());
+ str = string_format("%8g", *(double *)entry.dataptr());
break;
}
}
diff --git a/src/devices/cpu/dsp56k/dsp56k.cpp b/src/devices/cpu/dsp56k/dsp56k.cpp
index 7c4b7abd163..d3cf3804fa8 100644
--- a/src/devices/cpu/dsp56k/dsp56k.cpp
+++ b/src/devices/cpu/dsp56k/dsp56k.cpp
@@ -347,7 +347,7 @@ void dsp56k_device::state_string_export(const device_state_entry &entry, std::st
switch (entry.index())
{
case STATE_GENFLAGS:
- strprintf(str, "%s%s %s%s%s%s%s%s%s%s %s%s",
+ str = string_format("%s%s %s%s%s%s%s%s%s%s %s%s",
/* Status Register */
LF_bit(cpustate) ? "L" : ".",
FV_bit(cpustate) ? "F" : ".",
@@ -367,19 +367,19 @@ void dsp56k_device::state_string_export(const device_state_entry &entry, std::st
break;
case DSP56K_X:
- strprintf(str, "%04x %04x", X1, X0);
+ str = string_format("%04x %04x", X1, X0);
break;
case DSP56K_Y:
- strprintf(str, "%04x %04x", Y1, Y0);
+ str = string_format("%04x %04x", Y1, Y0);
break;
case DSP56K_A:
- strprintf(str, "%02x %04x %04x", A2, A1, A0);
+ str = string_format("%02x %04x %04x", A2, A1, A0);
break;
case DSP56K_B:
- strprintf(str, "%02x %04x %04x", B2, B1, B0);
+ str = string_format("%02x %04x %04x", B2, B1, B0);
break;
}
}
diff --git a/src/devices/cpu/e0c6200/e0c6200.cpp b/src/devices/cpu/e0c6200/e0c6200.cpp
index 0b87b9eaa7d..780f4e77a04 100644
--- a/src/devices/cpu/e0c6200/e0c6200.cpp
+++ b/src/devices/cpu/e0c6200/e0c6200.cpp
@@ -30,7 +30,7 @@ void e0c6200_cpu_device::state_string_export(const device_state_entry &entry, st
switch (entry.index())
{
case STATE_GENFLAGS:
- strprintf(str, "%c%c%c%c",
+ str = string_format("%c%c%c%c",
(m_f & I_FLAG) ? 'I':'i',
(m_f & D_FLAG) ? 'D':'d',
(m_f & Z_FLAG) ? 'Z':'z',
diff --git a/src/devices/cpu/e132xs/e132xs.cpp b/src/devices/cpu/e132xs/e132xs.cpp
index afa0da8d962..8103ce6f7c2 100644
--- a/src/devices/cpu/e132xs/e132xs.cpp
+++ b/src/devices/cpu/e132xs/e132xs.cpp
@@ -1853,7 +1853,7 @@ void hyperstone_device::state_string_export(const device_state_entry &entry, std
switch (entry.index())
{
case STATE_GENFLAGS:
- strprintf(str, "%c%c%c%c%c%c%c%c%c%c%c%c FTE:%X FRM:%X ILC:%d FL:%d FP:%d",
+ str = string_format("%c%c%c%c%c%c%c%c%c%c%c%c FTE:%X FRM:%X ILC:%d FL:%d FP:%d",
GET_S ? 'S':'.',
GET_P ? 'P':'.',
GET_T ? 'T':'.',
diff --git a/src/devices/cpu/esrip/esrip.cpp b/src/devices/cpu/esrip/esrip.cpp
index a788c2a3ab3..3a41297cefd 100644
--- a/src/devices/cpu/esrip/esrip.cpp
+++ b/src/devices/cpu/esrip/esrip.cpp
@@ -355,7 +355,7 @@ void esrip_device::state_string_export(const device_state_entry &entry, std::str
switch (entry.index())
{
case STATE_GENFLAGS:
- strprintf(str, "%c%c%c%c%c%c%c%c%c",
+ str = string_format("%c%c%c%c%c%c%c%c%c",
(m_status & 0x80) ? '3' : '.',
(m_status & 0x40) ? '2' : '.',
(m_status & 0x20) ? '1' : '.',
diff --git a/src/devices/cpu/f8/f8.cpp b/src/devices/cpu/f8/f8.cpp
index 2bc875e12ee..d19274ed202 100644
--- a/src/devices/cpu/f8/f8.cpp
+++ b/src/devices/cpu/f8/f8.cpp
@@ -2050,12 +2050,12 @@ void f8_cpu_device::state_string_export(const device_state_entry &entry, std::st
switch (entry.index())
{
case STATE_GENFLAGS:
- strprintf(str, "%c%c%c%c%c",
- m_w & 0x10 ? 'I':'.',
- m_w & 0x08 ? 'O':'.',
- m_w & 0x04 ? 'Z':'.',
- m_w & 0x02 ? 'C':'.',
- m_w & 0x01 ? 'S':'.');
+ str = string_format("%c%c%c%c%c",
+ m_w & 0x10 ? 'I':'.',
+ m_w & 0x08 ? 'O':'.',
+ m_w & 0x04 ? 'Z':'.',
+ m_w & 0x02 ? 'C':'.',
+ m_w & 0x01 ? 'S':'.');
break;
}
}
diff --git a/src/devices/cpu/g65816/g65816.cpp b/src/devices/cpu/g65816/g65816.cpp
index 47b0e035798..37bd68c9d00 100644
--- a/src/devices/cpu/g65816/g65816.cpp
+++ b/src/devices/cpu/g65816/g65816.cpp
@@ -957,7 +957,7 @@ void g65816_device::state_string_export(const device_state_entry &entry, std::st
switch (entry.index())
{
case STATE_GENFLAGS:
- strprintf(str, "%c%c%c%c%c%c%c%c",
+ str = string_format("%c%c%c%c%c%c%c%c",
m_flag_n & NFLAG_SET ? 'N':'.',
m_flag_v & VFLAG_SET ? 'V':'.',
m_flag_m & MFLAG_SET ? 'M':'.',
diff --git a/src/devices/cpu/h6280/h6280.cpp b/src/devices/cpu/h6280/h6280.cpp
index ec0b62b5076..d8d16f6946c 100644
--- a/src/devices/cpu/h6280/h6280.cpp
+++ b/src/devices/cpu/h6280/h6280.cpp
@@ -2196,7 +2196,7 @@ void h6280_device::state_string_export(const device_state_entry &entry, std::str
switch (entry.index())
{
case STATE_GENFLAGS:
- strprintf(str, "%c%c%c%c%c%c%c%c",
+ str = string_format("%c%c%c%c%c%c%c%c",
(m_p & 0x80) ? 'N':'.',
(m_p & 0x40) ? 'V':'.',
(m_p & 0x20) ? 'R':'.',
diff --git a/src/devices/cpu/h8/h8.cpp b/src/devices/cpu/h8/h8.cpp
index ba8b853e9ec..36da1c92f17 100644
--- a/src/devices/cpu/h8/h8.cpp
+++ b/src/devices/cpu/h8/h8.cpp
@@ -221,27 +221,27 @@ void h8_device::state_string_export(const device_state_entry &entry, std::string
switch(entry.index()) {
case STATE_GENFLAGS:
if(has_exr)
- strprintf(str, "%c%c %c%c%c%c%c%c%c%c",
- (EXR & EXR_T) ? 'T' : '-',
- '0' + (EXR & EXR_I),
- (CCR & F_I) ? 'I' : '-',
- (CCR & F_UI) ? 'u' : '-',
- (CCR & F_H) ? 'H' : '-',
- (CCR & F_U) ? 'U' : '-',
- (CCR & F_N) ? 'N' : '-',
- (CCR & F_Z) ? 'Z' : '-',
- (CCR & F_V) ? 'V' : '-',
- (CCR & F_C) ? 'C' : '-');
+ str = string_format("%c%c %c%c%c%c%c%c%c%c",
+ (EXR & EXR_T) ? 'T' : '-',
+ '0' + (EXR & EXR_I),
+ (CCR & F_I) ? 'I' : '-',
+ (CCR & F_UI) ? 'u' : '-',
+ (CCR & F_H) ? 'H' : '-',
+ (CCR & F_U) ? 'U' : '-',
+ (CCR & F_N) ? 'N' : '-',
+ (CCR & F_Z) ? 'Z' : '-',
+ (CCR & F_V) ? 'V' : '-',
+ (CCR & F_C) ? 'C' : '-');
else
- strprintf(str, "%c%c%c%c%c%c%c%c",
- (CCR & F_I) ? 'I' : '-',
- (CCR & F_UI) ? 'u' : '-',
- (CCR & F_H) ? 'H' : '-',
- (CCR & F_U) ? 'U' : '-',
- (CCR & F_N) ? 'N' : '-',
- (CCR & F_Z) ? 'Z' : '-',
- (CCR & F_V) ? 'V' : '-',
- (CCR & F_C) ? 'C' : '-');
+ str = string_format("%c%c%c%c%c%c%c%c",
+ (CCR & F_I) ? 'I' : '-',
+ (CCR & F_UI) ? 'u' : '-',
+ (CCR & F_H) ? 'H' : '-',
+ (CCR & F_U) ? 'U' : '-',
+ (CCR & F_N) ? 'N' : '-',
+ (CCR & F_Z) ? 'Z' : '-',
+ (CCR & F_V) ? 'V' : '-',
+ (CCR & F_C) ? 'C' : '-');
break;
case H8_R0:
case H8_R1:
@@ -252,7 +252,7 @@ void h8_device::state_string_export(const device_state_entry &entry, std::string
case H8_R6:
case H8_R7: {
int r = entry.index() - H8_R0;
- strprintf(str, "%04x %04x", R[r + 8], R[r]);
+ str = string_format("%04x %04x", R[r + 8], R[r]);
break;
}
}
diff --git a/src/devices/cpu/hcd62121/hcd62121.cpp b/src/devices/cpu/hcd62121/hcd62121.cpp
index e6104627990..0711868a55b 100644
--- a/src/devices/cpu/hcd62121/hcd62121.cpp
+++ b/src/devices/cpu/hcd62121/hcd62121.cpp
@@ -368,11 +368,11 @@ void hcd62121_cpu_device::state_string_export(const device_state_entry &entry, s
switch (entry.index())
{
case STATE_GENPC:
- strprintf(str, "%06X", (m_cseg << 16) | m_ip);
+ str = string_format("%06X", (m_cseg << 16) | m_ip);
break;
case STATE_GENFLAGS:
- strprintf(str, "%s-%s-%s-%c-%c",
+ str = string_format("%s-%s-%s-%c-%c",
m_f & _FLAG_ZH ? "ZH":"__",
m_f & _FLAG_CL ? "CL":"__",
m_f & _FLAG_ZL ? "ZL":"__",
@@ -383,100 +383,100 @@ void hcd62121_cpu_device::state_string_export(const device_state_entry &entry, s
break;
case HCD62121_R00:
- strprintf(str, "%02X%02X%02X%02X", m_reg[0x00], m_reg[0x01], m_reg[0x02], m_reg[0x03]);
+ str = string_format("%02X%02X%02X%02X", m_reg[0x00], m_reg[0x01], m_reg[0x02], m_reg[0x03]);
break;
case HCD62121_R04:
- strprintf(str, "%02X%02X%02X%02X", m_reg[0x04], m_reg[0x05], m_reg[0x06], m_reg[0x07]);
+ str = string_format("%02X%02X%02X%02X", m_reg[0x04], m_reg[0x05], m_reg[0x06], m_reg[0x07]);
break;
case HCD62121_R08:
- strprintf(str, "%02X%02X%02X%02X", m_reg[0x08], m_reg[0x09], m_reg[0x0A], m_reg[0x0B]);
+ str = string_format("%02X%02X%02X%02X", m_reg[0x08], m_reg[0x09], m_reg[0x0A], m_reg[0x0B]);
break;
case HCD62121_R0C:
- strprintf(str, "%02X%02X%02X%02X", m_reg[0x0C], m_reg[0x0D], m_reg[0x0E], m_reg[0x0F]);
+ str = string_format("%02X%02X%02X%02X", m_reg[0x0C], m_reg[0x0D], m_reg[0x0E], m_reg[0x0F]);
break;
case HCD62121_R10:
- strprintf(str, "%02X%02X%02X%02X", m_reg[0x10], m_reg[0x11], m_reg[0x12], m_reg[0x13]);
+ str = string_format("%02X%02X%02X%02X", m_reg[0x10], m_reg[0x11], m_reg[0x12], m_reg[0x13]);
break;
case HCD62121_R14:
- strprintf(str, "%02X%02X%02X%02X", m_reg[0x14], m_reg[0x15], m_reg[0x16], m_reg[0x17]);
+ str = string_format("%02X%02X%02X%02X", m_reg[0x14], m_reg[0x15], m_reg[0x16], m_reg[0x17]);
break;
case HCD62121_R18:
- strprintf(str, "%02X%02X%02X%02X", m_reg[0x18], m_reg[0x19], m_reg[0x1A], m_reg[0x1B]);
+ str = string_format("%02X%02X%02X%02X", m_reg[0x18], m_reg[0x19], m_reg[0x1A], m_reg[0x1B]);
break;
case HCD62121_R1C:
- strprintf(str, "%02X%02X%02X%02X", m_reg[0x1C], m_reg[0x1D], m_reg[0x1E], m_reg[0x1F]);
+ str = string_format("%02X%02X%02X%02X", m_reg[0x1C], m_reg[0x1D], m_reg[0x1E], m_reg[0x1F]);
break;
case HCD62121_R20:
- strprintf(str, "%02X%02X%02X%02X", m_reg[0x20], m_reg[0x21], m_reg[0x22], m_reg[0x23]);
+ str = string_format("%02X%02X%02X%02X", m_reg[0x20], m_reg[0x21], m_reg[0x22], m_reg[0x23]);
break;
case HCD62121_R24:
- strprintf(str, "%02X%02X%02X%02X", m_reg[0x24], m_reg[0x25], m_reg[0x26], m_reg[0x27]);
+ str = string_format("%02X%02X%02X%02X", m_reg[0x24], m_reg[0x25], m_reg[0x26], m_reg[0x27]);
break;
case HCD62121_R28:
- strprintf(str, "%02X%02X%02X%02X", m_reg[0x28], m_reg[0x29], m_reg[0x2A], m_reg[0x2B]);
+ str = string_format("%02X%02X%02X%02X", m_reg[0x28], m_reg[0x29], m_reg[0x2A], m_reg[0x2B]);
break;
case HCD62121_R2C:
- strprintf(str, "%02X%02X%02X%02X", m_reg[0x2C], m_reg[0x2D], m_reg[0x2E], m_reg[0x2F]);
+ str = string_format("%02X%02X%02X%02X", m_reg[0x2C], m_reg[0x2D], m_reg[0x2E], m_reg[0x2F]);
break;
case HCD62121_R30:
- strprintf(str, "%02X%02X%02X%02X", m_reg[0x30], m_reg[0x31], m_reg[0x32], m_reg[0x33]);
+ str = string_format("%02X%02X%02X%02X", m_reg[0x30], m_reg[0x31], m_reg[0x32], m_reg[0x33]);
break;
case HCD62121_R34:
- strprintf(str, "%02X%02X%02X%02X", m_reg[0x34], m_reg[0x35], m_reg[0x36], m_reg[0x37]);
+ str = string_format("%02X%02X%02X%02X", m_reg[0x34], m_reg[0x35], m_reg[0x36], m_reg[0x37]);
break;
case HCD62121_R38:
- strprintf(str, "%02X%02X%02X%02X", m_reg[0x38], m_reg[0x39], m_reg[0x3A], m_reg[0x3B]);
+ str = string_format("%02X%02X%02X%02X", m_reg[0x38], m_reg[0x39], m_reg[0x3A], m_reg[0x3B]);
break;
case HCD62121_R3C:
- strprintf(str, "%02X%02X%02X%02X", m_reg[0x3C], m_reg[0x3D], m_reg[0x3E], m_reg[0x3F]);
+ str = string_format("%02X%02X%02X%02X", m_reg[0x3C], m_reg[0x3D], m_reg[0x3E], m_reg[0x3F]);
break;
case HCD62121_R40:
- strprintf(str, "%02X%02X%02X%02X", m_reg[0x40], m_reg[0x41], m_reg[0x42], m_reg[0x43]);
+ str = string_format("%02X%02X%02X%02X", m_reg[0x40], m_reg[0x41], m_reg[0x42], m_reg[0x43]);
break;
case HCD62121_R44:
- strprintf(str, "%02X%02X%02X%02X", m_reg[0x44], m_reg[0x45], m_reg[0x46], m_reg[0x47]);
+ str = string_format("%02X%02X%02X%02X", m_reg[0x44], m_reg[0x45], m_reg[0x46], m_reg[0x47]);
break;
case HCD62121_R48:
- strprintf(str, "%02X%02X%02X%02X", m_reg[0x48], m_reg[0x49], m_reg[0x4A], m_reg[0x4B]);
+ str = string_format("%02X%02X%02X%02X", m_reg[0x48], m_reg[0x49], m_reg[0x4A], m_reg[0x4B]);
break;
case HCD62121_R4C:
- strprintf(str, "%02X%02X%02X%02X", m_reg[0x4C], m_reg[0x4D], m_reg[0x4E], m_reg[0x4F]);
+ str = string_format("%02X%02X%02X%02X", m_reg[0x4C], m_reg[0x4D], m_reg[0x4E], m_reg[0x4F]);
break;
case HCD62121_R50:
- strprintf(str, "%02X%02X%02X%02X", m_reg[0x50], m_reg[0x51], m_reg[0x52], m_reg[0x53]);
+ str = string_format("%02X%02X%02X%02X", m_reg[0x50], m_reg[0x51], m_reg[0x52], m_reg[0x53]);
break;
case HCD62121_R54:
- strprintf(str, "%02X%02X%02X%02X", m_reg[0x54], m_reg[0x55], m_reg[0x56], m_reg[0x57]);
+ str = string_format("%02X%02X%02X%02X", m_reg[0x54], m_reg[0x55], m_reg[0x56], m_reg[0x57]);
break;
case HCD62121_R58:
- strprintf(str, "%02X%02X%02X%02X", m_reg[0x58], m_reg[0x59], m_reg[0x5A], m_reg[0x5B]);
+ str = string_format("%02X%02X%02X%02X", m_reg[0x58], m_reg[0x59], m_reg[0x5A], m_reg[0x5B]);
break;
case HCD62121_R5C:
- strprintf(str, "%02X%02X%02X%02X", m_reg[0x5C], m_reg[0x5D], m_reg[0x5E], m_reg[0x5F]);
+ str = string_format("%02X%02X%02X%02X", m_reg[0x5C], m_reg[0x5D], m_reg[0x5E], m_reg[0x5F]);
break;
case HCD62121_R60:
- strprintf(str, "%02X%02X%02X%02X", m_reg[0x60], m_reg[0x61], m_reg[0x62], m_reg[0x63]);
+ str = string_format("%02X%02X%02X%02X", m_reg[0x60], m_reg[0x61], m_reg[0x62], m_reg[0x63]);
break;
case HCD62121_R64:
- strprintf(str, "%02X%02X%02X%02X", m_reg[0x64], m_reg[0x65], m_reg[0x66], m_reg[0x67]);
+ str = string_format("%02X%02X%02X%02X", m_reg[0x64], m_reg[0x65], m_reg[0x66], m_reg[0x67]);
break;
case HCD62121_R68:
- strprintf(str, "%02X%02X%02X%02X", m_reg[0x68], m_reg[0x69], m_reg[0x6A], m_reg[0x6B]);
+ str = string_format("%02X%02X%02X%02X", m_reg[0x68], m_reg[0x69], m_reg[0x6A], m_reg[0x6B]);
break;
case HCD62121_R6C:
- strprintf(str, "%02X%02X%02X%02X", m_reg[0x6C], m_reg[0x6D], m_reg[0x6E], m_reg[0x6F]);
+ str = string_format("%02X%02X%02X%02X", m_reg[0x6C], m_reg[0x6D], m_reg[0x6E], m_reg[0x6F]);
break;
case HCD62121_R70:
- strprintf(str, "%02X%02X%02X%02X", m_reg[0x70], m_reg[0x71], m_reg[0x72], m_reg[0x73]);
+ str = string_format("%02X%02X%02X%02X", m_reg[0x70], m_reg[0x71], m_reg[0x72], m_reg[0x73]);
break;
case HCD62121_R74:
- strprintf(str, "%02X%02X%02X%02X", m_reg[0x74], m_reg[0x75], m_reg[0x76], m_reg[0x77]);
+ str = string_format("%02X%02X%02X%02X", m_reg[0x74], m_reg[0x75], m_reg[0x76], m_reg[0x77]);
break;
case HCD62121_R78:
- strprintf(str, "%02X%02X%02X%02X", m_reg[0x78], m_reg[0x79], m_reg[0x7A], m_reg[0x7B]);
+ str = string_format("%02X%02X%02X%02X", m_reg[0x78], m_reg[0x79], m_reg[0x7A], m_reg[0x7B]);
break;
case HCD62121_R7C:
- strprintf(str, "%02X%02X%02X%02X", m_reg[0x7C], m_reg[0x7D], m_reg[0x7E], m_reg[0x7F]);
+ str = string_format("%02X%02X%02X%02X", m_reg[0x7C], m_reg[0x7D], m_reg[0x7E], m_reg[0x7F]);
break;
}
}
diff --git a/src/devices/cpu/hd61700/hd61700.cpp b/src/devices/cpu/hd61700/hd61700.cpp
index 4e8d2c6590d..55cdaefcd6e 100644
--- a/src/devices/cpu/hd61700/hd61700.cpp
+++ b/src/devices/cpu/hd61700/hd61700.cpp
@@ -183,7 +183,7 @@ void hd61700_cpu_device::device_start()
for (int ireg=0; ireg<32; ireg++)
{
- state_add(HD61700_MAINREG + ireg, strformat("R%d", ireg).c_str(), m_regmain[ireg]).callimport().callexport().formatstr("%02X");
+ state_add(HD61700_MAINREG + ireg, string_format("R%d", ireg).c_str(), m_regmain[ireg]).callimport().callexport().formatstr("%02X");
}
state_add(STATE_GENPC, "curpc", m_curpc).callimport().callexport().formatstr("%8s").noshow();
@@ -275,7 +275,7 @@ void hd61700_cpu_device::state_string_export(const device_state_entry &entry, st
switch (entry.index())
{
case STATE_GENFLAGS:
- strprintf(str, "%c%c%c%c%c%c",
+ str = string_format("%c%c%c%c%c%c",
m_flags & FLAG_Z ? '.' : 'Z',
m_flags & FLAG_C ? 'C' : '.',
m_flags & FLAG_LZ ? '.' : 'L',
diff --git a/src/devices/cpu/hmcs40/hmcs40.cpp b/src/devices/cpu/hmcs40/hmcs40.cpp
index 58cd711f8da..4f78f3480f4 100644
--- a/src/devices/cpu/hmcs40/hmcs40.cpp
+++ b/src/devices/cpu/hmcs40/hmcs40.cpp
@@ -138,7 +138,7 @@ void hmcs40_cpu_device::state_string_export(const device_state_entry &entry, std
switch (entry.index())
{
case STATE_GENFLAGS:
- strprintf(str, "%c%c",
+ str = string_format("%c%c",
m_c ? 'C':'c',
m_s ? 'S':'s'
);
diff --git a/src/devices/cpu/hphybrid/hphybrid.cpp b/src/devices/cpu/hphybrid/hphybrid.cpp
index 14858af369b..44c29698cb1 100644
--- a/src/devices/cpu/hphybrid/hphybrid.cpp
+++ b/src/devices/cpu/hphybrid/hphybrid.cpp
@@ -619,7 +619,7 @@ UINT16 hp_hybrid_cpu_device::execute_one_sub(UINT16 opcode)
void hp_hybrid_cpu_device::state_string_export(const device_state_entry &entry, std::string &str) const
{
if (entry.index() == STATE_GENFLAGS) {
- strprintf(str, "%s %s %c %c",
+ str = string_format("%s %s %c %c",
BIT(m_flags , HPHYBRID_DB_BIT) ? "Db":"..",
BIT(m_flags , HPHYBRID_CB_BIT) ? "Cb":"..",
BIT(m_flags , HPHYBRID_O_BIT) ? 'O':'.',
diff --git a/src/devices/cpu/i386/i386.cpp b/src/devices/cpu/i386/i386.cpp
index 4f593de3dea..454f9004d61 100644
--- a/src/devices/cpu/i386/i386.cpp
+++ b/src/devices/cpu/i386/i386.cpp
@@ -3496,55 +3496,55 @@ void i386_device::state_string_export(const device_state_entry &entry, std::stri
switch (entry.index())
{
case STATE_GENFLAGS:
- strprintf(str, "%08X", get_flags());
+ str = string_format("%08X", get_flags());
break;
case X87_ST0:
- strprintf(str, "%f", fx80_to_double(ST(0)));
+ str = string_format("%f", fx80_to_double(ST(0)));
break;
case X87_ST1:
- strprintf(str, "%f", fx80_to_double(ST(1)));
+ str = string_format("%f", fx80_to_double(ST(1)));
break;
case X87_ST2:
- strprintf(str, "%f", fx80_to_double(ST(2)));
+ str = string_format("%f", fx80_to_double(ST(2)));
break;
case X87_ST3:
- strprintf(str, "%f", fx80_to_double(ST(3)));
+ str = string_format("%f", fx80_to_double(ST(3)));
break;
case X87_ST4:
- strprintf(str, "%f", fx80_to_double(ST(4)));
+ str = string_format("%f", fx80_to_double(ST(4)));
break;
case X87_ST5:
- strprintf(str, "%f", fx80_to_double(ST(5)));
+ str = string_format("%f", fx80_to_double(ST(5)));
break;
case X87_ST6:
- strprintf(str, "%f", fx80_to_double(ST(6)));
+ str = string_format("%f", fx80_to_double(ST(6)));
break;
case X87_ST7:
- strprintf(str, "%f", fx80_to_double(ST(7)));
+ str = string_format("%f", fx80_to_double(ST(7)));
break;
case SSE_XMM0:
- strprintf(str, "%08x%08x%08x%08x", XMM(0).d[3], XMM(0).d[2], XMM(0).d[1], XMM(0).d[0]);
+ str = string_format("%08x%08x%08x%08x", XMM(0).d[3], XMM(0).d[2], XMM(0).d[1], XMM(0).d[0]);
break;
case SSE_XMM1:
- strprintf(str, "%08x%08x%08x%08x", XMM(1).d[3], XMM(1).d[2], XMM(1).d[1], XMM(1).d[0]);
+ str = string_format("%08x%08x%08x%08x", XMM(1).d[3], XMM(1).d[2], XMM(1).d[1], XMM(1).d[0]);
break;
case SSE_XMM2:
- strprintf(str, "%08x%08x%08x%08x", XMM(2).d[3], XMM(2).d[2], XMM(2).d[1], XMM(2).d[0]);
+ str = string_format("%08x%08x%08x%08x", XMM(2).d[3], XMM(2).d[2], XMM(2).d[1], XMM(2).d[0]);
break;
case SSE_XMM3:
- strprintf(str, "%08x%08x%08x%08x", XMM(3).d[3], XMM(3).d[2], XMM(3).d[1], XMM(3).d[0]);
+ str = string_format("%08x%08x%08x%08x", XMM(3).d[3], XMM(3).d[2], XMM(3).d[1], XMM(3).d[0]);
break;
case SSE_XMM4:
- strprintf(str, "%08x%08x%08x%08x", XMM(4).d[3], XMM(4).d[2], XMM(4).d[1], XMM(4).d[0]);
+ str = string_format("%08x%08x%08x%08x", XMM(4).d[3], XMM(4).d[2], XMM(4).d[1], XMM(4).d[0]);
break;
case SSE_XMM5:
- strprintf(str, "%08x%08x%08x%08x", XMM(5).d[3], XMM(5).d[2], XMM(5).d[1], XMM(5).d[0]);
+ str = string_format("%08x%08x%08x%08x", XMM(5).d[3], XMM(5).d[2], XMM(5).d[1], XMM(5).d[0]);
break;
case SSE_XMM6:
- strprintf(str, "%08x%08x%08x%08x", XMM(6).d[3], XMM(6).d[2], XMM(6).d[1], XMM(6).d[0]);
+ str = string_format("%08x%08x%08x%08x", XMM(6).d[3], XMM(6).d[2], XMM(6).d[1], XMM(6).d[0]);
break;
case SSE_XMM7:
- strprintf(str, "%08x%08x%08x%08x", XMM(7).d[3], XMM(7).d[2], XMM(7).d[1], XMM(7).d[0]);
+ str = string_format("%08x%08x%08x%08x", XMM(7).d[3], XMM(7).d[2], XMM(7).d[1], XMM(7).d[0]);
break;
}
}
diff --git a/src/devices/cpu/i4004/i4004.cpp b/src/devices/cpu/i4004/i4004.cpp
index 371074238c9..e7a63564c59 100644
--- a/src/devices/cpu/i4004/i4004.cpp
+++ b/src/devices/cpu/i4004/i4004.cpp
@@ -416,19 +416,19 @@ void i4004_cpu_device::device_start()
{
/* set up the state table */
{
- state_add(I4004_PC, "PC", m_PC.w.l).mask(0x0fff);
- state_add(STATE_GENPC, "GENPC", m_PC.w.l).mask(0x0fff).noshow();
+ state_add(I4004_PC, "PC", m_PC.w.l).mask(0x0fff);
+ state_add(STATE_GENPC, "GENPC", m_PC.w.l).mask(0x0fff).noshow();
state_add(STATE_GENFLAGS, "GENFLAGS", m_flags).mask(0x0f).callimport().callexport().noshow().formatstr("%4s");
- state_add(I4004_A, "A", m_A).mask(0x0f);
+ state_add(I4004_A, "A", m_A).mask(0x0f);
for (int regnum = 0; regnum < 8; regnum++)
{
- state_add(I4004_R01 + regnum, strformat("R%X%X", regnum * 2, regnum * 2 + 1).c_str(), m_R[regnum]);
+ state_add(I4004_R01 + regnum, string_format("R%X%X", regnum * 2, regnum * 2 + 1).c_str(), m_R[regnum]);
}
for (int addrnum = 0; addrnum < 4; addrnum++)
{
- state_add(I4004_ADDR1 + addrnum, strformat("ADDR%d", addrnum + 1).c_str(), m_ADDR[addrnum].w.l).mask(0xfff);
+ state_add(I4004_ADDR1 + addrnum, string_format("ADDR%d", addrnum + 1).c_str(), m_ADDR[addrnum].w.l).mask(0xfff);
}
state_add(I4004_RAM, "RAM", m_RAM.w.l).mask(0x0fff);
@@ -513,7 +513,7 @@ void i4004_cpu_device::state_string_export(const device_state_entry &entry, std:
switch (entry.index())
{
case STATE_GENFLAGS:
- strprintf(str, ".%c%c%c",
+ str = string_format(".%c%c%c",
(m_A==0) ? 'Z':'.',
m_C ? 'C':'.',
m_TEST ? 'T':'.');
diff --git a/src/devices/cpu/i8008/i8008.cpp b/src/devices/cpu/i8008/i8008.cpp
index 6baeacfe7bb..e9f25118f6a 100644
--- a/src/devices/cpu/i8008/i8008.cpp
+++ b/src/devices/cpu/i8008/i8008.cpp
@@ -93,7 +93,7 @@ void i8008_device::device_start()
state_add(I8008_L, "L", m_L);
for (int addrnum = 0; addrnum < 8; addrnum++)
- state_add(I8008_ADDR1 + addrnum, strformat("ADDR%d", addrnum + 1).c_str(), m_ADDR[addrnum].w.l).mask(0xfff);
+ state_add(I8008_ADDR1 + addrnum, string_format("ADDR%d", addrnum + 1).c_str(), m_ADDR[addrnum].w.l).mask(0xfff);
init_tables();
}
@@ -191,7 +191,7 @@ void i8008_device::state_string_export(const device_state_entry &entry, std::str
switch (entry.index())
{
case STATE_GENFLAGS:
- strprintf(str, "%c%c%c%c",
+ str = string_format("%c%c%c%c",
m_CF ? 'C':'.',
m_ZF ? 'Z':'.',
m_SF ? 'S':'.',
diff --git a/src/devices/cpu/i8085/i8085.cpp b/src/devices/cpu/i8085/i8085.cpp
index 308de09e4a1..f8ea5275984 100644
--- a/src/devices/cpu/i8085/i8085.cpp
+++ b/src/devices/cpu/i8085/i8085.cpp
@@ -1053,7 +1053,7 @@ void i8085a_cpu_device::state_string_export(const device_state_entry &entry, std
switch (entry.index())
{
case STATE_GENFLAGS:
- strprintf(str, "%c%c%c%c%c%c%c%c",
+ str = string_format("%c%c%c%c%c%c%c%c",
m_AF.b.l & 0x80 ? 'S':'.',
m_AF.b.l & 0x40 ? 'Z':'.',
m_AF.b.l & 0x20 ? 'X':'.', // X5
diff --git a/src/devices/cpu/i8089/i8089.cpp b/src/devices/cpu/i8089/i8089.cpp
index ade9e4f768b..9394206e179 100644
--- a/src/devices/cpu/i8089/i8089.cpp
+++ b/src/devices/cpu/i8089/i8089.cpp
@@ -168,30 +168,30 @@ void i8089_device::state_string_export(const device_state_entry &entry, std::str
switch (entry.index())
{
case SYSBUS:
- strprintf(str, "%c", sysbus_width() ? 'W' : '.');
+ str = string_format("%c", sysbus_width() ? 'W' : '.');
break;
case SOC:
- strprintf(str, "%c%c", remotebus_width() ? 'I' : '.', request_grant() ? 'R' : '.');
+ str = string_format("%c%c", remotebus_width() ? 'I' : '.', request_grant() ? 'R' : '.');
break;
case CH1_GA:
case CH2_GA:
- strprintf(str, "%d %05X", ch->m_r[i8089_channel::GA].t & 1, ch->m_r[i8089_channel::GA].w);
+ str = string_format("%d %05X", ch->m_r[i8089_channel::GA].t & 1, ch->m_r[i8089_channel::GA].w);
break;
case CH1_GB:
case CH2_GB:
- strprintf(str, "%d %05X", ch->m_r[i8089_channel::GB].t & 1, ch->m_r[i8089_channel::GB].w);
+ str = string_format("%d %05X", ch->m_r[i8089_channel::GB].t & 1, ch->m_r[i8089_channel::GB].w);
break;
case CH1_GC:
case CH2_GC:
- strprintf(str, "%d %05X", ch->m_r[i8089_channel::GC].t & 1, ch->m_r[i8089_channel::GC].w);
+ str = string_format("%d %05X", ch->m_r[i8089_channel::GC].t & 1, ch->m_r[i8089_channel::GC].w);
break;
case CH1_TP:
case CH2_TP:
- strprintf(str, "%d %05X", ch->m_r[i8089_channel::TP].t & 1, ch->m_r[i8089_channel::TP].w);
+ str = string_format("%d %05X", ch->m_r[i8089_channel::TP].t & 1, ch->m_r[i8089_channel::TP].w);
break;
case CH1_PSW:
case CH2_PSW:
- strprintf(str, "%c%s%c%s%s%s%c%c",
+ str = string_format("%c%s%c%s%s%s%c%c",
BIT(ch->m_r[i8089_channel::PSW].w, 7) ? 'P':'.',
BIT(ch->m_r[i8089_channel::PSW].w, 6) ? "XF":"..",
BIT(ch->m_r[i8089_channel::PSW].w, 5) ? 'B':'.',
diff --git a/src/devices/cpu/i86/i286.cpp b/src/devices/cpu/i86/i286.cpp
index 9f79007506a..7a7556deb8d 100644
--- a/src/devices/cpu/i86/i286.cpp
+++ b/src/devices/cpu/i86/i286.cpp
@@ -282,13 +282,13 @@ void i80286_cpu_device::state_string_export(const device_state_entry &entry, std
switch (entry.index())
{
case STATE_GENPC:
- strprintf(str, "%08X", m_base[CS] + m_ip);
+ str = string_format("%08X", m_base[CS] + m_ip);
break;
case STATE_GENFLAGS:
{
UINT16 flags = CompressFlags();
- strprintf(str, "%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c",
+ str = string_format("%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c",
flags & 0x8000 ? '0':'.',
flags & 0x4000 ? 'N':'.',
flags & 0x2000 ? 'I':'.',
diff --git a/src/devices/cpu/i86/i86.cpp b/src/devices/cpu/i86/i86.cpp
index 28669d16563..0c37e3b9c03 100644
--- a/src/devices/cpu/i86/i86.cpp
+++ b/src/devices/cpu/i86/i86.cpp
@@ -323,13 +323,13 @@ void i8086_common_cpu_device::state_string_export(const device_state_entry &entr
switch (entry.index())
{
case STATE_GENPC:
- strprintf(str, "%08X", (m_sregs[CS] << 4) + m_ip);
+ str = string_format("%08X", (m_sregs[CS] << 4) + m_ip);
break;
case STATE_GENFLAGS:
{
UINT16 flags = CompressFlags();
- strprintf(str, "%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c",
+ str = string_format("%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c",
flags & 0x8000 ? '1':'.',
flags & 0x4000 ? '1':'.',
flags & 0x2000 ? '1':'.',
diff --git a/src/devices/cpu/i960/i960.cpp b/src/devices/cpu/i960/i960.cpp
index f754445379b..282aec610f6 100644
--- a/src/devices/cpu/i960/i960.cpp
+++ b/src/devices/cpu/i960/i960.cpp
@@ -2091,7 +2091,7 @@ void i960_cpu_device::state_string_export(const device_state_entry &entry, std::
switch (entry.index())
{
case STATE_GENFLAGS:
- strprintf(str, "%s", conditions[m_AC & 7]);
+ str = string_format("%s", conditions[m_AC & 7]);
break;
}
}
diff --git a/src/devices/cpu/ie15/ie15.cpp b/src/devices/cpu/ie15/ie15.cpp
index 87de1cb2217..6adbc4feb6f 100644
--- a/src/devices/cpu/ie15/ie15.cpp
+++ b/src/devices/cpu/ie15/ie15.cpp
@@ -65,7 +65,7 @@ void ie15_device::device_start()
state_add(IE15_A, "A", m_A);
for (int ireg = 0; ireg < 32; ireg++)
- state_add(IE15_R0 + ireg, strformat("R%d", ireg).c_str(), m_REGS[ireg]);
+ state_add(IE15_R0 + ireg, string_format("R%d", ireg).c_str(), m_REGS[ireg]);
}
//-------------------------------------------------
@@ -137,7 +137,7 @@ void ie15_device::state_string_export(const device_state_entry &entry, std::stri
switch (entry.index())
{
case STATE_GENFLAGS:
- strprintf(str, "%c%c%c",
+ str = string_format("%c%c%c",
m_CF ? 'C':'.',
m_ZF ? 'Z':'.',
m_RF ? 'R':'.');
diff --git a/src/devices/cpu/jaguar/jaguar.cpp b/src/devices/cpu/jaguar/jaguar.cpp
index 000d6375cce..48b1031bd5f 100644
--- a/src/devices/cpu/jaguar/jaguar.cpp
+++ b/src/devices/cpu/jaguar/jaguar.cpp
@@ -405,7 +405,7 @@ void jaguar_cpu_device::state_string_export(const device_state_entry &entry, std
switch (entry.index())
{
case STATE_GENFLAGS:
- strprintf(str, "%c%c%c%c%c%c%c%c%c%c%c",
+ str = string_format("%c%c%c%c%c%c%c%c%c%c%c",
FLAGS & 0x8000 ? 'D':'.',
FLAGS & 0x4000 ? 'A':'.',
FLAGS & 0x0100 ? '4':'.',
diff --git a/src/devices/cpu/lc8670/lc8670.cpp b/src/devices/cpu/lc8670/lc8670.cpp
index d24b3f64775..9eeb643000b 100644
--- a/src/devices/cpu/lc8670/lc8670.cpp
+++ b/src/devices/cpu/lc8670/lc8670.cpp
@@ -374,7 +374,7 @@ void lc8670_cpu_device::state_string_export(const device_state_entry &entry, std
switch (entry.index())
{
case STATE_GENFLAGS:
- strprintf(str, "%s%s%s%s",
+ str = string_format("%s%s%s%s",
GET_CY ? "CY" : "..",
GET_AC ? "AC" : "..",
GET_OV ? "OV" : "..",
diff --git a/src/devices/cpu/lh5801/lh5801.cpp b/src/devices/cpu/lh5801/lh5801.cpp
index 2e748c63905..76902136c29 100644
--- a/src/devices/cpu/lh5801/lh5801.cpp
+++ b/src/devices/cpu/lh5801/lh5801.cpp
@@ -147,7 +147,7 @@ void lh5801_cpu_device::state_string_export(const device_state_entry &entry, std
switch (entry.index())
{
case STATE_GENFLAGS:
- strprintf(str, "%c%c%c%c%c%c%c%c",
+ str = string_format("%c%c%c%c%c%c%c%c",
m_t&0x80?'1':'0',
m_t&0x40?'1':'0',
m_t&0x20?'1':'0',
diff --git a/src/devices/cpu/lr35902/lr35902.cpp b/src/devices/cpu/lr35902/lr35902.cpp
index 8f365c18c54..1a7634c21e9 100644
--- a/src/devices/cpu/lr35902/lr35902.cpp
+++ b/src/devices/cpu/lr35902/lr35902.cpp
@@ -185,11 +185,11 @@ void lr35902_cpu_device::state_string_export(const device_state_entry &entry, st
switch (entry.index())
{
case LR35902_SPEED:
- strprintf(str, "%02X", 0x7E | ((m_gb_speed - 1) << 7) | m_gb_speed_change_pending);
+ str = string_format("%02X", 0x7E | ((m_gb_speed - 1) << 7) | m_gb_speed_change_pending);
break;
case STATE_GENFLAGS:
- strprintf(str, "%c%c%c%c",
+ str = string_format("%c%c%c%c",
m_F & FLAG_Z ? 'Z' : '.',
m_F & FLAG_N ? 'N' : '.',
m_F & FLAG_H ? 'H' : '.',
diff --git a/src/devices/cpu/m37710/m37710.cpp b/src/devices/cpu/m37710/m37710.cpp
index 43568915dce..449af4c45e8 100644
--- a/src/devices/cpu/m37710/m37710.cpp
+++ b/src/devices/cpu/m37710/m37710.cpp
@@ -1141,7 +1141,7 @@ void m37710_cpu_device::state_string_export(const device_state_entry &entry, std
switch (entry.index())
{
case STATE_GENFLAGS:
- strprintf(str, "%c%c%c%c%c%c%c%c",
+ str = string_format("%c%c%c%c%c%c%c%c",
m_flag_n & NFLAG_SET ? 'N':'.',
m_flag_v & VFLAG_SET ? 'V':'.',
m_flag_m & MFLAG_SET ? 'M':'.',
diff --git a/src/devices/cpu/m6502/m6502.cpp b/src/devices/cpu/m6502/m6502.cpp
index 0ecd12258f1..a6bf400151c 100644
--- a/src/devices/cpu/m6502/m6502.cpp
+++ b/src/devices/cpu/m6502/m6502.cpp
@@ -444,7 +444,7 @@ void m6502_device::state_string_export(const device_state_entry &entry, std::str
switch(entry.index()) {
case STATE_GENFLAGS:
case M6502_P:
- strprintf(str, "%c%c%c%c%c%c",
+ str = string_format("%c%c%c%c%c%c",
P & F_N ? 'N' : '.',
P & F_V ? 'V' : '.',
P & F_D ? 'D' : '.',
diff --git a/src/devices/cpu/m6502/m65ce02.cpp b/src/devices/cpu/m6502/m65ce02.cpp
index 01f6fe34b2f..ca7d72289a1 100644
--- a/src/devices/cpu/m6502/m65ce02.cpp
+++ b/src/devices/cpu/m6502/m65ce02.cpp
@@ -80,7 +80,7 @@ void m65ce02_device::state_string_export(const device_state_entry &entry, std::s
switch(entry.index()) {
case STATE_GENFLAGS:
case M6502_P:
- strprintf(str, "%c%c%c%c%c%c%c",
+ str = string_format("%c%c%c%c%c%c%c",
P & F_N ? 'N' : '.',
P & F_V ? 'V' : '.',
P & F_E ? 'E' : '.',
@@ -90,7 +90,7 @@ void m65ce02_device::state_string_export(const device_state_entry &entry, std::s
P & F_C ? 'C' : '.');
break;
case M65CE02_B:
- strprintf(str, "%02x", B >> 8);
+ str = string_format("%02x", B >> 8);
break;
}
}
diff --git a/src/devices/cpu/m6502/m740.cpp b/src/devices/cpu/m6502/m740.cpp
index 061f6dd75c7..b5dc72f87f9 100644
--- a/src/devices/cpu/m6502/m740.cpp
+++ b/src/devices/cpu/m6502/m740.cpp
@@ -58,7 +58,7 @@ void m740_device::state_string_export(const device_state_entry &entry, std::stri
switch(entry.index()) {
case STATE_GENFLAGS:
case M6502_P:
- strprintf(str, "%c%c%c%c%c%c%c",
+ str = string_format("%c%c%c%c%c%c%c",
P & F_N ? 'N' : '.',
P & F_V ? 'V' : '.',
P & F_T ? 'T' : '.',
diff --git a/src/devices/cpu/m6800/m6800.cpp b/src/devices/cpu/m6800/m6800.cpp
index 730d7a1be4b..ecdcfa95186 100644
--- a/src/devices/cpu/m6800/m6800.cpp
+++ b/src/devices/cpu/m6800/m6800.cpp
@@ -1145,7 +1145,7 @@ void m6800_cpu_device::state_string_export(const device_state_entry &entry, std:
switch (entry.index())
{
case STATE_GENFLAGS:
- strprintf(str, "%c%c%c%c%c%c%c%c",
+ str = string_format("%c%c%c%c%c%c%c%c",
m_cc & 0x80 ? '?':'.',
m_cc & 0x40 ? '?':'.',
m_cc & 0x20 ? 'H':'.',
diff --git a/src/devices/cpu/m68000/m68kcpu.cpp b/src/devices/cpu/m68000/m68kcpu.cpp
index aaa1db079cf..02809436472 100644
--- a/src/devices/cpu/m68000/m68kcpu.cpp
+++ b/src/devices/cpu/m68000/m68kcpu.cpp
@@ -1173,40 +1173,40 @@ void m68000_base_device::state_string_export(const device_state_entry &entry, st
switch (entry.index())
{
case M68K_FP0:
- strprintf(str,"%f", fx80_to_double(REG_FP(this)[0]));
+ str = string_format("%f", fx80_to_double(REG_FP(this)[0]));
break;
case M68K_FP1:
- strprintf(str,"%f", fx80_to_double(REG_FP(this)[1]));
+ str = string_format("%f", fx80_to_double(REG_FP(this)[1]));
break;
case M68K_FP2:
- strprintf(str,"%f", fx80_to_double(REG_FP(this)[2]));
+ str = string_format("%f", fx80_to_double(REG_FP(this)[2]));
break;
case M68K_FP3:
- strprintf(str,"%f", fx80_to_double(REG_FP(this)[3]));
+ str = string_format("%f", fx80_to_double(REG_FP(this)[3]));
break;
case M68K_FP4:
- strprintf(str,"%f", fx80_to_double(REG_FP(this)[4]));
+ str = string_format("%f", fx80_to_double(REG_FP(this)[4]));
break;
case M68K_FP5:
- strprintf(str,"%f", fx80_to_double(REG_FP(this)[5]));
+ str = string_format("%f", fx80_to_double(REG_FP(this)[5]));
break;
case M68K_FP6:
- strprintf(str,"%f", fx80_to_double(REG_FP(this)[6]));
+ str = string_format("%f", fx80_to_double(REG_FP(this)[6]));
break;
case M68K_FP7:
- strprintf(str,"%f", fx80_to_double(REG_FP(this)[7]));
+ str = string_format("%f", fx80_to_double(REG_FP(this)[7]));
break;
case STATE_GENFLAGS:
sr = m68ki_get_sr(this);
- strprintf(str,"%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c",
+ str = string_format("%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c",
sr & 0x8000 ? 'T':'.',
sr & 0x4000 ? 't':'.',
sr & 0x2000 ? 'S':'.',
@@ -1735,10 +1735,10 @@ void m68000_base_device::define_state(void)
state_add(M68K_MSP, "MSP", iotemp).callimport().callexport();
for (int regnum = 0; regnum < 8; regnum++) {
- state_add(M68K_D0 + regnum, strformat("D%d", regnum).c_str(), dar[regnum]);
+ state_add(M68K_D0 + regnum, string_format("D%d", regnum).c_str(), dar[regnum]);
}
for (int regnum = 0; regnum < 8; regnum++) {
- state_add(M68K_A0 + regnum, strformat("A%d", regnum).c_str(), dar[8 + regnum]);
+ state_add(M68K_A0 + regnum, string_format("A%d", regnum).c_str(), dar[8 + regnum]);
}
state_add(M68K_PREF_ADDR, "PREF_ADDR", pref_addr).mask(addrmask);
@@ -1760,7 +1760,7 @@ void m68000_base_device::define_state(void)
if (cpu_type & MASK_030_OR_LATER)
{
for (int regnum = 0; regnum < 8; regnum++) {
- state_add(M68K_FP0 + regnum, strformat("FP%d", regnum).c_str(), iotemp).callimport().callexport().formatstr("%10s");
+ state_add(M68K_FP0 + regnum, string_format("FP%d", regnum).c_str(), iotemp).callimport().callexport().formatstr("%10s");
}
state_add(M68K_FPSR, "FPSR", fpsr);
state_add(M68K_FPCR, "FPCR", fpcr);
diff --git a/src/devices/cpu/m6805/m6805.cpp b/src/devices/cpu/m6805/m6805.cpp
index 0bb5ac3877e..1ea1b7ccb03 100644
--- a/src/devices/cpu/m6805/m6805.cpp
+++ b/src/devices/cpu/m6805/m6805.cpp
@@ -498,7 +498,7 @@ void m6805_base_device::state_string_export(const device_state_entry &entry, std
switch (entry.index())
{
case STATE_GENFLAGS:
- strprintf(str, "%c%c%c%c%c%c%c%c",
+ str = string_format("%c%c%c%c%c%c%c%c",
(m_cc & 0x80) ? '?' : '.',
(m_cc & 0x40) ? '?' : '.',
(m_cc & 0x20) ? '?' : '.',
diff --git a/src/devices/cpu/m6809/m6809.cpp b/src/devices/cpu/m6809/m6809.cpp
index 61337f180f0..8ebba313047 100644
--- a/src/devices/cpu/m6809/m6809.cpp
+++ b/src/devices/cpu/m6809/m6809.cpp
@@ -307,7 +307,7 @@ void m6809_base_device::state_string_export(const device_state_entry &entry, std
switch (entry.index())
{
case STATE_GENFLAGS:
- strprintf(str, "%c%c%c%c%c%c%c%c",
+ str = string_format("%c%c%c%c%c%c%c%c",
(m_cc & 0x80) ? 'E' : '.',
(m_cc & 0x40) ? 'F' : '.',
(m_cc & 0x20) ? 'H' : '.',
diff --git a/src/devices/cpu/mb86233/mb86233.cpp b/src/devices/cpu/mb86233/mb86233.cpp
index 341309d8c12..fed57fc9ddc 100644
--- a/src/devices/cpu/mb86233/mb86233.cpp
+++ b/src/devices/cpu/mb86233/mb86233.cpp
@@ -166,7 +166,7 @@ void mb86233_cpu_device::state_string_export(const device_state_entry &entry, st
switch (entry.index())
{
case STATE_GENFLAGS:
- strprintf(str, "%c%c", (m_sr & SIGN_FLAG) ? 'N' : 'n', (m_sr & ZERO_FLAG) ? 'Z' : 'z');
+ str = string_format("%c%c", (m_sr & SIGN_FLAG) ? 'N' : 'n', (m_sr & ZERO_FLAG) ? 'Z' : 'z');
break;
}
}
diff --git a/src/devices/cpu/mb86235/mb86235.cpp b/src/devices/cpu/mb86235/mb86235.cpp
index edcc6a0471f..ef42221548e 100644
--- a/src/devices/cpu/mb86235/mb86235.cpp
+++ b/src/devices/cpu/mb86235/mb86235.cpp
@@ -113,7 +113,7 @@ void mb86235_cpu_device::state_string_export(const device_state_entry &entry, st
switch (entry.index())
{
case STATE_GENFLAGS:
- strprintf(str, "%c%c%c%c",
+ str = string_format("%c%c%c%c",
m_flags & 0x80 ? 'S':'.',
m_flags & 0x40 ? 'Z':'.',
m_flags & 0x20 ? 'V':'.',
diff --git a/src/devices/cpu/mb88xx/mb88xx.cpp b/src/devices/cpu/mb88xx/mb88xx.cpp
index 9ab07538e6e..ce915c6d63b 100644
--- a/src/devices/cpu/mb88xx/mb88xx.cpp
+++ b/src/devices/cpu/mb88xx/mb88xx.cpp
@@ -274,7 +274,7 @@ void mb88_cpu_device::state_string_export(const device_state_entry &entry, std::
switch (entry.index())
{
case STATE_GENFLAGS:
- strprintf(str, "%c%c%c%c%c%c",
+ str = string_format("%c%c%c%c%c%c",
TEST_ST() ? 'T' : 't',
TEST_ZF() ? 'Z' : 'z',
TEST_CF() ? 'C' : 'c',
diff --git a/src/devices/cpu/mc68hc11/mc68hc11.cpp b/src/devices/cpu/mc68hc11/mc68hc11.cpp
index a208a618c4b..0d5a54b402e 100644
--- a/src/devices/cpu/mc68hc11/mc68hc11.cpp
+++ b/src/devices/cpu/mc68hc11/mc68hc11.cpp
@@ -453,7 +453,7 @@ void mc68hc11_cpu_device::state_string_export(const device_state_entry &entry, s
switch (entry.index())
{
case STATE_GENFLAGS:
- strprintf(str, "%c%c%c%c%c%c%c%c",
+ str = string_format("%c%c%c%c%c%c%c%c",
(m_ccr & CC_S) ? 'S' : '.',
(m_ccr & CC_X) ? 'X' : '.',
(m_ccr & CC_H) ? 'H' : '.',
diff --git a/src/devices/cpu/mcs48/mcs48.cpp b/src/devices/cpu/mcs48/mcs48.cpp
index b49899ca498..b9de4b49f5c 100644
--- a/src/devices/cpu/mcs48/mcs48.cpp
+++ b/src/devices/cpu/mcs48/mcs48.cpp
@@ -979,7 +979,7 @@ void mcs48_cpu_device::device_start()
state_add(MCS48_P2, "P2", m_p2);
for (int regnum = 0; regnum < 8; regnum++) {
- state_add(MCS48_R0 + regnum, strformat("R%d", regnum).c_str(), m_rtemp).callimport().callexport();
+ state_add(MCS48_R0 + regnum, string_format("R%d", regnum).c_str(), m_rtemp).callimport().callexport();
}
state_add(MCS48_EA, "EA", m_ea).mask(0x1);
@@ -1301,7 +1301,7 @@ void mcs48_cpu_device::state_string_export(const device_state_entry &entry, std:
switch (entry.index())
{
case STATE_GENFLAGS:
- strprintf(str, "%c%c %c%c%c%c%c%c%c%c",
+ str = string_format("%c%c %c%c%c%c%c%c%c%c",
m_irq_state ? 'I':'.',
m_a11 ? 'M':'.',
m_psw & 0x80 ? 'C':'.',
diff --git a/src/devices/cpu/mcs51/mcs51.cpp b/src/devices/cpu/mcs51/mcs51.cpp
index f3d5816d722..f0b0a1d3723 100644
--- a/src/devices/cpu/mcs51/mcs51.cpp
+++ b/src/devices/cpu/mcs51/mcs51.cpp
@@ -2218,7 +2218,7 @@ void mcs51_cpu_device::state_string_export(const device_state_entry &entry, std:
switch (entry.index())
{
case STATE_GENFLAGS:
- strprintf(str,"%c%c%c%c%c%c%c%c",
+ str = string_format("%c%c%c%c%c%c%c%c",
PSW & 0x80 ? 'C':'.',
PSW & 0x40 ? 'A':'.',
PSW & 0x20 ? 'F':'.',
diff --git a/src/devices/cpu/mcs96/mcs96.cpp b/src/devices/cpu/mcs96/mcs96.cpp
index 3c8284f8555..cca35f9ac42 100644
--- a/src/devices/cpu/mcs96/mcs96.cpp
+++ b/src/devices/cpu/mcs96/mcs96.cpp
@@ -133,7 +133,7 @@ void mcs96_device::state_string_export(const device_state_entry &entry, std::str
switch(entry.index()) {
case STATE_GENFLAGS:
case MCS96_PSW:
- strprintf(str, "%c%c%c%c%c%c%c %c%c%c%c%c%c%c%c",
+ str = string_format("%c%c%c%c%c%c%c %c%c%c%c%c%c%c%c",
PSW & F_Z ? 'Z' : '.',
PSW & F_N ? 'N' : '.',
PSW & F_V ? 'V' : '.',
diff --git a/src/devices/cpu/melps4/melps4.cpp b/src/devices/cpu/melps4/melps4.cpp
index d228b42fbee..2602c6d0194 100644
--- a/src/devices/cpu/melps4/melps4.cpp
+++ b/src/devices/cpu/melps4/melps4.cpp
@@ -48,7 +48,7 @@ void melps4_cpu_device::state_string_export(const device_state_entry &entry, std
{
// obviously not from a single flags register, letters are made up
case STATE_GENFLAGS:
- strprintf(str, "%c%c%c%c%c %c%c%c",
+ str = string_format("%c%c%c%c%c %c%c%c",
m_intp ? 'P':'p',
m_inte ? 'I':'i',
m_sm ? 'S':'s',
diff --git a/src/devices/cpu/minx/minx.cpp b/src/devices/cpu/minx/minx.cpp
index bae0338da76..8e812dffcde 100644
--- a/src/devices/cpu/minx/minx.cpp
+++ b/src/devices/cpu/minx/minx.cpp
@@ -126,7 +126,7 @@ void minx_cpu_device::state_string_export(const device_state_entry &entry, std::
switch (entry.index())
{
case STATE_GENFLAGS:
- strprintf(str, "%c%c%c%c%c%c%c%c-%c%c%c%c%c",
+ str = string_format("%c%c%c%c%c%c%c%c-%c%c%c%c%c",
m_F & FLAG_I ? 'I' : '.',
m_F & FLAG_D ? 'D' : '.',
m_F & FLAG_L ? 'L' : '.',
diff --git a/src/devices/cpu/mips/mips3.cpp b/src/devices/cpu/mips/mips3.cpp
index 711b9c3edf4..20d82bd3725 100644
--- a/src/devices/cpu/mips/mips3.cpp
+++ b/src/devices/cpu/mips/mips3.cpp
@@ -645,263 +645,263 @@ void mips3_device::state_string_export(const device_state_entry &entry, std::str
switch (entry.index())
{
case MIPS3_FPS0:
- strprintf(str, "!%16g", *(float *)&m_core->cpr[1][0]);
+ str = string_format("!%16g", *(float *)&m_core->cpr[1][0]);
break;
case MIPS3_FPD0:
- strprintf(str, "!%16g", *(double *)&m_core->cpr[1][0]);
+ str = string_format("!%16g", *(double *)&m_core->cpr[1][0]);
break;
case MIPS3_FPS1:
- strprintf(str, "!%16g", *(float *)&m_core->cpr[1][1]);
+ str = string_format("!%16g", *(float *)&m_core->cpr[1][1]);
break;
case MIPS3_FPD1:
- strprintf(str, "!%16g", *(double *)&m_core->cpr[1][1]);
+ str = string_format("!%16g", *(double *)&m_core->cpr[1][1]);
break;
case MIPS3_FPS2:
- strprintf(str, "!%16g", *(float *)&m_core->cpr[1][2]);
+ str = string_format("!%16g", *(float *)&m_core->cpr[1][2]);
break;
case MIPS3_FPD2:
- strprintf(str, "!%16g", *(double *)&m_core->cpr[1][2]);
+ str = string_format("!%16g", *(double *)&m_core->cpr[1][2]);
break;
case MIPS3_FPS3:
- strprintf(str, "!%16g", *(float *)&m_core->cpr[1][3]);
+ str = string_format("!%16g", *(float *)&m_core->cpr[1][3]);
break;
case MIPS3_FPD3:
- strprintf(str, "!%16g", *(double *)&m_core->cpr[1][3]);
+ str = string_format("!%16g", *(double *)&m_core->cpr[1][3]);
break;
case MIPS3_FPS4:
- strprintf(str, "!%16g", *(float *)&m_core->cpr[1][4]);
+ str = string_format("!%16g", *(float *)&m_core->cpr[1][4]);
break;
case MIPS3_FPD4:
- strprintf(str, "!%16g", *(double *)&m_core->cpr[1][4]);
+ str = string_format("!%16g", *(double *)&m_core->cpr[1][4]);
break;
case MIPS3_FPS5:
- strprintf(str, "!%16g", *(float *)&m_core->cpr[1][5]);
+ str = string_format("!%16g", *(float *)&m_core->cpr[1][5]);
break;
case MIPS3_FPD5:
- strprintf(str, "!%16g", *(double *)&m_core->cpr[1][5]);
+ str = string_format("!%16g", *(double *)&m_core->cpr[1][5]);
break;
case MIPS3_FPS6:
- strprintf(str, "!%16g", *(float *)&m_core->cpr[1][6]);
+ str = string_format("!%16g", *(float *)&m_core->cpr[1][6]);
break;
case MIPS3_FPD6:
- strprintf(str, "!%16g", *(double *)&m_core->cpr[1][6]);
+ str = string_format("!%16g", *(double *)&m_core->cpr[1][6]);
break;
case MIPS3_FPS7:
- strprintf(str, "!%16g", *(float *)&m_core->cpr[1][7]);
+ str = string_format("!%16g", *(float *)&m_core->cpr[1][7]);
break;
case MIPS3_FPD7:
- strprintf(str, "!%16g", *(double *)&m_core->cpr[1][7]);
+ str = string_format("!%16g", *(double *)&m_core->cpr[1][7]);
break;
case MIPS3_FPS8:
- strprintf(str, "!%16g", *(float *)&m_core->cpr[1][8]);
+ str = string_format("!%16g", *(float *)&m_core->cpr[1][8]);
break;
case MIPS3_FPD8:
- strprintf(str, "!%16g", *(double *)&m_core->cpr[1][8]);
+ str = string_format("!%16g", *(double *)&m_core->cpr[1][8]);
break;
case MIPS3_FPS9:
- strprintf(str, "!%16g", *(float *)&m_core->cpr[1][9]);
+ str = string_format("!%16g", *(float *)&m_core->cpr[1][9]);
break;
case MIPS3_FPD9:
- strprintf(str, "!%16g", *(double *)&m_core->cpr[1][9]);
+ str = string_format("!%16g", *(double *)&m_core->cpr[1][9]);
break;
case MIPS3_FPS10:
- strprintf(str, "!%16g", *(float *)&m_core->cpr[1][10]);
+ str = string_format("!%16g", *(float *)&m_core->cpr[1][10]);
break;
case MIPS3_FPD10:
- strprintf(str, "!%16g", *(double *)&m_core->cpr[1][10]);
+ str = string_format("!%16g", *(double *)&m_core->cpr[1][10]);
break;
case MIPS3_FPS11:
- strprintf(str, "!%16g", *(float *)&m_core->cpr[1][11]);
+ str = string_format("!%16g", *(float *)&m_core->cpr[1][11]);
break;
case MIPS3_FPD11:
- strprintf(str, "!%16g", *(double *)&m_core->cpr[1][11]);
+ str = string_format("!%16g", *(double *)&m_core->cpr[1][11]);
break;
case MIPS3_FPS12:
- strprintf(str, "!%16g", *(float *)&m_core->cpr[1][12]);
+ str = string_format("!%16g", *(float *)&m_core->cpr[1][12]);
break;
case MIPS3_FPD12:
- strprintf(str, "!%16g", *(double *)&m_core->cpr[1][12]);
+ str = string_format("!%16g", *(double *)&m_core->cpr[1][12]);
break;
case MIPS3_FPS13:
- strprintf(str, "!%16g", *(float *)&m_core->cpr[1][13]);
+ str = string_format("!%16g", *(float *)&m_core->cpr[1][13]);
break;
case MIPS3_FPD13:
- strprintf(str, "!%16g", *(double *)&m_core->cpr[1][13]);
+ str = string_format("!%16g", *(double *)&m_core->cpr[1][13]);
break;
case MIPS3_FPS14:
- strprintf(str, "!%16g", *(float *)&m_core->cpr[1][14]);
+ str = string_format("!%16g", *(float *)&m_core->cpr[1][14]);
break;
case MIPS3_FPD14:
- strprintf(str, "!%16g", *(double *)&m_core->cpr[1][14]);
+ str = string_format("!%16g", *(double *)&m_core->cpr[1][14]);
break;
case MIPS3_FPS15:
- strprintf(str, "!%16g", *(float *)&m_core->cpr[1][15]);
+ str = string_format("!%16g", *(float *)&m_core->cpr[1][15]);
break;
case MIPS3_FPD15:
- strprintf(str, "!%16g", *(double *)&m_core->cpr[1][15]);
+ str = string_format("!%16g", *(double *)&m_core->cpr[1][15]);
break;
case MIPS3_FPS16:
- strprintf(str, "!%16g", *(float *)&m_core->cpr[1][16]);
+ str = string_format("!%16g", *(float *)&m_core->cpr[1][16]);
break;
case MIPS3_FPD16:
- strprintf(str, "!%16g", *(double *)&m_core->cpr[1][16]);
+ str = string_format("!%16g", *(double *)&m_core->cpr[1][16]);
break;
case MIPS3_FPS17:
- strprintf(str, "!%16g", *(float *)&m_core->cpr[1][17]);
+ str = string_format("!%16g", *(float *)&m_core->cpr[1][17]);
break;
case MIPS3_FPD17:
- strprintf(str, "!%16g", *(double *)&m_core->cpr[1][17]);
+ str = string_format("!%16g", *(double *)&m_core->cpr[1][17]);
break;
case MIPS3_FPS18:
- strprintf(str, "!%16g", *(float *)&m_core->cpr[1][18]);
+ str = string_format("!%16g", *(float *)&m_core->cpr[1][18]);
break;
case MIPS3_FPD18:
- strprintf(str, "!%16g", *(double *)&m_core->cpr[1][18]);
+ str = string_format("!%16g", *(double *)&m_core->cpr[1][18]);
break;
case MIPS3_FPS19:
- strprintf(str, "!%16g", *(float *)&m_core->cpr[1][19]);
+ str = string_format("!%16g", *(float *)&m_core->cpr[1][19]);
break;
case MIPS3_FPD19:
- strprintf(str, "!%16g", *(double *)&m_core->cpr[1][19]);
+ str = string_format("!%16g", *(double *)&m_core->cpr[1][19]);
break;
case MIPS3_FPS20:
- strprintf(str, "!%16g", *(float *)&m_core->cpr[1][20]);
+ str = string_format("!%16g", *(float *)&m_core->cpr[1][20]);
break;
case MIPS3_FPD20:
- strprintf(str, "!%16g", *(double *)&m_core->cpr[1][20]);
+ str = string_format("!%16g", *(double *)&m_core->cpr[1][20]);
break;
case MIPS3_FPS21:
- strprintf(str, "!%16g", *(float *)&m_core->cpr[1][21]);
+ str = string_format("!%16g", *(float *)&m_core->cpr[1][21]);
break;
case MIPS3_FPD21:
- strprintf(str, "!%16g", *(double *)&m_core->cpr[1][21]);
+ str = string_format("!%16g", *(double *)&m_core->cpr[1][21]);
break;
case MIPS3_FPS22:
- strprintf(str, "!%16g", *(float *)&m_core->cpr[1][22]);
+ str = string_format("!%16g", *(float *)&m_core->cpr[1][22]);
break;
case MIPS3_FPD22:
- strprintf(str, "!%16g", *(double *)&m_core->cpr[1][22]);
+ str = string_format("!%16g", *(double *)&m_core->cpr[1][22]);
break;
case MIPS3_FPS23:
- strprintf(str, "!%16g", *(float *)&m_core->cpr[1][23]);
+ str = string_format("!%16g", *(float *)&m_core->cpr[1][23]);
break;
case MIPS3_FPD23:
- strprintf(str, "!%16g", *(double *)&m_core->cpr[1][23]);
+ str = string_format("!%16g", *(double *)&m_core->cpr[1][23]);
break;
case MIPS3_FPS24:
- strprintf(str, "!%16g", *(float *)&m_core->cpr[1][24]);
+ str = string_format("!%16g", *(float *)&m_core->cpr[1][24]);
break;
case MIPS3_FPD24:
- strprintf(str, "!%16g", *(double *)&m_core->cpr[1][24]);
+ str = string_format("!%16g", *(double *)&m_core->cpr[1][24]);
break;
case MIPS3_FPS25:
- strprintf(str, "!%16g", *(float *)&m_core->cpr[1][25]);
+ str = string_format("!%16g", *(float *)&m_core->cpr[1][25]);
break;
case MIPS3_FPD25:
- strprintf(str, "!%16g", *(double *)&m_core->cpr[1][25]);
+ str = string_format("!%16g", *(double *)&m_core->cpr[1][25]);
break;
case MIPS3_FPS26:
- strprintf(str, "!%16g", *(float *)&m_core->cpr[1][26]);
+ str = string_format("!%16g", *(float *)&m_core->cpr[1][26]);
break;
case MIPS3_FPD26:
- strprintf(str, "!%16g", *(double *)&m_core->cpr[1][26]);
+ str = string_format("!%16g", *(double *)&m_core->cpr[1][26]);
break;
case MIPS3_FPS27:
- strprintf(str, "!%16g", *(float *)&m_core->cpr[1][27]);
+ str = string_format("!%16g", *(float *)&m_core->cpr[1][27]);
break;
case MIPS3_FPD27:
- strprintf(str, "!%16g", *(double *)&m_core->cpr[1][27]);
+ str = string_format("!%16g", *(double *)&m_core->cpr[1][27]);
break;
case MIPS3_FPS28:
- strprintf(str, "!%16g", *(float *)&m_core->cpr[1][28]);
+ str = string_format("!%16g", *(float *)&m_core->cpr[1][28]);
break;
case MIPS3_FPD28:
- strprintf(str, "!%16g", *(double *)&m_core->cpr[1][28]);
+ str = string_format("!%16g", *(double *)&m_core->cpr[1][28]);
break;
case MIPS3_FPS29:
- strprintf(str, "!%16g", *(float *)&m_core->cpr[1][29]);
+ str = string_format("!%16g", *(float *)&m_core->cpr[1][29]);
break;
case MIPS3_FPD29:
- strprintf(str, "!%16g", *(double *)&m_core->cpr[1][29]);
+ str = string_format("!%16g", *(double *)&m_core->cpr[1][29]);
break;
case MIPS3_FPS30:
- strprintf(str, "!%16g", *(float *)&m_core->cpr[1][30]);
+ str = string_format("!%16g", *(float *)&m_core->cpr[1][30]);
break;
case MIPS3_FPD30:
- strprintf(str, "!%16g", *(double *)&m_core->cpr[1][30]);
+ str = string_format("!%16g", *(double *)&m_core->cpr[1][30]);
break;
case MIPS3_FPS31:
- strprintf(str, "!%16g", *(float *)&m_core->cpr[1][31]);
+ str = string_format("!%16g", *(float *)&m_core->cpr[1][31]);
break;
case MIPS3_FPD31:
- strprintf(str, "!%16g", *(double *)&m_core->cpr[1][31]);
+ str = string_format("!%16g", *(double *)&m_core->cpr[1][31]);
break;
case STATE_GENFLAGS:
- strprintf(str, " ");
+ str = " ";
break;
}
}
diff --git a/src/devices/cpu/mn10200/mn10200.cpp b/src/devices/cpu/mn10200/mn10200.cpp
index 1b4af66e13f..9293353c825 100644
--- a/src/devices/cpu/mn10200/mn10200.cpp
+++ b/src/devices/cpu/mn10200/mn10200.cpp
@@ -56,7 +56,7 @@ void mn10200_device::state_string_export(const device_state_entry &entry, std::s
switch (entry.index())
{
case STATE_GENFLAGS:
- strprintf(str, "S=%d irq=%s im=%d %c%c%c%c %c%c%c%c",
+ str = string_format("S=%d irq=%s im=%d %c%c%c%c %c%c%c%c",
(m_psw >> 12) & 3,
m_psw & FLAG_IE ? "on " : "off",
(m_psw >> 8) & 7,
diff --git a/src/devices/cpu/nec/nec.cpp b/src/devices/cpu/nec/nec.cpp
index 42ef74df7d5..610cd4e433c 100644
--- a/src/devices/cpu/nec/nec.cpp
+++ b/src/devices/cpu/nec/nec.cpp
@@ -444,7 +444,7 @@ void nec_common_device::state_string_export(const device_state_entry &entry, std
switch (entry.index())
{
case STATE_GENFLAGS:
- strprintf(str, "%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c",
+ str = string_format("%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c",
flags & 0x8000 ? 'N':'E',
flags & 0x4000 ? '?':'.',
flags & 0x2000 ? '?':'.',
diff --git a/src/devices/cpu/nec/v25.cpp b/src/devices/cpu/nec/v25.cpp
index c5e62446cb0..2b0f4006e38 100644
--- a/src/devices/cpu/nec/v25.cpp
+++ b/src/devices/cpu/nec/v25.cpp
@@ -532,7 +532,7 @@ void v25_common_device::state_string_export(const device_state_entry &entry, std
switch (entry.index())
{
case STATE_GENFLAGS:
- strprintf(str, "%c %d %c%c%c%c%c%c%c%c%c%c%c%c",
+ str = string_format("%c %d %c%c%c%c%c%c%c%c%c%c%c%c",
flags & 0x8000 ? 'N':'S',
(flags & 0x7000) >> 12,
flags & 0x0800 ? 'O':'.',
diff --git a/src/devices/cpu/pdp1/pdp1.cpp b/src/devices/cpu/pdp1/pdp1.cpp
index d7a9ad008fb..0a2cf9e1061 100644
--- a/src/devices/cpu/pdp1/pdp1.cpp
+++ b/src/devices/cpu/pdp1/pdp1.cpp
@@ -742,7 +742,7 @@ void pdp1_device::state_string_export(const device_state_entry &entry, std::stri
switch (entry.index())
{
case STATE_GENFLAGS:
- strprintf(str, "%c%c%c%c%c%c-%c%c%c%c%c%c",
+ str = string_format("%c%c%c%c%c%c-%c%c%c%c%c%c",
(FLAGS & 040) ? '1' : '.',
(FLAGS & 020) ? '2' : '.',
(FLAGS & 010) ? '3' : '.',
diff --git a/src/devices/cpu/pic16c5x/pic16c5x.cpp b/src/devices/cpu/pic16c5x/pic16c5x.cpp
index c568b27b4c7..89d37d6f5ac 100644
--- a/src/devices/cpu/pic16c5x/pic16c5x.cpp
+++ b/src/devices/cpu/pic16c5x/pic16c5x.cpp
@@ -928,11 +928,11 @@ void pic16c5x_device::state_string_export(const device_state_entry &entry, std::
switch (entry.index())
{
case PIC16C5x_PSCL:
- strprintf(str, "%c%02X", ((m_OPTION & 0x08) ? 'W' : 'T'), m_prescaler);
+ str = string_format("%c%02X", ((m_OPTION & 0x08) ? 'W' : 'T'), m_prescaler);
break;
case STATE_GENFLAGS:
- strprintf(str, "%01x%c%c%c%c%c %c%c%c%03x",
+ str = string_format("%01x%c%c%c%c%c %c%c%c%03x",
(STATUS & 0xe0) >> 5,
STATUS & 0x10 ? '.':'O', /* WDT Overflow */
STATUS & 0x08 ? 'P':'D', /* Power/Down */
diff --git a/src/devices/cpu/pic16c62x/pic16c62x.cpp b/src/devices/cpu/pic16c62x/pic16c62x.cpp
index 9fb6e2324ab..024769d66a6 100644
--- a/src/devices/cpu/pic16c62x/pic16c62x.cpp
+++ b/src/devices/cpu/pic16c62x/pic16c62x.cpp
@@ -995,11 +995,11 @@ void pic16c62x_device::state_string_export(const device_state_entry &entry, std:
switch (entry.index())
{
case PIC16C62x_PSCL:
- strprintf(str, "%c%02X", ((m_OPTION & 0x08) ? 'W' : 'T'), m_prescaler);
+ str = string_format("%c%02X", ((m_OPTION & 0x08) ? 'W' : 'T'), m_prescaler);
break;
case STATE_GENFLAGS:
- strprintf(str, "%01x%c%c%c%c%c %c%c%c%03x",
+ str = string_format("%01x%c%c%c%c%c %c%c%c%03x",
(STATUS & 0xe0) >> 5,
STATUS & 0x10 ? '.':'O', /* WDT Overflow */
STATUS & 0x08 ? 'P':'D', /* Power/Down */
diff --git a/src/devices/cpu/powerpc/ppccom.cpp b/src/devices/cpu/powerpc/ppccom.cpp
index a9a26b29a5c..be0e14475d2 100644
--- a/src/devices/cpu/powerpc/ppccom.cpp
+++ b/src/devices/cpu/powerpc/ppccom.cpp
@@ -1014,131 +1014,131 @@ void ppc_device::state_string_export(const device_state_entry &entry, std::strin
switch (entry.index())
{
case PPC_F0:
- strprintf(str, "%12f", m_core->f[0]);
+ str = string_format("%12f", m_core->f[0]);
break;
case PPC_F1:
- strprintf(str, "%12f", m_core->f[1]);
+ str = string_format("%12f", m_core->f[1]);
break;
case PPC_F2:
- strprintf(str, "%12f", m_core->f[2]);
+ str = string_format("%12f", m_core->f[2]);
break;
case PPC_F3:
- strprintf(str, "%12f", m_core->f[3]);
+ str = string_format("%12f", m_core->f[3]);
break;
case PPC_F4:
- strprintf(str, "%12f", m_core->f[4]);
+ str = string_format("%12f", m_core->f[4]);
break;
case PPC_F5:
- strprintf(str, "%12f", m_core->f[5]);
+ str = string_format("%12f", m_core->f[5]);
break;
case PPC_F6:
- strprintf(str, "%12f", m_core->f[6]);
+ str = string_format("%12f", m_core->f[6]);
break;
case PPC_F7:
- strprintf(str, "%12f", m_core->f[7]);
+ str = string_format("%12f", m_core->f[7]);
break;
case PPC_F8:
- strprintf(str, "%12f", m_core->f[8]);
+ str = string_format("%12f", m_core->f[8]);
break;
case PPC_F9:
- strprintf(str, "%12f", m_core->f[9]);
+ str = string_format("%12f", m_core->f[9]);
break;
case PPC_F10:
- strprintf(str, "%12f", m_core->f[10]);
+ str = string_format("%12f", m_core->f[10]);
break;
case PPC_F11:
- strprintf(str, "%12f", m_core->f[11]);
+ str = string_format("%12f", m_core->f[11]);
break;
case PPC_F12:
- strprintf(str, "%12f", m_core->f[12]);
+ str = string_format("%12f", m_core->f[12]);
break;
case PPC_F13:
- strprintf(str, "%12f", m_core->f[13]);
+ str = string_format("%12f", m_core->f[13]);
break;
case PPC_F14:
- strprintf(str, "%12f", m_core->f[14]);
+ str = string_format("%12f", m_core->f[14]);
break;
case PPC_F15:
- strprintf(str, "%12f", m_core->f[15]);
+ str = string_format("%12f", m_core->f[15]);
break;
case PPC_F16:
- strprintf(str, "%12f", m_core->f[16]);
+ str = string_format("%12f", m_core->f[16]);
break;
case PPC_F17:
- strprintf(str, "%12f", m_core->f[17]);
+ str = string_format("%12f", m_core->f[17]);
break;
case PPC_F18:
- strprintf(str, "%12f", m_core->f[18]);
+ str = string_format("%12f", m_core->f[18]);
break;
case PPC_F19:
- strprintf(str, "%12f", m_core->f[19]);
+ str = string_format("%12f", m_core->f[19]);
break;
case PPC_F20:
- strprintf(str, "%12f", m_core->f[20]);
+ str = string_format("%12f", m_core->f[20]);
break;
case PPC_F21:
- strprintf(str, "%12f", m_core->f[21]);
+ str = string_format("%12f", m_core->f[21]);
break;
case PPC_F22:
- strprintf(str, "%12f", m_core->f[22]);
+ str = string_format("%12f", m_core->f[22]);
break;
case PPC_F23:
- strprintf(str, "%12f", m_core->f[23]);
+ str = string_format("%12f", m_core->f[23]);
break;
case PPC_F24:
- strprintf(str, "%12f", m_core->f[24]);
+ str = string_format("%12f", m_core->f[24]);
break;
case PPC_F25:
- strprintf(str, "%12f", m_core->f[25]);
+ str = string_format("%12f", m_core->f[25]);
break;
case PPC_F26:
- strprintf(str, "%12f", m_core->f[26]);
+ str = string_format("%12f", m_core->f[26]);
break;
case PPC_F27:
- strprintf(str, "%12f", m_core->f[27]);
+ str = string_format("%12f", m_core->f[27]);
break;
case PPC_F28:
- strprintf(str, "%12f", m_core->f[28]);
+ str = string_format("%12f", m_core->f[28]);
break;
case PPC_F29:
- strprintf(str, "%12f", m_core->f[29]);
+ str = string_format("%12f", m_core->f[29]);
break;
case PPC_F30:
- strprintf(str, "%12f", m_core->f[30]);
+ str = string_format("%12f", m_core->f[30]);
break;
case PPC_F31:
- strprintf(str, "%12f", m_core->f[31]);
+ str = string_format("%12f", m_core->f[31]);
break;
}
}
diff --git a/src/devices/cpu/pps4/pps4.cpp b/src/devices/cpu/pps4/pps4.cpp
index 43c79059d4b..5ae8e822846 100644
--- a/src/devices/cpu/pps4/pps4.cpp
+++ b/src/devices/cpu/pps4/pps4.cpp
@@ -1557,7 +1557,7 @@ void pps4_device::state_string_export(const device_state_entry &entry, std::stri
switch (entry.index())
{
case STATE_GENFLAGS:
- strprintf(str, "%c%c%c",
+ str = string_format("%c%c%c",
m_C ? 'C':'.',
m_FF1 ? '1':'.',
m_FF2 ? '2':'.');
diff --git a/src/devices/cpu/psx/psx.cpp b/src/devices/cpu/psx/psx.cpp
index c3e2e340d24..2c4db7ecbc6 100644
--- a/src/devices/cpu/psx/psx.cpp
+++ b/src/devices/cpu/psx/psx.cpp
@@ -2033,11 +2033,11 @@ void psxcpu_device::state_string_export( const device_state_entry &entry, std::s
case PSXCPU_DELAYR:
if( m_delayr <= PSXCPU_DELAYR_NOTPC )
{
- strprintf(str, "%02x %-3s", m_delayr, delayn[m_delayr]);
+ str = string_format("%02x %-3s", m_delayr, delayn[m_delayr]);
}
else
{
- strprintf(str, "%02x ---", m_delayr);
+ str = string_format("%02x ---", m_delayr);
}
break;
}
diff --git a/src/devices/cpu/rsp/rsp.cpp b/src/devices/cpu/rsp/rsp.cpp
index 1939cb33b5f..246843fb6af 100644
--- a/src/devices/cpu/rsp/rsp.cpp
+++ b/src/devices/cpu/rsp/rsp.cpp
@@ -548,7 +548,7 @@ void rsp_device::state_string_export(const device_state_entry &entry, std::strin
}
else if (index == STATE_GENFLAGS)
{
- strprintf(str, "%s", "");
+ str = "";
}
}
diff --git a/src/devices/cpu/rsp/rspcp2.cpp b/src/devices/cpu/rsp/rspcp2.cpp
index cb45d906bde..ae5d2ade7e5 100644
--- a/src/devices/cpu/rsp/rspcp2.cpp
+++ b/src/devices/cpu/rsp/rspcp2.cpp
@@ -751,100 +751,100 @@ void rsp_cop2::state_string_export(const int index, std::string &str) const
switch (index)
{
case RSP_V0:
- strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S( 0, 0), (UINT16)VREG_S( 0, 1), (UINT16)VREG_S( 0, 2), (UINT16)VREG_S( 0, 3), (UINT16)VREG_S( 0, 4), (UINT16)VREG_S( 0, 5), (UINT16)VREG_S( 0, 6), (UINT16)VREG_S( 0, 7));
+ str = string_format("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S( 0, 0), (UINT16)VREG_S( 0, 1), (UINT16)VREG_S( 0, 2), (UINT16)VREG_S( 0, 3), (UINT16)VREG_S( 0, 4), (UINT16)VREG_S( 0, 5), (UINT16)VREG_S( 0, 6), (UINT16)VREG_S( 0, 7));
break;
case RSP_V1:
- strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S( 1, 0), (UINT16)VREG_S( 1, 1), (UINT16)VREG_S( 1, 2), (UINT16)VREG_S( 1, 3), (UINT16)VREG_S( 1, 4), (UINT16)VREG_S( 1, 5), (UINT16)VREG_S( 1, 6), (UINT16)VREG_S( 1, 7));
+ str = string_format("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S( 1, 0), (UINT16)VREG_S( 1, 1), (UINT16)VREG_S( 1, 2), (UINT16)VREG_S( 1, 3), (UINT16)VREG_S( 1, 4), (UINT16)VREG_S( 1, 5), (UINT16)VREG_S( 1, 6), (UINT16)VREG_S( 1, 7));
break;
case RSP_V2:
- strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S( 2, 0), (UINT16)VREG_S( 2, 1), (UINT16)VREG_S( 2, 2), (UINT16)VREG_S( 2, 3), (UINT16)VREG_S( 2, 4), (UINT16)VREG_S( 2, 5), (UINT16)VREG_S( 2, 6), (UINT16)VREG_S( 2, 7));
+ str = string_format("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S( 2, 0), (UINT16)VREG_S( 2, 1), (UINT16)VREG_S( 2, 2), (UINT16)VREG_S( 2, 3), (UINT16)VREG_S( 2, 4), (UINT16)VREG_S( 2, 5), (UINT16)VREG_S( 2, 6), (UINT16)VREG_S( 2, 7));
break;
case RSP_V3:
- strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S( 3, 0), (UINT16)VREG_S( 3, 1), (UINT16)VREG_S( 3, 2), (UINT16)VREG_S( 3, 3), (UINT16)VREG_S( 3, 4), (UINT16)VREG_S( 3, 5), (UINT16)VREG_S( 3, 6), (UINT16)VREG_S( 3, 7));
+ str = string_format("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S( 3, 0), (UINT16)VREG_S( 3, 1), (UINT16)VREG_S( 3, 2), (UINT16)VREG_S( 3, 3), (UINT16)VREG_S( 3, 4), (UINT16)VREG_S( 3, 5), (UINT16)VREG_S( 3, 6), (UINT16)VREG_S( 3, 7));
break;
case RSP_V4:
- strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S( 4, 0), (UINT16)VREG_S( 4, 1), (UINT16)VREG_S( 4, 2), (UINT16)VREG_S( 4, 3), (UINT16)VREG_S( 4, 4), (UINT16)VREG_S( 4, 5), (UINT16)VREG_S( 4, 6), (UINT16)VREG_S( 4, 7));
+ str = string_format("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S( 4, 0), (UINT16)VREG_S( 4, 1), (UINT16)VREG_S( 4, 2), (UINT16)VREG_S( 4, 3), (UINT16)VREG_S( 4, 4), (UINT16)VREG_S( 4, 5), (UINT16)VREG_S( 4, 6), (UINT16)VREG_S( 4, 7));
break;
case RSP_V5:
- strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S( 5, 0), (UINT16)VREG_S( 5, 1), (UINT16)VREG_S( 5, 2), (UINT16)VREG_S( 5, 3), (UINT16)VREG_S( 5, 4), (UINT16)VREG_S( 5, 5), (UINT16)VREG_S( 5, 6), (UINT16)VREG_S( 5, 7));
+ str = string_format("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S( 5, 0), (UINT16)VREG_S( 5, 1), (UINT16)VREG_S( 5, 2), (UINT16)VREG_S( 5, 3), (UINT16)VREG_S( 5, 4), (UINT16)VREG_S( 5, 5), (UINT16)VREG_S( 5, 6), (UINT16)VREG_S( 5, 7));
break;
case RSP_V6:
- strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S( 6, 0), (UINT16)VREG_S( 6, 1), (UINT16)VREG_S( 6, 2), (UINT16)VREG_S( 6, 3), (UINT16)VREG_S( 6, 4), (UINT16)VREG_S( 6, 5), (UINT16)VREG_S( 6, 6), (UINT16)VREG_S( 6, 7));
+ str = string_format("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S( 6, 0), (UINT16)VREG_S( 6, 1), (UINT16)VREG_S( 6, 2), (UINT16)VREG_S( 6, 3), (UINT16)VREG_S( 6, 4), (UINT16)VREG_S( 6, 5), (UINT16)VREG_S( 6, 6), (UINT16)VREG_S( 6, 7));
break;
case RSP_V7:
- strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S( 7, 0), (UINT16)VREG_S( 7, 1), (UINT16)VREG_S( 7, 2), (UINT16)VREG_S( 7, 3), (UINT16)VREG_S( 7, 4), (UINT16)VREG_S( 7, 5), (UINT16)VREG_S( 7, 6), (UINT16)VREG_S( 7, 7));
+ str = string_format("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S( 7, 0), (UINT16)VREG_S( 7, 1), (UINT16)VREG_S( 7, 2), (UINT16)VREG_S( 7, 3), (UINT16)VREG_S( 7, 4), (UINT16)VREG_S( 7, 5), (UINT16)VREG_S( 7, 6), (UINT16)VREG_S( 7, 7));
break;
case RSP_V8:
- strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S( 8, 0), (UINT16)VREG_S( 8, 1), (UINT16)VREG_S( 8, 2), (UINT16)VREG_S( 8, 3), (UINT16)VREG_S( 8, 4), (UINT16)VREG_S( 8, 5), (UINT16)VREG_S( 8, 6), (UINT16)VREG_S( 8, 7));
+ str = string_format("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S( 8, 0), (UINT16)VREG_S( 8, 1), (UINT16)VREG_S( 8, 2), (UINT16)VREG_S( 8, 3), (UINT16)VREG_S( 8, 4), (UINT16)VREG_S( 8, 5), (UINT16)VREG_S( 8, 6), (UINT16)VREG_S( 8, 7));
break;
case RSP_V9:
- strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S( 9, 0), (UINT16)VREG_S( 9, 1), (UINT16)VREG_S( 9, 2), (UINT16)VREG_S( 9, 3), (UINT16)VREG_S( 9, 4), (UINT16)VREG_S( 9, 5), (UINT16)VREG_S( 9, 6), (UINT16)VREG_S( 9, 7));
+ str = string_format("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S( 9, 0), (UINT16)VREG_S( 9, 1), (UINT16)VREG_S( 9, 2), (UINT16)VREG_S( 9, 3), (UINT16)VREG_S( 9, 4), (UINT16)VREG_S( 9, 5), (UINT16)VREG_S( 9, 6), (UINT16)VREG_S( 9, 7));
break;
case RSP_V10:
- strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(10, 0), (UINT16)VREG_S(10, 1), (UINT16)VREG_S(10, 2), (UINT16)VREG_S(10, 3), (UINT16)VREG_S(10, 4), (UINT16)VREG_S(10, 5), (UINT16)VREG_S(10, 6), (UINT16)VREG_S(10, 7));
+ str = string_format("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(10, 0), (UINT16)VREG_S(10, 1), (UINT16)VREG_S(10, 2), (UINT16)VREG_S(10, 3), (UINT16)VREG_S(10, 4), (UINT16)VREG_S(10, 5), (UINT16)VREG_S(10, 6), (UINT16)VREG_S(10, 7));
break;
case RSP_V11:
- strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(11, 0), (UINT16)VREG_S(11, 1), (UINT16)VREG_S(11, 2), (UINT16)VREG_S(11, 3), (UINT16)VREG_S(11, 4), (UINT16)VREG_S(11, 5), (UINT16)VREG_S(11, 6), (UINT16)VREG_S(11, 7));
+ str = string_format("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(11, 0), (UINT16)VREG_S(11, 1), (UINT16)VREG_S(11, 2), (UINT16)VREG_S(11, 3), (UINT16)VREG_S(11, 4), (UINT16)VREG_S(11, 5), (UINT16)VREG_S(11, 6), (UINT16)VREG_S(11, 7));
break;
case RSP_V12:
- strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(12, 0), (UINT16)VREG_S(12, 1), (UINT16)VREG_S(12, 2), (UINT16)VREG_S(12, 3), (UINT16)VREG_S(12, 4), (UINT16)VREG_S(12, 5), (UINT16)VREG_S(12, 6), (UINT16)VREG_S(12, 7));
+ str = string_format("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(12, 0), (UINT16)VREG_S(12, 1), (UINT16)VREG_S(12, 2), (UINT16)VREG_S(12, 3), (UINT16)VREG_S(12, 4), (UINT16)VREG_S(12, 5), (UINT16)VREG_S(12, 6), (UINT16)VREG_S(12, 7));
break;
case RSP_V13:
- strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(13, 0), (UINT16)VREG_S(13, 1), (UINT16)VREG_S(13, 2), (UINT16)VREG_S(13, 3), (UINT16)VREG_S(13, 4), (UINT16)VREG_S(13, 5), (UINT16)VREG_S(13, 6), (UINT16)VREG_S(13, 7));
+ str = string_format("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(13, 0), (UINT16)VREG_S(13, 1), (UINT16)VREG_S(13, 2), (UINT16)VREG_S(13, 3), (UINT16)VREG_S(13, 4), (UINT16)VREG_S(13, 5), (UINT16)VREG_S(13, 6), (UINT16)VREG_S(13, 7));
break;
case RSP_V14:
- strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(14, 0), (UINT16)VREG_S(14, 1), (UINT16)VREG_S(14, 2), (UINT16)VREG_S(14, 3), (UINT16)VREG_S(14, 4), (UINT16)VREG_S(14, 5), (UINT16)VREG_S(14, 6), (UINT16)VREG_S(14, 7));
+ str = string_format("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(14, 0), (UINT16)VREG_S(14, 1), (UINT16)VREG_S(14, 2), (UINT16)VREG_S(14, 3), (UINT16)VREG_S(14, 4), (UINT16)VREG_S(14, 5), (UINT16)VREG_S(14, 6), (UINT16)VREG_S(14, 7));
break;
case RSP_V15:
- strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(15, 0), (UINT16)VREG_S(15, 1), (UINT16)VREG_S(15, 2), (UINT16)VREG_S(15, 3), (UINT16)VREG_S(15, 4), (UINT16)VREG_S(15, 5), (UINT16)VREG_S(15, 6), (UINT16)VREG_S(15, 7));
+ str = string_format("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(15, 0), (UINT16)VREG_S(15, 1), (UINT16)VREG_S(15, 2), (UINT16)VREG_S(15, 3), (UINT16)VREG_S(15, 4), (UINT16)VREG_S(15, 5), (UINT16)VREG_S(15, 6), (UINT16)VREG_S(15, 7));
break;
case RSP_V16:
- strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(16, 0), (UINT16)VREG_S(16, 1), (UINT16)VREG_S(16, 2), (UINT16)VREG_S(16, 3), (UINT16)VREG_S(16, 4), (UINT16)VREG_S(16, 5), (UINT16)VREG_S(16, 6), (UINT16)VREG_S(16, 7));
+ str = string_format("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(16, 0), (UINT16)VREG_S(16, 1), (UINT16)VREG_S(16, 2), (UINT16)VREG_S(16, 3), (UINT16)VREG_S(16, 4), (UINT16)VREG_S(16, 5), (UINT16)VREG_S(16, 6), (UINT16)VREG_S(16, 7));
break;
case RSP_V17:
- strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(17, 0), (UINT16)VREG_S(17, 1), (UINT16)VREG_S(17, 2), (UINT16)VREG_S(17, 3), (UINT16)VREG_S(17, 4), (UINT16)VREG_S(17, 5), (UINT16)VREG_S(17, 6), (UINT16)VREG_S(17, 7));
+ str = string_format("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(17, 0), (UINT16)VREG_S(17, 1), (UINT16)VREG_S(17, 2), (UINT16)VREG_S(17, 3), (UINT16)VREG_S(17, 4), (UINT16)VREG_S(17, 5), (UINT16)VREG_S(17, 6), (UINT16)VREG_S(17, 7));
break;
case RSP_V18:
- strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(18, 0), (UINT16)VREG_S(18, 1), (UINT16)VREG_S(18, 2), (UINT16)VREG_S(18, 3), (UINT16)VREG_S(18, 4), (UINT16)VREG_S(18, 5), (UINT16)VREG_S(18, 6), (UINT16)VREG_S(18, 7));
+ str = string_format("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(18, 0), (UINT16)VREG_S(18, 1), (UINT16)VREG_S(18, 2), (UINT16)VREG_S(18, 3), (UINT16)VREG_S(18, 4), (UINT16)VREG_S(18, 5), (UINT16)VREG_S(18, 6), (UINT16)VREG_S(18, 7));
break;
case RSP_V19:
- strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(19, 0), (UINT16)VREG_S(19, 1), (UINT16)VREG_S(19, 2), (UINT16)VREG_S(19, 3), (UINT16)VREG_S(19, 4), (UINT16)VREG_S(19, 5), (UINT16)VREG_S(19, 6), (UINT16)VREG_S(19, 7));
+ str = string_format("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(19, 0), (UINT16)VREG_S(19, 1), (UINT16)VREG_S(19, 2), (UINT16)VREG_S(19, 3), (UINT16)VREG_S(19, 4), (UINT16)VREG_S(19, 5), (UINT16)VREG_S(19, 6), (UINT16)VREG_S(19, 7));
break;
case RSP_V20:
- strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(20, 0), (UINT16)VREG_S(20, 1), (UINT16)VREG_S(20, 2), (UINT16)VREG_S(20, 3), (UINT16)VREG_S(20, 4), (UINT16)VREG_S(20, 5), (UINT16)VREG_S(20, 6), (UINT16)VREG_S(20, 7));
+ str = string_format("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(20, 0), (UINT16)VREG_S(20, 1), (UINT16)VREG_S(20, 2), (UINT16)VREG_S(20, 3), (UINT16)VREG_S(20, 4), (UINT16)VREG_S(20, 5), (UINT16)VREG_S(20, 6), (UINT16)VREG_S(20, 7));
break;
case RSP_V21:
- strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(21, 0), (UINT16)VREG_S(21, 1), (UINT16)VREG_S(21, 2), (UINT16)VREG_S(21, 3), (UINT16)VREG_S(21, 4), (UINT16)VREG_S(21, 5), (UINT16)VREG_S(21, 6), (UINT16)VREG_S(21, 7));
+ str = string_format("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(21, 0), (UINT16)VREG_S(21, 1), (UINT16)VREG_S(21, 2), (UINT16)VREG_S(21, 3), (UINT16)VREG_S(21, 4), (UINT16)VREG_S(21, 5), (UINT16)VREG_S(21, 6), (UINT16)VREG_S(21, 7));
break;
case RSP_V22:
- strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(22, 0), (UINT16)VREG_S(22, 1), (UINT16)VREG_S(22, 2), (UINT16)VREG_S(22, 3), (UINT16)VREG_S(22, 4), (UINT16)VREG_S(22, 5), (UINT16)VREG_S(22, 6), (UINT16)VREG_S(22, 7));
+ str = string_format("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(22, 0), (UINT16)VREG_S(22, 1), (UINT16)VREG_S(22, 2), (UINT16)VREG_S(22, 3), (UINT16)VREG_S(22, 4), (UINT16)VREG_S(22, 5), (UINT16)VREG_S(22, 6), (UINT16)VREG_S(22, 7));
break;
case RSP_V23:
- strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(23, 0), (UINT16)VREG_S(23, 1), (UINT16)VREG_S(23, 2), (UINT16)VREG_S(23, 3), (UINT16)VREG_S(23, 4), (UINT16)VREG_S(23, 5), (UINT16)VREG_S(23, 6), (UINT16)VREG_S(23, 7));
+ str = string_format("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(23, 0), (UINT16)VREG_S(23, 1), (UINT16)VREG_S(23, 2), (UINT16)VREG_S(23, 3), (UINT16)VREG_S(23, 4), (UINT16)VREG_S(23, 5), (UINT16)VREG_S(23, 6), (UINT16)VREG_S(23, 7));
break;
case RSP_V24:
- strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(24, 0), (UINT16)VREG_S(24, 1), (UINT16)VREG_S(24, 2), (UINT16)VREG_S(24, 3), (UINT16)VREG_S(24, 4), (UINT16)VREG_S(24, 5), (UINT16)VREG_S(24, 6), (UINT16)VREG_S(24, 7));
+ str = string_format("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(24, 0), (UINT16)VREG_S(24, 1), (UINT16)VREG_S(24, 2), (UINT16)VREG_S(24, 3), (UINT16)VREG_S(24, 4), (UINT16)VREG_S(24, 5), (UINT16)VREG_S(24, 6), (UINT16)VREG_S(24, 7));
break;
case RSP_V25:
- strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(25, 0), (UINT16)VREG_S(25, 1), (UINT16)VREG_S(25, 2), (UINT16)VREG_S(25, 3), (UINT16)VREG_S(25, 4), (UINT16)VREG_S(25, 5), (UINT16)VREG_S(25, 6), (UINT16)VREG_S(25, 7));
+ str = string_format("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(25, 0), (UINT16)VREG_S(25, 1), (UINT16)VREG_S(25, 2), (UINT16)VREG_S(25, 3), (UINT16)VREG_S(25, 4), (UINT16)VREG_S(25, 5), (UINT16)VREG_S(25, 6), (UINT16)VREG_S(25, 7));
break;
case RSP_V26:
- strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(26, 0), (UINT16)VREG_S(26, 1), (UINT16)VREG_S(26, 2), (UINT16)VREG_S(26, 3), (UINT16)VREG_S(26, 4), (UINT16)VREG_S(26, 5), (UINT16)VREG_S(26, 6), (UINT16)VREG_S(26, 7));
+ str = string_format("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(26, 0), (UINT16)VREG_S(26, 1), (UINT16)VREG_S(26, 2), (UINT16)VREG_S(26, 3), (UINT16)VREG_S(26, 4), (UINT16)VREG_S(26, 5), (UINT16)VREG_S(26, 6), (UINT16)VREG_S(26, 7));
break;
case RSP_V27:
- strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(27, 0), (UINT16)VREG_S(27, 1), (UINT16)VREG_S(27, 2), (UINT16)VREG_S(27, 3), (UINT16)VREG_S(27, 4), (UINT16)VREG_S(27, 5), (UINT16)VREG_S(27, 6), (UINT16)VREG_S(27, 7));
+ str = string_format("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(27, 0), (UINT16)VREG_S(27, 1), (UINT16)VREG_S(27, 2), (UINT16)VREG_S(27, 3), (UINT16)VREG_S(27, 4), (UINT16)VREG_S(27, 5), (UINT16)VREG_S(27, 6), (UINT16)VREG_S(27, 7));
break;
case RSP_V28:
- strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(28, 0), (UINT16)VREG_S(28, 1), (UINT16)VREG_S(28, 2), (UINT16)VREG_S(28, 3), (UINT16)VREG_S(28, 4), (UINT16)VREG_S(28, 5), (UINT16)VREG_S(28, 6), (UINT16)VREG_S(28, 7));
+ str = string_format("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(28, 0), (UINT16)VREG_S(28, 1), (UINT16)VREG_S(28, 2), (UINT16)VREG_S(28, 3), (UINT16)VREG_S(28, 4), (UINT16)VREG_S(28, 5), (UINT16)VREG_S(28, 6), (UINT16)VREG_S(28, 7));
break;
case RSP_V29:
- strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(29, 0), (UINT16)VREG_S(29, 1), (UINT16)VREG_S(29, 2), (UINT16)VREG_S(29, 3), (UINT16)VREG_S(29, 4), (UINT16)VREG_S(29, 5), (UINT16)VREG_S(29, 6), (UINT16)VREG_S(29, 7));
+ str = string_format("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(29, 0), (UINT16)VREG_S(29, 1), (UINT16)VREG_S(29, 2), (UINT16)VREG_S(29, 3), (UINT16)VREG_S(29, 4), (UINT16)VREG_S(29, 5), (UINT16)VREG_S(29, 6), (UINT16)VREG_S(29, 7));
break;
case RSP_V30:
- strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(30, 0), (UINT16)VREG_S(30, 1), (UINT16)VREG_S(30, 2), (UINT16)VREG_S(30, 3), (UINT16)VREG_S(30, 4), (UINT16)VREG_S(30, 5), (UINT16)VREG_S(30, 6), (UINT16)VREG_S(30, 7));
+ str = string_format("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(30, 0), (UINT16)VREG_S(30, 1), (UINT16)VREG_S(30, 2), (UINT16)VREG_S(30, 3), (UINT16)VREG_S(30, 4), (UINT16)VREG_S(30, 5), (UINT16)VREG_S(30, 6), (UINT16)VREG_S(30, 7));
break;
case RSP_V31:
- strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(31, 0), (UINT16)VREG_S(31, 1), (UINT16)VREG_S(31, 2), (UINT16)VREG_S(31, 3), (UINT16)VREG_S(31, 4), (UINT16)VREG_S(31, 5), (UINT16)VREG_S(31, 6), (UINT16)VREG_S(31, 7));
+ str = string_format("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(31, 0), (UINT16)VREG_S(31, 1), (UINT16)VREG_S(31, 2), (UINT16)VREG_S(31, 3), (UINT16)VREG_S(31, 4), (UINT16)VREG_S(31, 5), (UINT16)VREG_S(31, 6), (UINT16)VREG_S(31, 7));
break;
}
}
diff --git a/src/devices/cpu/rsp/rspcp2d.cpp b/src/devices/cpu/rsp/rspcp2d.cpp
index 4caacd28a0d..cdcfb175f47 100644
--- a/src/devices/cpu/rsp/rspcp2d.cpp
+++ b/src/devices/cpu/rsp/rspcp2d.cpp
@@ -152,100 +152,100 @@ void rsp_cop2_drc::state_string_export(const int index, std::string &str) const
switch (index)
{
case RSP_V0:
- strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S( 0, 0), (UINT16)VREG_S( 0, 1), (UINT16)VREG_S( 0, 2), (UINT16)VREG_S( 0, 3), (UINT16)VREG_S( 0, 4), (UINT16)VREG_S( 0, 5), (UINT16)VREG_S( 0, 6), (UINT16)VREG_S( 0, 7));
+ str = string_format("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S( 0, 0), (UINT16)VREG_S( 0, 1), (UINT16)VREG_S( 0, 2), (UINT16)VREG_S( 0, 3), (UINT16)VREG_S( 0, 4), (UINT16)VREG_S( 0, 5), (UINT16)VREG_S( 0, 6), (UINT16)VREG_S( 0, 7));
break;
case RSP_V1:
- strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S( 1, 0), (UINT16)VREG_S( 1, 1), (UINT16)VREG_S( 1, 2), (UINT16)VREG_S( 1, 3), (UINT16)VREG_S( 1, 4), (UINT16)VREG_S( 1, 5), (UINT16)VREG_S( 1, 6), (UINT16)VREG_S( 1, 7));
+ str = string_format("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S( 1, 0), (UINT16)VREG_S( 1, 1), (UINT16)VREG_S( 1, 2), (UINT16)VREG_S( 1, 3), (UINT16)VREG_S( 1, 4), (UINT16)VREG_S( 1, 5), (UINT16)VREG_S( 1, 6), (UINT16)VREG_S( 1, 7));
break;
case RSP_V2:
- strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S( 2, 0), (UINT16)VREG_S( 2, 1), (UINT16)VREG_S( 2, 2), (UINT16)VREG_S( 2, 3), (UINT16)VREG_S( 2, 4), (UINT16)VREG_S( 2, 5), (UINT16)VREG_S( 2, 6), (UINT16)VREG_S( 2, 7));
+ str = string_format("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S( 2, 0), (UINT16)VREG_S( 2, 1), (UINT16)VREG_S( 2, 2), (UINT16)VREG_S( 2, 3), (UINT16)VREG_S( 2, 4), (UINT16)VREG_S( 2, 5), (UINT16)VREG_S( 2, 6), (UINT16)VREG_S( 2, 7));
break;
case RSP_V3:
- strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S( 3, 0), (UINT16)VREG_S( 3, 1), (UINT16)VREG_S( 3, 2), (UINT16)VREG_S( 3, 3), (UINT16)VREG_S( 3, 4), (UINT16)VREG_S( 3, 5), (UINT16)VREG_S( 3, 6), (UINT16)VREG_S( 3, 7));
+ str = string_format("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S( 3, 0), (UINT16)VREG_S( 3, 1), (UINT16)VREG_S( 3, 2), (UINT16)VREG_S( 3, 3), (UINT16)VREG_S( 3, 4), (UINT16)VREG_S( 3, 5), (UINT16)VREG_S( 3, 6), (UINT16)VREG_S( 3, 7));
break;
case RSP_V4:
- strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S( 4, 0), (UINT16)VREG_S( 4, 1), (UINT16)VREG_S( 4, 2), (UINT16)VREG_S( 4, 3), (UINT16)VREG_S( 4, 4), (UINT16)VREG_S( 4, 5), (UINT16)VREG_S( 4, 6), (UINT16)VREG_S( 4, 7));
+ str = string_format("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S( 4, 0), (UINT16)VREG_S( 4, 1), (UINT16)VREG_S( 4, 2), (UINT16)VREG_S( 4, 3), (UINT16)VREG_S( 4, 4), (UINT16)VREG_S( 4, 5), (UINT16)VREG_S( 4, 6), (UINT16)VREG_S( 4, 7));
break;
case RSP_V5:
- strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S( 5, 0), (UINT16)VREG_S( 5, 1), (UINT16)VREG_S( 5, 2), (UINT16)VREG_S( 5, 3), (UINT16)VREG_S( 5, 4), (UINT16)VREG_S( 5, 5), (UINT16)VREG_S( 5, 6), (UINT16)VREG_S( 5, 7));
+ str = string_format("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S( 5, 0), (UINT16)VREG_S( 5, 1), (UINT16)VREG_S( 5, 2), (UINT16)VREG_S( 5, 3), (UINT16)VREG_S( 5, 4), (UINT16)VREG_S( 5, 5), (UINT16)VREG_S( 5, 6), (UINT16)VREG_S( 5, 7));
break;
case RSP_V6:
- strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S( 6, 0), (UINT16)VREG_S( 6, 1), (UINT16)VREG_S( 6, 2), (UINT16)VREG_S( 6, 3), (UINT16)VREG_S( 6, 4), (UINT16)VREG_S( 6, 5), (UINT16)VREG_S( 6, 6), (UINT16)VREG_S( 6, 7));
+ str = string_format("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S( 6, 0), (UINT16)VREG_S( 6, 1), (UINT16)VREG_S( 6, 2), (UINT16)VREG_S( 6, 3), (UINT16)VREG_S( 6, 4), (UINT16)VREG_S( 6, 5), (UINT16)VREG_S( 6, 6), (UINT16)VREG_S( 6, 7));
break;
case RSP_V7:
- strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S( 7, 0), (UINT16)VREG_S( 7, 1), (UINT16)VREG_S( 7, 2), (UINT16)VREG_S( 7, 3), (UINT16)VREG_S( 7, 4), (UINT16)VREG_S( 7, 5), (UINT16)VREG_S( 7, 6), (UINT16)VREG_S( 7, 7));
+ str = string_format("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S( 7, 0), (UINT16)VREG_S( 7, 1), (UINT16)VREG_S( 7, 2), (UINT16)VREG_S( 7, 3), (UINT16)VREG_S( 7, 4), (UINT16)VREG_S( 7, 5), (UINT16)VREG_S( 7, 6), (UINT16)VREG_S( 7, 7));
break;
case RSP_V8:
- strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S( 8, 0), (UINT16)VREG_S( 8, 1), (UINT16)VREG_S( 8, 2), (UINT16)VREG_S( 8, 3), (UINT16)VREG_S( 8, 4), (UINT16)VREG_S( 8, 5), (UINT16)VREG_S( 8, 6), (UINT16)VREG_S( 8, 7));
+ str = string_format("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S( 8, 0), (UINT16)VREG_S( 8, 1), (UINT16)VREG_S( 8, 2), (UINT16)VREG_S( 8, 3), (UINT16)VREG_S( 8, 4), (UINT16)VREG_S( 8, 5), (UINT16)VREG_S( 8, 6), (UINT16)VREG_S( 8, 7));
break;
case RSP_V9:
- strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S( 9, 0), (UINT16)VREG_S( 9, 1), (UINT16)VREG_S( 9, 2), (UINT16)VREG_S( 9, 3), (UINT16)VREG_S( 9, 4), (UINT16)VREG_S( 9, 5), (UINT16)VREG_S( 9, 6), (UINT16)VREG_S( 9, 7));
+ str = string_format("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S( 9, 0), (UINT16)VREG_S( 9, 1), (UINT16)VREG_S( 9, 2), (UINT16)VREG_S( 9, 3), (UINT16)VREG_S( 9, 4), (UINT16)VREG_S( 9, 5), (UINT16)VREG_S( 9, 6), (UINT16)VREG_S( 9, 7));
break;
case RSP_V10:
- strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(10, 0), (UINT16)VREG_S(10, 1), (UINT16)VREG_S(10, 2), (UINT16)VREG_S(10, 3), (UINT16)VREG_S(10, 4), (UINT16)VREG_S(10, 5), (UINT16)VREG_S(10, 6), (UINT16)VREG_S(10, 7));
+ str = string_format("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(10, 0), (UINT16)VREG_S(10, 1), (UINT16)VREG_S(10, 2), (UINT16)VREG_S(10, 3), (UINT16)VREG_S(10, 4), (UINT16)VREG_S(10, 5), (UINT16)VREG_S(10, 6), (UINT16)VREG_S(10, 7));
break;
case RSP_V11:
- strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(11, 0), (UINT16)VREG_S(11, 1), (UINT16)VREG_S(11, 2), (UINT16)VREG_S(11, 3), (UINT16)VREG_S(11, 4), (UINT16)VREG_S(11, 5), (UINT16)VREG_S(11, 6), (UINT16)VREG_S(11, 7));
+ str = string_format("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(11, 0), (UINT16)VREG_S(11, 1), (UINT16)VREG_S(11, 2), (UINT16)VREG_S(11, 3), (UINT16)VREG_S(11, 4), (UINT16)VREG_S(11, 5), (UINT16)VREG_S(11, 6), (UINT16)VREG_S(11, 7));
break;
case RSP_V12:
- strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(12, 0), (UINT16)VREG_S(12, 1), (UINT16)VREG_S(12, 2), (UINT16)VREG_S(12, 3), (UINT16)VREG_S(12, 4), (UINT16)VREG_S(12, 5), (UINT16)VREG_S(12, 6), (UINT16)VREG_S(12, 7));
+ str = string_format("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(12, 0), (UINT16)VREG_S(12, 1), (UINT16)VREG_S(12, 2), (UINT16)VREG_S(12, 3), (UINT16)VREG_S(12, 4), (UINT16)VREG_S(12, 5), (UINT16)VREG_S(12, 6), (UINT16)VREG_S(12, 7));
break;
case RSP_V13:
- strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(13, 0), (UINT16)VREG_S(13, 1), (UINT16)VREG_S(13, 2), (UINT16)VREG_S(13, 3), (UINT16)VREG_S(13, 4), (UINT16)VREG_S(13, 5), (UINT16)VREG_S(13, 6), (UINT16)VREG_S(13, 7));
+ str = string_format("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(13, 0), (UINT16)VREG_S(13, 1), (UINT16)VREG_S(13, 2), (UINT16)VREG_S(13, 3), (UINT16)VREG_S(13, 4), (UINT16)VREG_S(13, 5), (UINT16)VREG_S(13, 6), (UINT16)VREG_S(13, 7));
break;
case RSP_V14:
- strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(14, 0), (UINT16)VREG_S(14, 1), (UINT16)VREG_S(14, 2), (UINT16)VREG_S(14, 3), (UINT16)VREG_S(14, 4), (UINT16)VREG_S(14, 5), (UINT16)VREG_S(14, 6), (UINT16)VREG_S(14, 7));
+ str = string_format("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(14, 0), (UINT16)VREG_S(14, 1), (UINT16)VREG_S(14, 2), (UINT16)VREG_S(14, 3), (UINT16)VREG_S(14, 4), (UINT16)VREG_S(14, 5), (UINT16)VREG_S(14, 6), (UINT16)VREG_S(14, 7));
break;
case RSP_V15:
- strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(15, 0), (UINT16)VREG_S(15, 1), (UINT16)VREG_S(15, 2), (UINT16)VREG_S(15, 3), (UINT16)VREG_S(15, 4), (UINT16)VREG_S(15, 5), (UINT16)VREG_S(15, 6), (UINT16)VREG_S(15, 7));
+ str = string_format("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(15, 0), (UINT16)VREG_S(15, 1), (UINT16)VREG_S(15, 2), (UINT16)VREG_S(15, 3), (UINT16)VREG_S(15, 4), (UINT16)VREG_S(15, 5), (UINT16)VREG_S(15, 6), (UINT16)VREG_S(15, 7));
break;
case RSP_V16:
- strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(16, 0), (UINT16)VREG_S(16, 1), (UINT16)VREG_S(16, 2), (UINT16)VREG_S(16, 3), (UINT16)VREG_S(16, 4), (UINT16)VREG_S(16, 5), (UINT16)VREG_S(16, 6), (UINT16)VREG_S(16, 7));
+ str = string_format("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(16, 0), (UINT16)VREG_S(16, 1), (UINT16)VREG_S(16, 2), (UINT16)VREG_S(16, 3), (UINT16)VREG_S(16, 4), (UINT16)VREG_S(16, 5), (UINT16)VREG_S(16, 6), (UINT16)VREG_S(16, 7));
break;
case RSP_V17:
- strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(17, 0), (UINT16)VREG_S(17, 1), (UINT16)VREG_S(17, 2), (UINT16)VREG_S(17, 3), (UINT16)VREG_S(17, 4), (UINT16)VREG_S(17, 5), (UINT16)VREG_S(17, 6), (UINT16)VREG_S(17, 7));
+ str = string_format("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(17, 0), (UINT16)VREG_S(17, 1), (UINT16)VREG_S(17, 2), (UINT16)VREG_S(17, 3), (UINT16)VREG_S(17, 4), (UINT16)VREG_S(17, 5), (UINT16)VREG_S(17, 6), (UINT16)VREG_S(17, 7));
break;
case RSP_V18:
- strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(18, 0), (UINT16)VREG_S(18, 1), (UINT16)VREG_S(18, 2), (UINT16)VREG_S(18, 3), (UINT16)VREG_S(18, 4), (UINT16)VREG_S(18, 5), (UINT16)VREG_S(18, 6), (UINT16)VREG_S(18, 7));
+ str = string_format("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(18, 0), (UINT16)VREG_S(18, 1), (UINT16)VREG_S(18, 2), (UINT16)VREG_S(18, 3), (UINT16)VREG_S(18, 4), (UINT16)VREG_S(18, 5), (UINT16)VREG_S(18, 6), (UINT16)VREG_S(18, 7));
break;
case RSP_V19:
- strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(19, 0), (UINT16)VREG_S(19, 1), (UINT16)VREG_S(19, 2), (UINT16)VREG_S(19, 3), (UINT16)VREG_S(19, 4), (UINT16)VREG_S(19, 5), (UINT16)VREG_S(19, 6), (UINT16)VREG_S(19, 7));
+ str = string_format("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(19, 0), (UINT16)VREG_S(19, 1), (UINT16)VREG_S(19, 2), (UINT16)VREG_S(19, 3), (UINT16)VREG_S(19, 4), (UINT16)VREG_S(19, 5), (UINT16)VREG_S(19, 6), (UINT16)VREG_S(19, 7));
break;
case RSP_V20:
- strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(20, 0), (UINT16)VREG_S(20, 1), (UINT16)VREG_S(20, 2), (UINT16)VREG_S(20, 3), (UINT16)VREG_S(20, 4), (UINT16)VREG_S(20, 5), (UINT16)VREG_S(20, 6), (UINT16)VREG_S(20, 7));
+ str = string_format("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(20, 0), (UINT16)VREG_S(20, 1), (UINT16)VREG_S(20, 2), (UINT16)VREG_S(20, 3), (UINT16)VREG_S(20, 4), (UINT16)VREG_S(20, 5), (UINT16)VREG_S(20, 6), (UINT16)VREG_S(20, 7));
break;
case RSP_V21:
- strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(21, 0), (UINT16)VREG_S(21, 1), (UINT16)VREG_S(21, 2), (UINT16)VREG_S(21, 3), (UINT16)VREG_S(21, 4), (UINT16)VREG_S(21, 5), (UINT16)VREG_S(21, 6), (UINT16)VREG_S(21, 7));
+ str = string_format("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(21, 0), (UINT16)VREG_S(21, 1), (UINT16)VREG_S(21, 2), (UINT16)VREG_S(21, 3), (UINT16)VREG_S(21, 4), (UINT16)VREG_S(21, 5), (UINT16)VREG_S(21, 6), (UINT16)VREG_S(21, 7));
break;
case RSP_V22:
- strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(22, 0), (UINT16)VREG_S(22, 1), (UINT16)VREG_S(22, 2), (UINT16)VREG_S(22, 3), (UINT16)VREG_S(22, 4), (UINT16)VREG_S(22, 5), (UINT16)VREG_S(22, 6), (UINT16)VREG_S(22, 7));
+ str = string_format("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(22, 0), (UINT16)VREG_S(22, 1), (UINT16)VREG_S(22, 2), (UINT16)VREG_S(22, 3), (UINT16)VREG_S(22, 4), (UINT16)VREG_S(22, 5), (UINT16)VREG_S(22, 6), (UINT16)VREG_S(22, 7));
break;
case RSP_V23:
- strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(23, 0), (UINT16)VREG_S(23, 1), (UINT16)VREG_S(23, 2), (UINT16)VREG_S(23, 3), (UINT16)VREG_S(23, 4), (UINT16)VREG_S(23, 5), (UINT16)VREG_S(23, 6), (UINT16)VREG_S(23, 7));
+ str = string_format("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(23, 0), (UINT16)VREG_S(23, 1), (UINT16)VREG_S(23, 2), (UINT16)VREG_S(23, 3), (UINT16)VREG_S(23, 4), (UINT16)VREG_S(23, 5), (UINT16)VREG_S(23, 6), (UINT16)VREG_S(23, 7));
break;
case RSP_V24:
- strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(24, 0), (UINT16)VREG_S(24, 1), (UINT16)VREG_S(24, 2), (UINT16)VREG_S(24, 3), (UINT16)VREG_S(24, 4), (UINT16)VREG_S(24, 5), (UINT16)VREG_S(24, 6), (UINT16)VREG_S(24, 7));
+ str = string_format("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(24, 0), (UINT16)VREG_S(24, 1), (UINT16)VREG_S(24, 2), (UINT16)VREG_S(24, 3), (UINT16)VREG_S(24, 4), (UINT16)VREG_S(24, 5), (UINT16)VREG_S(24, 6), (UINT16)VREG_S(24, 7));
break;
case RSP_V25:
- strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(25, 0), (UINT16)VREG_S(25, 1), (UINT16)VREG_S(25, 2), (UINT16)VREG_S(25, 3), (UINT16)VREG_S(25, 4), (UINT16)VREG_S(25, 5), (UINT16)VREG_S(25, 6), (UINT16)VREG_S(25, 7));
+ str = string_format("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(25, 0), (UINT16)VREG_S(25, 1), (UINT16)VREG_S(25, 2), (UINT16)VREG_S(25, 3), (UINT16)VREG_S(25, 4), (UINT16)VREG_S(25, 5), (UINT16)VREG_S(25, 6), (UINT16)VREG_S(25, 7));
break;
case RSP_V26:
- strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(26, 0), (UINT16)VREG_S(26, 1), (UINT16)VREG_S(26, 2), (UINT16)VREG_S(26, 3), (UINT16)VREG_S(26, 4), (UINT16)VREG_S(26, 5), (UINT16)VREG_S(26, 6), (UINT16)VREG_S(26, 7));
+ str = string_format("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(26, 0), (UINT16)VREG_S(26, 1), (UINT16)VREG_S(26, 2), (UINT16)VREG_S(26, 3), (UINT16)VREG_S(26, 4), (UINT16)VREG_S(26, 5), (UINT16)VREG_S(26, 6), (UINT16)VREG_S(26, 7));
break;
case RSP_V27:
- strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(27, 0), (UINT16)VREG_S(27, 1), (UINT16)VREG_S(27, 2), (UINT16)VREG_S(27, 3), (UINT16)VREG_S(27, 4), (UINT16)VREG_S(27, 5), (UINT16)VREG_S(27, 6), (UINT16)VREG_S(27, 7));
+ str = string_format("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(27, 0), (UINT16)VREG_S(27, 1), (UINT16)VREG_S(27, 2), (UINT16)VREG_S(27, 3), (UINT16)VREG_S(27, 4), (UINT16)VREG_S(27, 5), (UINT16)VREG_S(27, 6), (UINT16)VREG_S(27, 7));
break;
case RSP_V28:
- strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(28, 0), (UINT16)VREG_S(28, 1), (UINT16)VREG_S(28, 2), (UINT16)VREG_S(28, 3), (UINT16)VREG_S(28, 4), (UINT16)VREG_S(28, 5), (UINT16)VREG_S(28, 6), (UINT16)VREG_S(28, 7));
+ str = string_format("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(28, 0), (UINT16)VREG_S(28, 1), (UINT16)VREG_S(28, 2), (UINT16)VREG_S(28, 3), (UINT16)VREG_S(28, 4), (UINT16)VREG_S(28, 5), (UINT16)VREG_S(28, 6), (UINT16)VREG_S(28, 7));
break;
case RSP_V29:
- strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(29, 0), (UINT16)VREG_S(29, 1), (UINT16)VREG_S(29, 2), (UINT16)VREG_S(29, 3), (UINT16)VREG_S(29, 4), (UINT16)VREG_S(29, 5), (UINT16)VREG_S(29, 6), (UINT16)VREG_S(29, 7));
+ str = string_format("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(29, 0), (UINT16)VREG_S(29, 1), (UINT16)VREG_S(29, 2), (UINT16)VREG_S(29, 3), (UINT16)VREG_S(29, 4), (UINT16)VREG_S(29, 5), (UINT16)VREG_S(29, 6), (UINT16)VREG_S(29, 7));
break;
case RSP_V30:
- strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(30, 0), (UINT16)VREG_S(30, 1), (UINT16)VREG_S(30, 2), (UINT16)VREG_S(30, 3), (UINT16)VREG_S(30, 4), (UINT16)VREG_S(30, 5), (UINT16)VREG_S(30, 6), (UINT16)VREG_S(30, 7));
+ str = string_format("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(30, 0), (UINT16)VREG_S(30, 1), (UINT16)VREG_S(30, 2), (UINT16)VREG_S(30, 3), (UINT16)VREG_S(30, 4), (UINT16)VREG_S(30, 5), (UINT16)VREG_S(30, 6), (UINT16)VREG_S(30, 7));
break;
case RSP_V31:
- strprintf(str, "%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(31, 0), (UINT16)VREG_S(31, 1), (UINT16)VREG_S(31, 2), (UINT16)VREG_S(31, 3), (UINT16)VREG_S(31, 4), (UINT16)VREG_S(31, 5), (UINT16)VREG_S(31, 6), (UINT16)VREG_S(31, 7));
+ str = string_format("%04X|%04X|%04X|%04X|%04X|%04X|%04X|%04X", (UINT16)VREG_S(31, 0), (UINT16)VREG_S(31, 1), (UINT16)VREG_S(31, 2), (UINT16)VREG_S(31, 3), (UINT16)VREG_S(31, 4), (UINT16)VREG_S(31, 5), (UINT16)VREG_S(31, 6), (UINT16)VREG_S(31, 7));
break;
}
}
diff --git a/src/devices/cpu/s2650/s2650.cpp b/src/devices/cpu/s2650/s2650.cpp
index 8a257ff5a9e..02f343932d5 100644
--- a/src/devices/cpu/s2650/s2650.cpp
+++ b/src/devices/cpu/s2650/s2650.cpp
@@ -881,7 +881,7 @@ void s2650_device::state_string_export(const device_state_entry &entry, std::str
switch (entry.index())
{
case STATE_GENFLAGS:
- strprintf(str, "%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c",
+ str = string_format("%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c",
m_psu & 0x80 ? 'S':'.',
m_psu & 0x40 ? 'O':'.',
m_psu & 0x20 ? 'I':'.',
diff --git a/src/devices/cpu/saturn/saturn.cpp b/src/devices/cpu/saturn/saturn.cpp
index 3e25ae6b76f..98904446dd7 100644
--- a/src/devices/cpu/saturn/saturn.cpp
+++ b/src/devices/cpu/saturn/saturn.cpp
@@ -177,47 +177,47 @@ void saturn_device::state_string_export(const device_state_entry &entry, std::st
switch (entry.index())
{
case SATURN_A:
- strprintf(str, Reg64Format, Reg64Data(m_reg[A]) );
+ str = string_format( Reg64Format, Reg64Data(m_reg[A]) );
break;
case SATURN_B:
- strprintf(str, Reg64Format, Reg64Data(m_reg[B]) );
+ str = string_format( Reg64Format, Reg64Data(m_reg[B]) );
break;
case SATURN_C:
- strprintf(str, Reg64Format, Reg64Data(m_reg[C]) );
+ str = string_format( Reg64Format, Reg64Data(m_reg[C]) );
break;
case SATURN_D:
- strprintf(str, Reg64Format, Reg64Data(m_reg[D]) );
+ str = string_format( Reg64Format, Reg64Data(m_reg[D]) );
break;
case SATURN_R0:
- strprintf(str, Reg64Format, Reg64Data(m_reg[R0]) );
+ str = string_format( Reg64Format, Reg64Data(m_reg[R0]) );
break;
case SATURN_R1:
- strprintf(str, Reg64Format, Reg64Data(m_reg[R1]) );
+ str = string_format( Reg64Format, Reg64Data(m_reg[R1]) );
break;
case SATURN_R2:
- strprintf(str, Reg64Format, Reg64Data(m_reg[R2]) );
+ str = string_format( Reg64Format, Reg64Data(m_reg[R2]) );
break;
case SATURN_R3:
- strprintf(str, Reg64Format, Reg64Data(m_reg[R3]) );
+ str = string_format( Reg64Format, Reg64Data(m_reg[R3]) );
break;
case SATURN_R4:
- strprintf(str, Reg64Format, Reg64Data(m_reg[R4]) );
+ str = string_format( Reg64Format, Reg64Data(m_reg[R4]) );
break;
case SATURN_IRQ_STATE:
- strprintf(str, "%c%c%c%i", m_in_irq?'S':'.', m_irq_enable?'e':'.', m_pending_irq?'p':'.', m_irq_state );
+ str = string_format( "%c%c%c%i", m_in_irq?'S':'.', m_irq_enable?'e':'.', m_pending_irq?'p':'.', m_irq_state );
break;
case STATE_GENFLAGS:
- strprintf(str, "%c%c", m_decimal?'D':'.', m_carry ? 'C':'.' );
+ str = string_format( "%c%c", m_decimal?'D':'.', m_carry ? 'C':'.' );
break;
}
}
diff --git a/src/devices/cpu/sc61860/sc61860.cpp b/src/devices/cpu/sc61860/sc61860.cpp
index 27251e10e78..ac63f371132 100644
--- a/src/devices/cpu/sc61860/sc61860.cpp
+++ b/src/devices/cpu/sc61860/sc61860.cpp
@@ -176,7 +176,7 @@ void sc61860_device::state_string_export(const device_state_entry &entry, std::s
switch (entry.index())
{
case STATE_GENFLAGS:
- strprintf(str, "%c%c", m_zero ? 'Z' : '.', m_carry ? 'C' : '.');
+ str = string_format("%c%c", m_zero ? 'Z' : '.', m_carry ? 'C' : '.');
break;
}
}
diff --git a/src/devices/cpu/scmp/scmp.cpp b/src/devices/cpu/scmp/scmp.cpp
index 2e1cf4cd021..62717f0035e 100644
--- a/src/devices/cpu/scmp/scmp.cpp
+++ b/src/devices/cpu/scmp/scmp.cpp
@@ -552,7 +552,7 @@ void scmp_device::state_string_export(const device_state_entry &entry, std::stri
switch (entry.index())
{
case STATE_GENFLAGS:
- strprintf(str, "%c%c%c%c%c%c%c%c",
+ str = string_format("%c%c%c%c%c%c%c%c",
(m_SR & 0x80) ? 'C' : '.',
(m_SR & 0x40) ? 'V' : '.',
(m_SR & 0x20) ? 'B' : '.',
diff --git a/src/devices/cpu/score/score.cpp b/src/devices/cpu/score/score.cpp
index 984f832b464..a10b5320996 100644
--- a/src/devices/cpu/score/score.cpp
+++ b/src/devices/cpu/score/score.cpp
@@ -81,13 +81,13 @@ void score7_cpu_device::device_start()
state_add(SCORE_PC , "PC" , m_pc).callimport().callexport().formatstr("%08X");
for(int i=0; i<0x20; i++)
- state_add(SCORE_GPR + i, strformat("r%d", i).c_str(), m_gpr[i]).callimport().callexport().formatstr("%08X");
+ state_add(SCORE_GPR + i, string_format("r%d", i).c_str(), m_gpr[i]).callimport().callexport().formatstr("%08X");
for(int i=0; i<0x20; i++)
- state_add(SCORE_CR + i, strformat("cr%d", i).c_str(), m_cr[i]).callimport().callexport().formatstr("%08X");
+ state_add(SCORE_CR + i, string_format("cr%d", i).c_str(), m_cr[i]).callimport().callexport().formatstr("%08X");
for(int i=0; i<3; i++)
- state_add(SCORE_SR + i, strformat("sr%d", i).c_str(), m_sr[i]).callimport().callexport().formatstr("%08X");
+ state_add(SCORE_SR + i, string_format("sr%d", i).c_str(), m_sr[i]).callimport().callexport().formatstr("%08X");
state_add(SCORE_CEH, "ceh", REG_CEH).callimport().callexport().formatstr("%08X");
state_add(SCORE_CEL, "cel", REG_CEL).callimport().callexport().formatstr("%08X");
@@ -135,7 +135,7 @@ void score7_cpu_device::state_string_export(const device_state_entry &entry, std
switch (entry.index())
{
case STATE_GENFLAGS:
- strprintf(str, "%s%s%s%s%s",
+ str = string_format("%s%s%s%s%s",
REG_CR & FLAG_V ? "V" : ".",
REG_CR & FLAG_C ? "C" : ".",
REG_CR & FLAG_Z ? "Z" : ".",
diff --git a/src/devices/cpu/scudsp/scudsp.cpp b/src/devices/cpu/scudsp/scudsp.cpp
index f0ec1644af5..d752b082189 100644
--- a/src/devices/cpu/scudsp/scudsp.cpp
+++ b/src/devices/cpu/scudsp/scudsp.cpp
@@ -1015,7 +1015,7 @@ void scudsp_cpu_device::state_string_export(const device_state_entry &entry, std
switch (entry.index())
{
case STATE_GENFLAGS:
- strprintf(str, "%s%s%s%c%c%c%c%c%s%s%s",
+ str = string_format("%s%s%s%c%c%c%c%c%s%s%s",
m_flags & 0x4000000 ? "PR":"..",
m_flags & 0x2000000 ? "EP":"..",
m_flags & 0x800000 ? "T0":"..",
diff --git a/src/devices/cpu/se3208/se3208.cpp b/src/devices/cpu/se3208/se3208.cpp
index 45c4c38cc86..65c109f8ff4 100644
--- a/src/devices/cpu/se3208/se3208.cpp
+++ b/src/devices/cpu/se3208/se3208.cpp
@@ -1814,7 +1814,7 @@ void se3208_device::state_string_export(const device_state_entry &entry, std::st
switch (entry.index())
{
case STATE_GENFLAGS:
- strprintf(str, "%c%c%c%c %c%c%c%c%c",
+ str = string_format("%c%c%c%c %c%c%c%c%c",
m_SR&FLAG_C?'C':'.',
m_SR&FLAG_V?'V':'.',
m_SR&FLAG_S?'S':'.',
diff --git a/src/devices/cpu/sh2/sh2.cpp b/src/devices/cpu/sh2/sh2.cpp
index 481f2544126..751349dbd0c 100644
--- a/src/devices/cpu/sh2/sh2.cpp
+++ b/src/devices/cpu/sh2/sh2.cpp
@@ -2588,7 +2588,7 @@ void sh2_device::state_string_export(const device_state_entry &entry, std::strin
switch (entry.index())
{
case STATE_GENFLAGS:
- strprintf(str, "%c%c%d%c%c",
+ str = string_format("%c%c%d%c%c",
m_sh2_state->sr & M ? 'M':'.',
m_sh2_state->sr & Q ? 'Q':'.',
(m_sh2_state->sr & I) >> 4,
diff --git a/src/devices/cpu/sh4/sh4.cpp b/src/devices/cpu/sh4/sh4.cpp
index fc67b4d9d86..74bf64e8f1d 100644
--- a/src/devices/cpu/sh4/sh4.cpp
+++ b/src/devices/cpu/sh4/sh4.cpp
@@ -4458,7 +4458,7 @@ void sh34_base_device::state_string_export(const device_state_entry &entry, std:
switch (entry.index())
{
case STATE_GENFLAGS:
- strprintf(str, "%s%s%s%s%c%c%d%c%c",
+ str = string_format("%s%s%s%s%c%c%d%c%c",
m_sr & MD ? "MD ":" ",
m_sr & sRB ? "RB ":" ",
m_sr & BL ? "BL ":" ",
@@ -4471,131 +4471,131 @@ void sh34_base_device::state_string_export(const device_state_entry &entry, std:
break;
case SH4_FR0:
- strprintf(str, "%08X %f", m_fr[0 ^ fpu_xor], (double)FP_RFS(0 ^ fpu_xor));
+ str = string_format("%08X %f", m_fr[0 ^ fpu_xor], (double)FP_RFS(0 ^ fpu_xor));
break;
case SH4_FR1:
- strprintf(str, "%08X %f", m_fr[1 ^ fpu_xor], (double)FP_RFS(1 ^ fpu_xor));
+ str = string_format("%08X %f", m_fr[1 ^ fpu_xor], (double)FP_RFS(1 ^ fpu_xor));
break;
case SH4_FR2:
- strprintf(str, "%08X %f", m_fr[2 ^ fpu_xor], (double)FP_RFS(2 ^ fpu_xor));
+ str = string_format("%08X %f", m_fr[2 ^ fpu_xor], (double)FP_RFS(2 ^ fpu_xor));
break;
case SH4_FR3:
- strprintf(str, "%08X %f", m_fr[3 ^ fpu_xor], (double)FP_RFS(3 ^ fpu_xor));
+ str = string_format("%08X %f", m_fr[3 ^ fpu_xor], (double)FP_RFS(3 ^ fpu_xor));
break;
case SH4_FR4:
- strprintf(str, "%08X %f", m_fr[4 ^ fpu_xor], (double)FP_RFS(4 ^ fpu_xor));
+ str = string_format("%08X %f", m_fr[4 ^ fpu_xor], (double)FP_RFS(4 ^ fpu_xor));
break;
case SH4_FR5:
- strprintf(str, "%08X %f", m_fr[5 ^ fpu_xor], (double)FP_RFS(5 ^ fpu_xor));
+ str = string_format("%08X %f", m_fr[5 ^ fpu_xor], (double)FP_RFS(5 ^ fpu_xor));
break;
case SH4_FR6:
- strprintf(str, "%08X %f", m_fr[6 ^ fpu_xor], (double)FP_RFS(6 ^ fpu_xor));
+ str = string_format("%08X %f", m_fr[6 ^ fpu_xor], (double)FP_RFS(6 ^ fpu_xor));
break;
case SH4_FR7:
- strprintf(str, "%08X %f", m_fr[7 ^ fpu_xor], (double)FP_RFS(7 ^ fpu_xor));
+ str = string_format("%08X %f", m_fr[7 ^ fpu_xor], (double)FP_RFS(7 ^ fpu_xor));
break;
case SH4_FR8:
- strprintf(str, "%08X %f", m_fr[8 ^ fpu_xor], (double)FP_RFS(8 ^ fpu_xor));
+ str = string_format("%08X %f", m_fr[8 ^ fpu_xor], (double)FP_RFS(8 ^ fpu_xor));
break;
case SH4_FR9:
- strprintf(str, "%08X %f", m_fr[9 ^ fpu_xor], (double)FP_RFS(9 ^ fpu_xor));
+ str = string_format("%08X %f", m_fr[9 ^ fpu_xor], (double)FP_RFS(9 ^ fpu_xor));
break;
case SH4_FR10:
- strprintf(str, "%08X %f", m_fr[10 ^ fpu_xor], (double)FP_RFS(10 ^ fpu_xor));
+ str = string_format("%08X %f", m_fr[10 ^ fpu_xor], (double)FP_RFS(10 ^ fpu_xor));
break;
case SH4_FR11:
- strprintf(str, "%08X %f", m_fr[11 ^ fpu_xor], (double)FP_RFS(11 ^ fpu_xor));
+ str = string_format("%08X %f", m_fr[11 ^ fpu_xor], (double)FP_RFS(11 ^ fpu_xor));
break;
case SH4_FR12:
- strprintf(str, "%08X %f", m_fr[12 ^ fpu_xor], (double)FP_RFS(12 ^ fpu_xor));
+ str = string_format("%08X %f", m_fr[12 ^ fpu_xor], (double)FP_RFS(12 ^ fpu_xor));
break;
case SH4_FR13:
- strprintf(str, "%08X %f", m_fr[13 ^ fpu_xor], (double)FP_RFS(13 ^ fpu_xor));
+ str = string_format("%08X %f", m_fr[13 ^ fpu_xor], (double)FP_RFS(13 ^ fpu_xor));
break;
case SH4_FR14:
- strprintf(str, "%08X %f", m_fr[14 ^ fpu_xor], (double)FP_RFS(14 ^ fpu_xor));
+ str = string_format("%08X %f", m_fr[14 ^ fpu_xor], (double)FP_RFS(14 ^ fpu_xor));
break;
case SH4_FR15:
- strprintf(str, "%08X %f", m_fr[15 ^ fpu_xor], (double)FP_RFS(15 ^ fpu_xor));
+ str = string_format("%08X %f", m_fr[15 ^ fpu_xor], (double)FP_RFS(15 ^ fpu_xor));
break;
case SH4_XF0:
- strprintf(str, "%08X %f", m_xf[0 ^ fpu_xor], (double)FP_XFS(0 ^ fpu_xor));
+ str = string_format("%08X %f", m_xf[0 ^ fpu_xor], (double)FP_XFS(0 ^ fpu_xor));
break;
case SH4_XF1:
- strprintf(str, "%08X %f", m_xf[1 ^ fpu_xor], (double)FP_XFS(1 ^ fpu_xor));
+ str = string_format("%08X %f", m_xf[1 ^ fpu_xor], (double)FP_XFS(1 ^ fpu_xor));
break;
case SH4_XF2:
- strprintf(str, "%08X %f", m_xf[2 ^ fpu_xor], (double)FP_XFS(2 ^ fpu_xor));
+ str = string_format("%08X %f", m_xf[2 ^ fpu_xor], (double)FP_XFS(2 ^ fpu_xor));
break;
case SH4_XF3:
- strprintf(str, "%08X %f", m_xf[3 ^ fpu_xor], (double)FP_XFS(3 ^ fpu_xor));
+ str = string_format("%08X %f", m_xf[3 ^ fpu_xor], (double)FP_XFS(3 ^ fpu_xor));
break;
case SH4_XF4:
- strprintf(str, "%08X %f", m_xf[4 ^ fpu_xor], (double)FP_XFS(4 ^ fpu_xor));
+ str = string_format("%08X %f", m_xf[4 ^ fpu_xor], (double)FP_XFS(4 ^ fpu_xor));
break;
case SH4_XF5:
- strprintf(str, "%08X %f", m_xf[5 ^ fpu_xor], (double)FP_XFS(5 ^ fpu_xor));
+ str = string_format("%08X %f", m_xf[5 ^ fpu_xor], (double)FP_XFS(5 ^ fpu_xor));
break;
case SH4_XF6:
- strprintf(str, "%08X %f", m_xf[6 ^ fpu_xor], (double)FP_XFS(6 ^ fpu_xor));
+ str = string_format("%08X %f", m_xf[6 ^ fpu_xor], (double)FP_XFS(6 ^ fpu_xor));
break;
case SH4_XF7:
- strprintf(str, "%08X %f", m_xf[7 ^ fpu_xor], (double)FP_XFS(7 ^ fpu_xor));
+ str = string_format("%08X %f", m_xf[7 ^ fpu_xor], (double)FP_XFS(7 ^ fpu_xor));
break;
case SH4_XF8:
- strprintf(str, "%08X %f", m_xf[8 ^ fpu_xor], (double)FP_XFS(8 ^ fpu_xor));
+ str = string_format("%08X %f", m_xf[8 ^ fpu_xor], (double)FP_XFS(8 ^ fpu_xor));
break;
case SH4_XF9:
- strprintf(str, "%08X %f", m_xf[9 ^ fpu_xor], (double)FP_XFS(9 ^ fpu_xor));
+ str = string_format("%08X %f", m_xf[9 ^ fpu_xor], (double)FP_XFS(9 ^ fpu_xor));
break;
case SH4_XF10:
- strprintf(str, "%08X %f", m_xf[10 ^ fpu_xor], (double)FP_XFS(10 ^ fpu_xor));
+ str = string_format("%08X %f", m_xf[10 ^ fpu_xor], (double)FP_XFS(10 ^ fpu_xor));
break;
case SH4_XF11:
- strprintf(str, "%08X %f", m_xf[11 ^ fpu_xor], (double)FP_XFS(11 ^ fpu_xor));
+ str = string_format("%08X %f", m_xf[11 ^ fpu_xor], (double)FP_XFS(11 ^ fpu_xor));
break;
case SH4_XF12:
- strprintf(str, "%08X %f", m_xf[12 ^ fpu_xor], (double)FP_XFS(12 ^ fpu_xor));
+ str = string_format("%08X %f", m_xf[12 ^ fpu_xor], (double)FP_XFS(12 ^ fpu_xor));
break;
case SH4_XF13:
- strprintf(str, "%08X %f", m_xf[13 ^ fpu_xor], (double)FP_XFS(13 ^ fpu_xor));
+ str = string_format("%08X %f", m_xf[13 ^ fpu_xor], (double)FP_XFS(13 ^ fpu_xor));
break;
case SH4_XF14:
- strprintf(str, "%08X %f", m_xf[14 ^ fpu_xor], (double)FP_XFS(14 ^ fpu_xor));
+ str = string_format("%08X %f", m_xf[14 ^ fpu_xor], (double)FP_XFS(14 ^ fpu_xor));
break;
case SH4_XF15:
- strprintf(str, "%08X %f", m_xf[15 ^ fpu_xor], (double)FP_XFS(15 ^ fpu_xor));
+ str = string_format("%08X %f", m_xf[15 ^ fpu_xor], (double)FP_XFS(15 ^ fpu_xor));
break;
}
diff --git a/src/devices/cpu/sm8500/sm8500.cpp b/src/devices/cpu/sm8500/sm8500.cpp
index 66c51c61e5b..dff83dbd9f4 100644
--- a/src/devices/cpu/sm8500/sm8500.cpp
+++ b/src/devices/cpu/sm8500/sm8500.cpp
@@ -146,43 +146,43 @@ void sm8500_cpu_device::state_string_export(const device_state_entry &entry, std
switch (entry.index())
{
case SM8500_PS:
- strprintf(str, "%04X", ( m_PS0 << 8 ) | m_PS1 );
+ str = string_format("%04X", ( m_PS0 << 8 ) | m_PS1 );
break;
case SM8500_RR0:
- strprintf(str, "%04X", mem_readword( 0x00 ) );
+ str = string_format("%04X", mem_readword( 0x00 ) );
break;
case SM8500_RR2:
- strprintf(str, "%04X", mem_readword( 0x02 ) );
+ str = string_format("%04X", mem_readword( 0x02 ) );
break;
case SM8500_RR4:
- strprintf(str, "%04X", mem_readword( 0x04 ) );
+ str = string_format("%04X", mem_readword( 0x04 ) );
break;
case SM8500_RR6:
- strprintf(str, "%04X", mem_readword( 0x06 ) );
+ str = string_format("%04X", mem_readword( 0x06 ) );
break;
case SM8500_RR8:
- strprintf(str, "%04X", mem_readword( 0x08 ) );
+ str = string_format("%04X", mem_readword( 0x08 ) );
break;
case SM8500_RR10:
- strprintf(str, "%04X", mem_readword( 0x0a ) );
+ str = string_format("%04X", mem_readword( 0x0a ) );
break;
case SM8500_RR12:
- strprintf(str, "%04X", mem_readword( 0x0c ) );
+ str = string_format("%04X", mem_readword( 0x0c ) );
break;
case SM8500_RR14:
- strprintf(str, "%04X", mem_readword( 0x0e ) );
+ str = string_format("%04X", mem_readword( 0x0e ) );
break;
case STATE_GENFLAGS:
- strprintf(str, "%c%c%c%c%c%c%c%c",
+ str = string_format("%c%c%c%c%c%c%c%c",
m_PS1 & FLAG_C ? 'C' : '.',
m_PS1 & FLAG_Z ? 'Z' : '.',
m_PS1 & FLAG_S ? 'S' : '.',
diff --git a/src/devices/cpu/spc700/spc700.cpp b/src/devices/cpu/spc700/spc700.cpp
index 22969235ae7..abd0b7bf44e 100644
--- a/src/devices/cpu/spc700/spc700.cpp
+++ b/src/devices/cpu/spc700/spc700.cpp
@@ -1249,7 +1249,7 @@ void spc700_device::state_string_export(const device_state_entry &entry, std::st
switch (entry.index())
{
case STATE_GENFLAGS:
- strprintf(str, "%c%c%c%c%c%c%c%c",
+ str = string_format("%c%c%c%c%c%c%c%c",
(m_flag_n & 0x80) ? 'N':'.',
((m_flag_v & 0x80) >> 1) ? 'V':'.',
(m_flag_p>>3) ? 'P':'.',
diff --git a/src/devices/cpu/ssem/ssem.cpp b/src/devices/cpu/ssem/ssem.cpp
index 438e36cbd9e..bb2d4683ef2 100644
--- a/src/devices/cpu/ssem/ssem.cpp
+++ b/src/devices/cpu/ssem/ssem.cpp
@@ -154,7 +154,7 @@ void ssem_device::state_string_export(const device_state_entry &entry, std::stri
switch (entry.index())
{
case STATE_GENFLAGS:
- strprintf(str, "%c", m_halt ? 'H' : '.');
+ str = string_format("%c", m_halt ? 'H' : '.');
break;
}
}
diff --git a/src/devices/cpu/ssp1601/ssp1601.cpp b/src/devices/cpu/ssp1601/ssp1601.cpp
index db50c5e6816..e583ac0bfb3 100644
--- a/src/devices/cpu/ssp1601/ssp1601.cpp
+++ b/src/devices/cpu/ssp1601/ssp1601.cpp
@@ -552,8 +552,11 @@ void ssp1601_device::state_string_export(const device_state_entry &entry, std::s
switch (entry.index())
{
case STATE_GENFLAGS:
- strprintf(str, "%c%c%c%c", (rST&SSP_FLAG_N) ? 'N' : '.', (rST&SSP_FLAG_V) ? 'V' : '.',
- (rST&SSP_FLAG_Z)?'Z':'.', (rST&SSP_FLAG_L)?'L':'.'
+ str = string_format("%c%c%c%c",
+ (rST&SSP_FLAG_N) ? 'N' : '.',
+ (rST&SSP_FLAG_V) ? 'V' : '.',
+ (rST&SSP_FLAG_Z) ? 'Z' : '.',
+ (rST&SSP_FLAG_L) ? 'L' : '.'
);
break;
}
diff --git a/src/devices/cpu/t11/t11.cpp b/src/devices/cpu/t11/t11.cpp
index 5e32e2081f5..f2337e6bae7 100644
--- a/src/devices/cpu/t11/t11.cpp
+++ b/src/devices/cpu/t11/t11.cpp
@@ -296,7 +296,7 @@ void t11_device::state_string_export(const device_state_entry &entry, std::strin
switch (entry.index())
{
case STATE_GENFLAGS:
- strprintf(str, "%c%c%c%c%c%c%c%c",
+ str = string_format("%c%c%c%c%c%c%c%c",
m_psw.b.l & 0x80 ? '?':'.',
m_psw.b.l & 0x40 ? 'I':'.',
m_psw.b.l & 0x20 ? 'I':'.',
@@ -315,7 +315,7 @@ void k1801vm2_device::state_string_export(const device_state_entry &entry, std::
switch (entry.index())
{
case STATE_GENFLAGS:
- strprintf(str, "%c%c%c%c%c%c%c%c%c",
+ str = string_format("%c%c%c%c%c%c%c%c%c",
m_psw.b.l & 0x100 ? 'H':'.',
m_psw.b.l & 0x80 ? 'P':'.',
m_psw.b.l & 0x40 ? '?':'.',
diff --git a/src/devices/cpu/tlcs90/tlcs90.cpp b/src/devices/cpu/tlcs90/tlcs90.cpp
index 994d0abb3da..3719154174f 100644
--- a/src/devices/cpu/tlcs90/tlcs90.cpp
+++ b/src/devices/cpu/tlcs90/tlcs90.cpp
@@ -2771,7 +2771,7 @@ void tlcs90_device::state_string_export(const device_state_entry &entry, std::st
switch (entry.index())
{
case STATE_GENFLAGS:
- strprintf(str, "%c%c%c%c%c%c%c%c",
+ str = string_format("%c%c%c%c%c%c%c%c",
F & 0x80 ? 'S':'.',
F & 0x40 ? 'Z':'.',
F & 0x20 ? 'I':'.',
diff --git a/src/devices/cpu/tlcs900/tlcs900.cpp b/src/devices/cpu/tlcs900/tlcs900.cpp
index 2b5d45d7757..2a7399de6bd 100644
--- a/src/devices/cpu/tlcs900/tlcs900.cpp
+++ b/src/devices/cpu/tlcs900/tlcs900.cpp
@@ -389,7 +389,7 @@ void tlcs900h_device::state_string_export(const device_state_entry &entry, std::
switch (entry.index())
{
case STATE_GENFLAGS:
- strprintf(str, "%c%d%c%d%c%c%c%c%c%c%c%c",
+ str = string_format("%c%d%c%d%c%c%c%c%c%c%c%c",
m_sr.w.l & 0x8000 ? 'S' : 'U',
( m_sr.w.l & 0x7000 ) >> 12,
m_sr.w.l & 0x0800 ? 'M' : 'N',
diff --git a/src/devices/cpu/tms0980/tms0980.cpp b/src/devices/cpu/tms0980/tms0980.cpp
index 7bc62b5a475..1389a080031 100644
--- a/src/devices/cpu/tms0980/tms0980.cpp
+++ b/src/devices/cpu/tms0980/tms0980.cpp
@@ -480,7 +480,7 @@ void tms1xxx_cpu_device::state_string_export(const device_state_entry &entry, st
switch (entry.index())
{
case STATE_GENPC:
- strprintf(str, "%03X", m_rom_address << ((m_byte_bits > 8) ? 1 : 0));
+ str = string_format("%03X", m_rom_address << ((m_byte_bits > 8) ? 1 : 0));
break;
}
}
diff --git a/src/devices/cpu/tms32010/tms32010.cpp b/src/devices/cpu/tms32010/tms32010.cpp
index 3a164e8f984..423149feacc 100644
--- a/src/devices/cpu/tms32010/tms32010.cpp
+++ b/src/devices/cpu/tms32010/tms32010.cpp
@@ -900,7 +900,7 @@ void tms32010_device::state_string_export(const device_state_entry &entry, std::
switch (entry.index())
{
case STATE_GENFLAGS:
- strprintf(str, "%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c",
+ str = string_format("%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c",
m_STR & 0x8000 ? 'O':'.',
m_STR & 0x4000 ? 'M':'.',
m_STR & 0x2000 ? 'I':'.',
diff --git a/src/devices/cpu/tms32025/tms32025.cpp b/src/devices/cpu/tms32025/tms32025.cpp
index 2d40b2d3448..cd95f1a96c8 100644
--- a/src/devices/cpu/tms32025/tms32025.cpp
+++ b/src/devices/cpu/tms32025/tms32025.cpp
@@ -1806,7 +1806,7 @@ void tms32025_device::state_string_export(const device_state_entry &entry, std::
switch (entry.index())
{
case STATE_GENFLAGS:
- strprintf(str, "arp%d%c%c%c%cdp%03x arb%d%c%c%c%c%c%c%c%c%c%c%cpm%d",
+ str = string_format("arp%d%c%c%c%cdp%03x arb%d%c%c%c%c%c%c%c%c%c%c%cpm%d",
(m_STR0 & 0xe000) >> 13,
m_STR0 & 0x1000 ? 'O':'.',
m_STR0 & 0x0800 ? 'M':'.',
diff --git a/src/devices/cpu/tms32031/tms32031.cpp b/src/devices/cpu/tms32031/tms32031.cpp
index cfab62a7929..cf7b457036d 100644
--- a/src/devices/cpu/tms32031/tms32031.cpp
+++ b/src/devices/cpu/tms32031/tms32031.cpp
@@ -541,12 +541,12 @@ void tms3203x_device::state_string_export(const device_state_entry &entry, std::
case TMS3203X_R5F:
case TMS3203X_R6F:
case TMS3203X_R7F:
- strprintf(str, "%12g", m_r[TMR_R0 + (entry.index() - TMS3203X_R0F)].as_double());
+ str = string_format("%12g", m_r[TMR_R0 + (entry.index() - TMS3203X_R0F)].as_double());
break;
case STATE_GENFLAGS:
UINT32 temp = m_r[TMR_ST].i32[0];
- strprintf(str, "%c%c%c%c%c%c%c%c",
+ str = string_format("%c%c%c%c%c%c%c%c",
(temp & 0x80) ? 'O':'.',
(temp & 0x40) ? 'U':'.',
(temp & 0x20) ? 'V':'.',
diff --git a/src/devices/cpu/tms32082/tms32082.cpp b/src/devices/cpu/tms32082/tms32082.cpp
index 8b89bc3ef88..baf444dd064 100644
--- a/src/devices/cpu/tms32082/tms32082.cpp
+++ b/src/devices/cpu/tms32082/tms32082.cpp
@@ -219,7 +219,7 @@ void tms32082_mp_device::state_string_export(const device_state_entry &entry, st
switch (entry.index())
{
case STATE_GENFLAGS:
- strprintf(str, "?");
+ str = "?";
break;
}
}
@@ -516,7 +516,7 @@ void tms32082_pp_device::state_string_export(const device_state_entry &entry, st
switch (entry.index())
{
case STATE_GENFLAGS:
- strprintf(str, "?");
+ str = "?";
break;
}
}
diff --git a/src/devices/cpu/tms34010/tms34010.cpp b/src/devices/cpu/tms34010/tms34010.cpp
index 68f410d5b2b..3bda4e028ac 100644
--- a/src/devices/cpu/tms34010/tms34010.cpp
+++ b/src/devices/cpu/tms34010/tms34010.cpp
@@ -594,11 +594,11 @@ void tms340x0_device::device_start()
for (int regnum = 0; regnum < 15; regnum++)
{
- state_add(TMS34010_A0 + regnum, strformat("A%d", regnum).c_str(), m_regs[regnum].reg);
+ state_add(TMS34010_A0 + regnum, string_format("A%d", regnum).c_str(), m_regs[regnum].reg);
}
for (int regnum = 0; regnum < 15; regnum++)
{
- state_add(TMS34010_B0 + regnum, strformat("B%d", regnum).c_str(), m_regs[30 - regnum].reg);
+ state_add(TMS34010_B0 + regnum, string_format("B%d", regnum).c_str(), m_regs[30 - regnum].reg);
}
}
@@ -1603,7 +1603,7 @@ void tms340x0_device::state_string_export(const device_state_entry &entry, std::
switch (entry.index())
{
case STATE_GENFLAGS:
- strprintf(str, "%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c",
+ str = string_format("%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c",
m_st & 0x80000000 ? 'N':'.',
m_st & 0x40000000 ? 'C':'.',
m_st & 0x20000000 ? 'Z':'.',
diff --git a/src/devices/cpu/tms7000/tms7000.cpp b/src/devices/cpu/tms7000/tms7000.cpp
index 42e76319855..d64b47d924c 100644
--- a/src/devices/cpu/tms7000/tms7000.cpp
+++ b/src/devices/cpu/tms7000/tms7000.cpp
@@ -262,7 +262,7 @@ void tms7000_device::state_string_export(const device_state_entry &entry, std::s
switch (entry.index())
{
case STATE_GENFLAGS:
- strprintf(str, "%c%c%c%c%c%c%c%c",
+ str = string_format("%c%c%c%c%c%c%c%c",
m_sr & 0x80 ? 'C':'c',
m_sr & 0x40 ? 'N':'n',
m_sr & 0x20 ? 'Z':'z',
diff --git a/src/devices/cpu/ucom4/ucom4.cpp b/src/devices/cpu/ucom4/ucom4.cpp
index 69b608a6592..fd0263ac8fb 100644
--- a/src/devices/cpu/ucom4/ucom4.cpp
+++ b/src/devices/cpu/ucom4/ucom4.cpp
@@ -82,7 +82,7 @@ void ucom4_cpu_device::state_string_export(const device_state_entry &entry, std:
{
// obviously not from a single flags register
case STATE_GENFLAGS:
- strprintf(str, "%c%c%c%c%c",
+ str = string_format("%c%c%c%c%c",
m_inte_f ? 'E':'e',
m_int_f ? 'I':'i',
m_timer_f ? 'T':'t',
diff --git a/src/devices/cpu/uml.cpp b/src/devices/cpu/uml.cpp
index 5b9785f792c..74add242e58 100644
--- a/src/devices/cpu/uml.cpp
+++ b/src/devices/cpu/uml.cpp
@@ -867,19 +867,14 @@ std::string uml::instruction::disasm(drcuml_state *drcuml) const
assert(m_opcode != OP_INVALID && m_opcode < OP_MAX);
// start with the raw mnemonic and substitute sizes
- std::string buffer;
+ std::ostringstream buffer;
for (const char *opsrc = opinfo.mnemonic; *opsrc != 0; opsrc++)
if (*opsrc == '!')
- strcatprintf(buffer, "%s", bang_size[m_size]);
+ stream_format(buffer, "%-8s", bang_size[m_size]);
else if (*opsrc == '#')
- strcatprintf(buffer, "%s", pound_size[m_size]);
+ stream_format(buffer, "%-8s", pound_size[m_size]);
else
- buffer.push_back(*opsrc);
-
- // pad to 8 spaces
- int pad = 8 - buffer.length();
- for (int ch = 0; ch < pad; ch++)
- buffer.push_back(' ');
+ stream_format(buffer, "%-8c", *opsrc);
// iterate through parameters
for (int pnum = 0; pnum < m_numparams; pnum++)
@@ -888,7 +883,7 @@ std::string uml::instruction::disasm(drcuml_state *drcuml) const
// start with a comma for all except the first parameter
if (pnum != 0)
- buffer.push_back(',');
+ buffer.put(',');
// ouput based on type
switch (param.type())
@@ -916,20 +911,20 @@ std::string uml::instruction::disasm(drcuml_state *drcuml) const
if (size == 2) value = (UINT16)value;
if (size == 4) value = (UINT32)value;
if ((UINT32)value == value)
- strcatprintf(buffer, "$%X", (UINT32)value);
+ stream_format(buffer, "$%X", (UINT32)value);
else
- strcatprintf(buffer, "$%X%08X", (UINT32)(value >> 32), (UINT32)value);
+ stream_format(buffer, "$%X%08X", (UINT32)(value >> 32), (UINT32)value);
}
break;
// immediates have several special cases
case parameter::PTYPE_SIZE:
- strcatprintf(buffer, "%s", sizes[param.size()]);
+ stream_format(buffer, "%s", sizes[param.size()]);
break;
// size + address space immediate
case parameter::PTYPE_SIZE_SPACE:
- strcatprintf(buffer, "%s_%s", spaces[param.space()], sizes[param.size()]);
+ stream_format(buffer, "%s_%s", spaces[param.space()], sizes[param.size()]);
break;
// size + scale immediate
@@ -938,30 +933,30 @@ std::string uml::instruction::disasm(drcuml_state *drcuml) const
int scale = param.scale();
int size = param.size();
if (scale == size)
- strcatprintf(buffer, "%s", sizes[size]);
+ stream_format(buffer, "%s", sizes[size]);
else
- strcatprintf(buffer, "%s_x%d", sizes[size], 1 << scale);
+ stream_format(buffer, "%s_x%d", sizes[size], 1 << scale);
}
break;
// fmod immediate
case parameter::PTYPE_ROUNDING:
- strcatprintf(buffer, "%s", fmods[param.rounding()]);
+ stream_format(buffer, "%s", fmods[param.rounding()]);
break;
// integer registers
case parameter::PTYPE_INT_REGISTER:
- strcatprintf(buffer, "i%d", param.ireg() - REG_I0);
+ stream_format(buffer, "i%d", param.ireg() - REG_I0);
break;
// floating point registers
case parameter::PTYPE_FLOAT_REGISTER:
- strcatprintf(buffer, "f%d", param.freg() - REG_F0);
+ stream_format(buffer, "f%d", param.freg() - REG_F0);
break;
// map variables
case parameter::PTYPE_MAPVAR:
- strcatprintf(buffer, "m%d", param.mapvar() - MAPVAR_M0);
+ stream_format(buffer, "m%d", param.mapvar() - MAPVAR_M0);
break;
// memory
@@ -974,55 +969,55 @@ std::string uml::instruction::disasm(drcuml_state *drcuml) const
if (drcuml != nullptr && (symbol = drcuml->symbol_find(param.memory(), &symoffset)) != nullptr)
{
if (symoffset == 0)
- strcatprintf(buffer, "[%s]", symbol);
+ stream_format(buffer, "[%s]", symbol);
else
- strcatprintf(buffer, "[%s+$%X]", symbol, symoffset);
+ stream_format(buffer, "[%s+$%X]", symbol, symoffset);
}
// cache memory
else if (drcuml != nullptr && drcuml->cache().contains_pointer(param.memory()))
- strcatprintf(buffer, "[+$%X]", (UINT32)(FPTR)((drccodeptr)param.memory() - drcuml->cache().near()));
+ stream_format(buffer, "[+$%X]", (UINT32)(FPTR)((drccodeptr)param.memory() - drcuml->cache().near()));
// general memory
else
- strcatprintf(buffer, "[[$%p]]", param.memory());
+ stream_format(buffer, "[[$%p]]", param.memory());
break;
}
// string pointer
case parameter::PTYPE_STRING:
- strcatprintf(buffer, "%s", (const char *)(FPTR)param.string());
+ stream_format(buffer, "%s", (const char *)(FPTR)param.string());
break;
// handle pointer
case parameter::PTYPE_CODE_HANDLE:
- strcatprintf(buffer, "%s", param.handle().string());
+ stream_format(buffer, "%s", param.handle().string());
break;
default:
- strcatprintf(buffer, "???");
+ stream_format(buffer, "???");
break;
}
}
// if there's a condition, append it
if (m_condition != COND_ALWAYS)
- strcatprintf(buffer, ",%s", conditions[m_condition & 0x0f]);
+ stream_format(buffer, ",%s", conditions[m_condition & 0x0f]);
// if there are flags, append them
if (m_flags != 0)
{
- buffer.push_back(',');
+ buffer.put(',');
if (m_flags & FLAG_U)
- buffer.push_back('U');
+ buffer.put('U');
if (m_flags & FLAG_S)
- buffer.push_back('S');
+ buffer.put('S');
if (m_flags & FLAG_Z)
- buffer.push_back('Z');
+ buffer.put('Z');
if (m_flags & FLAG_V)
- buffer.push_back('V');
+ buffer.put('V');
if (m_flags & FLAG_C)
- buffer.push_back('C');
+ buffer.put('C');
}
- return buffer;
+ return buffer.str();
}
diff --git a/src/devices/cpu/upd7725/upd7725.cpp b/src/devices/cpu/upd7725/upd7725.cpp
index ef211dd13c3..a3913e3f6c1 100644
--- a/src/devices/cpu/upd7725/upd7725.cpp
+++ b/src/devices/cpu/upd7725/upd7725.cpp
@@ -207,7 +207,7 @@ void necdsp_device::state_string_export(const device_state_entry &entry, std::st
switch (entry.index())
{
case UPD7725_FLAGA:
- strprintf(str, "%s %s %c%c %s %s %s %s",
+ str = string_format("%s %s %c%c %s %s %s %s",
regs.flaga.s1 ? "S1" : "s1",
regs.flaga.s0 ? "S0" : "s0",
regs.flaga.c ? 'C' : 'c',
@@ -219,7 +219,7 @@ void necdsp_device::state_string_export(const device_state_entry &entry, std::st
break;
case UPD7725_FLAGB:
- strprintf(str, "%s %s %c%c %s %s %s %s",
+ str = string_format("%s %s %c%c %s %s %s %s",
regs.flagb.s1 ? "S1" : "s1",
regs.flagb.s0 ? "S0" : "s0",
regs.flagb.c ? 'C' : 'c',
diff --git a/src/devices/cpu/upd7810/upd7810.cpp b/src/devices/cpu/upd7810/upd7810.cpp
index d0974d00a74..7ab58fc46c1 100644
--- a/src/devices/cpu/upd7810/upd7810.cpp
+++ b/src/devices/cpu/upd7810/upd7810.cpp
@@ -1701,7 +1701,7 @@ void upd7810_device::state_string_export(const device_state_entry &entry, std::s
switch (entry.index())
{
case STATE_GENFLAGS:
- strprintf(str, "%s:%s:%s:%s:%s:%s",
+ str = string_format("%s:%s:%s:%s:%s:%s",
m_psw & 0x40 ? "ZF":"--",
m_psw & 0x20 ? "SK":"--",
m_psw & 0x10 ? "HC":"--",
diff --git a/src/devices/cpu/v30mz/v30mz.cpp b/src/devices/cpu/v30mz/v30mz.cpp
index ec720d59f9a..52845538b47 100644
--- a/src/devices/cpu/v30mz/v30mz.cpp
+++ b/src/devices/cpu/v30mz/v30mz.cpp
@@ -190,13 +190,13 @@ void v30mz_cpu_device::state_string_export(const device_state_entry &entry, std:
switch (entry.index())
{
case STATE_GENPC:
- strprintf(str, "%08X", ( m_sregs[CS] << 4 ) + m_ip);
+ str = string_format("%08X", ( m_sregs[CS] << 4 ) + m_ip);
break;
case STATE_GENFLAGS:
{
UINT16 flags = CompressFlags();
- strprintf(str, "%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c",
+ str = string_format("%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c",
flags & 0x8000 ? 'M':'.',
flags & 0x4000 ? '?':'.',
flags & 0x2000 ? '?':'.',
diff --git a/src/devices/cpu/v810/v810.cpp b/src/devices/cpu/v810/v810.cpp
index 958c28edc49..d9509d77b6b 100644
--- a/src/devices/cpu/v810/v810.cpp
+++ b/src/devices/cpu/v810/v810.cpp
@@ -1319,7 +1319,7 @@ void v810_device::state_string_export(const device_state_entry &entry, std::stri
switch (entry.index())
{
case STATE_GENFLAGS:
- strprintf(str, "%c%c%c%c%c%c%c%c",
+ str = string_format("%c%c%c%c%c%c%c%c",
GET_AE ? 'A':'.',
GET_NP ? 'N':'.',
GET_EP ? 'E':'.',
diff --git a/src/devices/cpu/z180/z180.cpp b/src/devices/cpu/z180/z180.cpp
index c8f3b968468..8e3e5e6fb5d 100644
--- a/src/devices/cpu/z180/z180.cpp
+++ b/src/devices/cpu/z180/z180.cpp
@@ -2565,7 +2565,7 @@ void z180_device::state_string_export(const device_state_entry &entry, std::stri
switch (entry.index())
{
case STATE_GENFLAGS:
- strprintf(str, "%c%c%c%c%c%c%c%c",
+ str = string_format("%c%c%c%c%c%c%c%c",
m_AF.b.l & 0x80 ? 'S':'.',
m_AF.b.l & 0x40 ? 'Z':'.',
m_AF.b.l & 0x20 ? '5':'.',
diff --git a/src/devices/cpu/z8/z8.cpp b/src/devices/cpu/z8/z8.cpp
index d6c4fe3de77..ad8b79f8ba5 100644
--- a/src/devices/cpu/z8/z8.cpp
+++ b/src/devices/cpu/z8/z8.cpp
@@ -678,7 +678,7 @@ void z8_device::device_start()
state_add(STATE_GENFLAGS, "GENFLAGS", m_r[Z8_REGISTER_FLAGS]).noshow().formatstr("%6s");
for (int regnum = 0; regnum < 16; regnum++)
- state_add(Z8_R0 + regnum, strformat("R%d", regnum).c_str(), m_fake_r[regnum]).callimport().callexport();
+ state_add(Z8_R0 + regnum, string_format("R%d", regnum).c_str(), m_fake_r[regnum]).callimport().callexport();
}
/* find address spaces */
@@ -809,7 +809,7 @@ void z8_device::state_string_export(const device_state_entry &entry, std::string
{
switch (entry.index())
{
- case STATE_GENFLAGS: strprintf(str, "%c%c%c%c%c%c",
+ case STATE_GENFLAGS: str = string_format("%c%c%c%c%c%c",
m_r[Z8_REGISTER_FLAGS] & Z8_FLAGS_C ? 'C' : '.',
m_r[Z8_REGISTER_FLAGS] & Z8_FLAGS_Z ? 'Z' : '.',
m_r[Z8_REGISTER_FLAGS] & Z8_FLAGS_S ? 'S' : '.',
diff --git a/src/devices/cpu/z80/z80.cpp b/src/devices/cpu/z80/z80.cpp
index bafc40e1ea3..306b1ae49f2 100644
--- a/src/devices/cpu/z80/z80.cpp
+++ b/src/devices/cpu/z80/z80.cpp
@@ -3658,7 +3658,7 @@ void z80_device::state_string_export(const device_state_entry &entry, std::strin
switch (entry.index())
{
case STATE_GENFLAGS:
- strprintf(str, "%c%c%c%c%c%c%c%c",
+ str = string_format("%c%c%c%c%c%c%c%c",
F & 0x80 ? 'S':'.',
F & 0x40 ? 'Z':'.',
F & 0x20 ? 'Y':'.',
diff --git a/src/devices/cpu/z8000/z8000.cpp b/src/devices/cpu/z8000/z8000.cpp
index dcc52f92fb0..9d796a518dd 100644
--- a/src/devices/cpu/z8000/z8000.cpp
+++ b/src/devices/cpu/z8000/z8000.cpp
@@ -621,7 +621,7 @@ void z8002_device::state_string_export(const device_state_entry &entry, std::str
switch (entry.index())
{
case STATE_GENFLAGS:
- strprintf(str, "%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c",
+ str = string_format("%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c",
m_fcw & 0x8000 ? 'S':'s',
m_fcw & 0x4000 ? 'n':'N',
m_fcw & 0x2000 ? 'E':'e',
diff --git a/src/devices/imagedev/diablo.cpp b/src/devices/imagedev/diablo.cpp
index be8b3e500f2..f9d4218856a 100644
--- a/src/devices/imagedev/diablo.cpp
+++ b/src/devices/imagedev/diablo.cpp
@@ -113,7 +113,6 @@ bool diablo_image_device::call_create(int create_format, option_resolution *crea
int err;
UINT32 sectorsize, hunksize;
UINT32 cylinders, heads, sectors, totalsectors;
- std::string metadata;
cylinders = option_resolution_lookup_int(create_args, 'C');
heads = option_resolution_lookup_int(create_args, 'H');
@@ -130,8 +129,7 @@ bool diablo_image_device::call_create(int create_format, option_resolution *crea
goto error;
/* if we created the image and hence, have metadata to set, set the metadata */
- strprintf(metadata,HARD_DISK_METADATA_FORMAT, cylinders, heads, sectors, sectorsize);
- err = m_origchd.write_metadata(HARD_DISK_METADATA_TAG, 0, metadata);
+ err = m_origchd.write_metadata(HARD_DISK_METADATA_TAG, 0, string_format(HARD_DISK_METADATA_FORMAT, cylinders, heads, sectors, sectorsize));
m_origchd.close();
if (err != CHDERR_NONE)
diff --git a/src/devices/imagedev/harddriv.cpp b/src/devices/imagedev/harddriv.cpp
index b5fd6ca87dc..c03b0e4075b 100644
--- a/src/devices/imagedev/harddriv.cpp
+++ b/src/devices/imagedev/harddriv.cpp
@@ -137,7 +137,6 @@ bool harddisk_image_device::call_create(int create_format, option_resolution *cr
int err;
UINT32 sectorsize, hunksize;
UINT32 cylinders, heads, sectors, totalsectors;
- std::string metadata;
cylinders = option_resolution_lookup_int(create_args, 'C');
heads = option_resolution_lookup_int(create_args, 'H');
@@ -154,8 +153,7 @@ bool harddisk_image_device::call_create(int create_format, option_resolution *cr
goto error;
/* if we created the image and hence, have metadata to set, set the metadata */
- strprintf(metadata, HARD_DISK_METADATA_FORMAT, cylinders, heads, sectors, sectorsize);
- err = m_origchd.write_metadata(HARD_DISK_METADATA_TAG, 0, metadata);
+ err = m_origchd.write_metadata(HARD_DISK_METADATA_TAG, 0, string_format(HARD_DISK_METADATA_FORMAT, cylinders, heads, sectors, sectorsize));
m_origchd.close();
if (err != CHDERR_NONE)
diff --git a/src/devices/imagedev/mfmhd.cpp b/src/devices/imagedev/mfmhd.cpp
index bc8987d7b0f..843e3510f29 100644
--- a/src/devices/imagedev/mfmhd.cpp
+++ b/src/devices/imagedev/mfmhd.cpp
@@ -531,11 +531,8 @@ void mfm_harddisk_device::call_unload()
{
logerror("%s: MFM HD sector arrangement and recording specs have changed; updating CHD metadata\n", tag());
chd_file* chdfile = get_chd_file();
- std::string metadata;
- strprintf(metadata, MFMHD_REC_METADATA_FORMAT, params->interleave, params->cylskew, params->headskew, params->write_precomp_cylinder, params->reduced_wcurr_cylinder);
-
- chd_error err = chdfile->write_metadata(MFM_HARD_DISK_METADATA_TAG, 0, metadata, 0);
+ chd_error err = chdfile->write_metadata(MFM_HARD_DISK_METADATA_TAG, 0, string_format(MFMHD_REC_METADATA_FORMAT, params->interleave, params->cylskew, params->headskew, params->write_precomp_cylinder, params->reduced_wcurr_cylinder), 0);
if (err != CHDERR_NONE)
{
logerror("%s: Failed to save MFM HD sector arrangement/recording specs to CHD\n", tag());
@@ -546,11 +543,8 @@ void mfm_harddisk_device::call_unload()
{
logerror("%s: MFM HD track gap specs have changed; updating CHD metadata\n", tag());
chd_file* chdfile = get_chd_file();
- std::string metadata;
-
- strprintf(metadata, MFMHD_GAP_METADATA_FORMAT, params->gap1, params->gap2, params->gap3, params->sync, params->headerlen, params->ecctype);
- chd_error err = chdfile->write_metadata(MFM_HARD_DISK_METADATA_TAG, 1, metadata, 0);
+ chd_error err = chdfile->write_metadata(MFM_HARD_DISK_METADATA_TAG, 1, string_format(MFMHD_GAP_METADATA_FORMAT, params->gap1, params->gap2, params->gap3, params->sync, params->headerlen, params->ecctype), 0);
if (err != CHDERR_NONE)
{
logerror("%s: Failed to save MFM HD track gap specs to CHD\n", tag());
diff --git a/src/devices/machine/netlist.h b/src/devices/machine/netlist.h
index 961bb7a26ea..9550ee57f9d 100644
--- a/src/devices/machine/netlist.h
+++ b/src/devices/machine/netlist.h
@@ -225,9 +225,9 @@ protected:
if (entry.index() >= 0)
{
if (entry.index() & 1)
- strprintf(str,"%10.6f", *((double *)entry.dataptr()));
+ str = string_format("%10.6f", *((double *)entry.dataptr()));
else
- strprintf(str, "%d", *((netlist_sig_t *)entry.dataptr()));
+ str = string_format("%d", *((netlist_sig_t *)entry.dataptr()));
}
}
diff --git a/src/devices/machine/ram.cpp b/src/devices/machine/ram.cpp
index 7dd8f9250a4..b3730f8483d 100644
--- a/src/devices/machine/ram.cpp
+++ b/src/devices/machine/ram.cpp
@@ -148,16 +148,16 @@ void ram_device::device_validity_check(validity_checker &valid) const
if (!is_valid)
{
- std::string output;
- strcatprintf(output, "Cannot recognize the RAM option %s", ramsize_string);
- strcatprintf(output, " (valid options are %s", m_default_size);
+ std::ostringstream output;
+ stream_format(output, "Cannot recognize the RAM option %s", ramsize_string);
+ stream_format(output, " (valid options are %s", m_default_size);
if (m_extra_options != nullptr)
- strcatprintf(output, ",%s).\n", m_extra_options);
+ stream_format(output, ",%s).\n", m_extra_options);
else
- strcatprintf(output, ").\n");
+ stream_format(output, ").\n");
- osd_printf_error("%s", output.c_str());
+ osd_printf_error("%s", output.str().c_str());
osd_printf_warning("Setting value to default %s\n",m_default_size);
std::string error;
diff --git a/src/emu/audit.cpp b/src/emu/audit.cpp
index b1016967931..7f371ee56c8 100644
--- a/src/emu/audit.cpp
+++ b/src/emu/audit.cpp
@@ -347,36 +347,36 @@ media_auditor::summary media_auditor::summarize(const char *name, std::string *o
// output the game name, file name, and length (if applicable)
if (output != nullptr)
{
- strcatprintf(*output,"%-12s: %s", name, record->name());
+ output->append(string_format("%-12s: %s", name, record->name()));
if (record->expected_length() > 0)
- strcatprintf(*output," (%" I64FMT "d bytes)", record->expected_length());
- strcatprintf(*output," - ");
+ output->append(string_format(" (%d bytes)", record->expected_length()));
+ output->append(" - ");
}
// use the substatus for finer details
switch (record->substatus())
{
case audit_record::SUBSTATUS_GOOD_NEEDS_REDUMP:
- if (output != nullptr) strcatprintf(*output,"NEEDS REDUMP\n");
+ if (output != nullptr) output->append("NEEDS REDUMP\n");
best_new_status = BEST_AVAILABLE;
break;
case audit_record::SUBSTATUS_FOUND_NODUMP:
- if (output != nullptr) strcatprintf(*output,"NO GOOD DUMP KNOWN\n");
+ if (output != nullptr) output->append("NO GOOD DUMP KNOWN\n");
best_new_status = BEST_AVAILABLE;
break;
case audit_record::SUBSTATUS_FOUND_BAD_CHECKSUM:
if (output != nullptr)
{
- strcatprintf(*output,"INCORRECT CHECKSUM:\n");
- strcatprintf(*output,"EXPECTED: %s\n", record->expected_hashes().macro_string().c_str());
- strcatprintf(*output," FOUND: %s\n", record->actual_hashes().macro_string().c_str());
+ output->append("INCORRECT CHECKSUM:\n");
+ output->append(string_format("EXPECTED: %s\n", record->expected_hashes().macro_string().c_str()));
+ output->append(string_format(" FOUND: %s\n", record->actual_hashes().macro_string().c_str()));
}
break;
case audit_record::SUBSTATUS_FOUND_WRONG_LENGTH:
- if (output != nullptr) strcatprintf(*output,"INCORRECT LENGTH: %" I64FMT "d bytes\n", record->actual_length());
+ if (output != nullptr) output->append(string_format("INCORRECT LENGTH: %d bytes\n", record->actual_length()));
break;
case audit_record::SUBSTATUS_NOT_FOUND:
@@ -384,20 +384,20 @@ media_auditor::summary media_auditor::summarize(const char *name, std::string *o
{
device_t *shared_device = record->shared_device();
if (shared_device == nullptr)
- strcatprintf(*output,"NOT FOUND\n");
+ output->append("NOT FOUND\n");
else
- strcatprintf(*output,"NOT FOUND (%s)\n", shared_device->shortname());
+ output->append(string_format("NOT FOUND (%s)\n", shared_device->shortname()));
}
best_new_status = NOTFOUND;
break;
case audit_record::SUBSTATUS_NOT_FOUND_NODUMP:
- if (output != nullptr) strcatprintf(*output,"NOT FOUND - NO GOOD DUMP KNOWN\n");
+ if (output != nullptr) output->append("NOT FOUND - NO GOOD DUMP KNOWN\n");
best_new_status = BEST_AVAILABLE;
break;
case audit_record::SUBSTATUS_NOT_FOUND_OPTIONAL:
- if (output != nullptr) strcatprintf(*output,"NOT FOUND BUT OPTIONAL\n");
+ if (output != nullptr) output->append("NOT FOUND BUT OPTIONAL\n");
best_new_status = BEST_AVAILABLE;
break;
diff --git a/src/emu/cheat.cpp b/src/emu/cheat.cpp
index c055ba5bdb2..6b24b22fc35 100644
--- a/src/emu/cheat.cpp
+++ b/src/emu/cheat.cpp
@@ -108,16 +108,16 @@ inline std::string number_and_format::format() const
{
default:
case XML_INT_FORMAT_DECIMAL:
- return strformat("%d", (UINT32)m_value);
+ return string_format("%d", (UINT32)m_value);
case XML_INT_FORMAT_DECIMAL_POUND:
- return strformat("#%d", (UINT32)m_value);
+ return string_format("#%d", (UINT32)m_value);
case XML_INT_FORMAT_HEX_DOLLAR:
- return strformat("$%X", (UINT32)m_value);
+ return string_format("$%X", (UINT32)m_value);
case XML_INT_FORMAT_HEX_C:
- return strformat("0x%X", (UINT32)m_value);
+ return string_format("0x%X", (UINT32)m_value);
}
}
@@ -174,12 +174,13 @@ const char *cheat_parameter::text()
{
// are we a value cheat?
if (!has_itemlist())
- strprintf(m_curtext,"%d (0x%X)", UINT32(m_value), UINT32(m_value));
-
- // if not, we're an item cheat
+ {
+ m_curtext = string_format("%d (0x%X)", UINT32(m_value), UINT32(m_value));
+ }
else
{
- strprintf(m_curtext, "??? (%d)", UINT32(m_value));
+ // if not, we're an item cheat
+ m_curtext = string_format("??? (%d)", UINT32(m_value));
for (item *curitem = m_itemlist.first(); curitem != nullptr; curitem = curitem->next())
if (curitem->value() == m_value)
{
@@ -502,7 +503,7 @@ void cheat_script::script_entry::execute(cheat_manager &manager, UINT64 &arginde
curarg += arg->values(argindex, &params[curarg]);
// generate the astring
- strprintf(manager.get_output_astring(m_line, m_justify), m_format.c_str(),
+ manager.get_output_astring(m_line, m_justify) = string_format(m_format,
(UINT32)params[0], (UINT32)params[1], (UINT32)params[2], (UINT32)params[3],
(UINT32)params[4], (UINT32)params[5], (UINT32)params[6], (UINT32)params[7],
(UINT32)params[8], (UINT32)params[9], (UINT32)params[10], (UINT32)params[11],
@@ -697,7 +698,7 @@ cheat_entry::cheat_entry(cheat_manager &manager, symbol_table &globaltable, cons
// create the symbol table
m_symbols.add("argindex", symbol_table::READ_ONLY, &m_argindex);
for (int curtemp = 0; curtemp < tempcount; curtemp++) {
- m_symbols.add(strformat("temp%d", curtemp).c_str(), symbol_table::READ_WRITE);
+ m_symbols.add(string_format("temp%d", curtemp).c_str(), symbol_table::READ_WRITE);
}
// read the first comment node
@@ -1133,9 +1134,7 @@ void cheat_manager::reload()
// have the same shortname
if (image->software_entry() != nullptr)
{
- std::string filename;
- strprintf(filename, "%s%s%s", image->software_list_name(), PATH_SEPARATOR, image->basename());
- load_cheats(filename.c_str());
+ load_cheats(string_format("%s%s%s", image->software_list_name(), PATH_SEPARATOR, image->basename()).c_str());
break;
}
// else we are loading outside the software list, try to load machine_basename/crc32.xml
@@ -1144,9 +1143,7 @@ void cheat_manager::reload()
UINT32 crc = image->crc();
if (crc != 0)
{
- std::string filename;
- strprintf(filename, "%s%s%08X", machine().basename(), PATH_SEPARATOR, crc);
- load_cheats(filename.c_str());
+ load_cheats(string_format("%s%s%08X", machine().basename(), PATH_SEPARATOR, crc).c_str());
break;
}
}
diff --git a/src/emu/clifront.cpp b/src/emu/clifront.cpp
index 8967e4c0343..4476e4e0151 100644
--- a/src/emu/clifront.cpp
+++ b/src/emu/clifront.cpp
@@ -152,8 +152,7 @@ int cli_frontend::execute(int argc, char **argv)
// mount only if not already mounted
if (*option == 0)
{
- std::string val;
- strprintf(val, "%s:%s:%s", swlistdev->list_name(), m_options.software_name(), swpart->name());
+ std::string val = string_format("%s:%s:%s", swlistdev->list_name(), m_options.software_name(), swpart->name());
// call this in order to set slot devices according to mounting
m_options.parse_slot_devices(argc, argv, option_errors, image->instance_name(), val.c_str(), swpart);
@@ -718,8 +717,7 @@ void cli_frontend::listmedia(const char *gamename)
for (const device_image_interface *imagedev = iter.first(); imagedev != nullptr; imagedev = iter.next())
{
// extract the shortname with parentheses
- std::string paren_shortname;
- strprintf(paren_shortname,"(%s)", imagedev->brief_instance_name());
+ std::string paren_shortname = string_format("(%s)", imagedev->brief_instance_name());
// output the line, up to the list of extensions
printf("%-13s%-12s%-8s ", first ? drivlist.driver().name : "", imagedev->instance_name(), paren_shortname.c_str());
diff --git a/src/emu/debug/debugcmd.cpp b/src/emu/debug/debugcmd.cpp
index 7ad039806ea..c690dad5bd3 100644
--- a/src/emu/debug/debugcmd.cpp
+++ b/src/emu/debug/debugcmd.cpp
@@ -1036,14 +1036,14 @@ static void execute_ignore(running_machine &machine, int ref, int params, const
if (!exec->device().debug()->observing())
{
if (buffer.empty())
- strprintf(buffer, "Currently ignoring device '%s'", exec->device().tag());
+ buffer = string_format("Currently ignoring device '%s'", exec->device().tag());
else
- strcatprintf(buffer, ", '%s'", exec->device().tag());
+ buffer.append(string_format(", '%s'", exec->device().tag()));
}
/* special message for none */
if (buffer.empty())
- strprintf(buffer, "Not currently ignoring any devices");
+ buffer = string_format("Not currently ignoring any devices");
debug_console_printf(machine, "%s\n", buffer.c_str());
}
@@ -1101,14 +1101,14 @@ static void execute_observe(running_machine &machine, int ref, int params, const
if (exec->device().debug()->observing())
{
if (buffer.empty())
- strprintf(buffer, "Currently observing CPU '%s'", exec->device().tag());
+ buffer = string_format("Currently observing CPU '%s'", exec->device().tag());
else
- strcatprintf(buffer, ", '%s'", exec->device().tag());
+ buffer.append(string_format(", '%s'", exec->device().tag()));
}
/* special message for none */
if (buffer.empty())
- strprintf(buffer, "Not currently observing any devices");
+ buffer = string_format("Not currently observing any devices");
debug_console_printf(machine, "%s\n", buffer.c_str());
}
@@ -1329,11 +1329,11 @@ static void execute_bplist(running_machine &machine, int ref, int params, const
/* loop over the breakpoints */
for (device_debug::breakpoint *bp = device->debug()->breakpoint_first(); bp != nullptr; bp = bp->next())
{
- strprintf(buffer, "%c%4X @ %s", bp->enabled() ? ' ' : 'D', bp->index(), core_i64_hex_format(bp->address(), device->debug()->logaddrchars()));
+ buffer = string_format("%c%4X @ %s", bp->enabled() ? ' ' : 'D', bp->index(), core_i64_hex_format(bp->address(), device->debug()->logaddrchars()));
if (std::string(bp->condition()).compare("1") != 0)
- strcatprintf(buffer, " if %s", bp->condition());
+ buffer.append(string_format(" if %s", bp->condition()));
if (std::string(bp->action()).compare("") != 0)
- strcatprintf(buffer, " do %s", bp->action());
+ buffer.append(string_format(" do %s", bp->action()));
debug_console_printf(machine, "%s\n", buffer.c_str());
printed++;
}
@@ -1496,14 +1496,14 @@ static void execute_wplist(running_machine &machine, int ref, int params, const
/* loop over the watchpoints */
for (device_debug::watchpoint *wp = device->debug()->watchpoint_first(spacenum); wp != nullptr; wp = wp->next())
{
- strprintf(buffer, "%c%4X @ %s-%s %s", wp->enabled() ? ' ' : 'D', wp->index(),
+ buffer = string_format("%c%4X @ %s-%s %s", wp->enabled() ? ' ' : 'D', wp->index(),
core_i64_hex_format(wp->space().byte_to_address(wp->address()), wp->space().addrchars()),
core_i64_hex_format(wp->space().byte_to_address_end(wp->address() + wp->length()) - 1, wp->space().addrchars()),
types[wp->type() & 3]);
if (std::string(wp->condition()).compare("1") != 0)
- strcatprintf(buffer, " if %s", wp->condition());
+ buffer.append(string_format(" if %s", wp->condition()));
if (std::string(wp->action()).compare("") != 0)
- strcatprintf(buffer, " do %s", wp->action());
+ buffer.append(string_format(" do %s", wp->action()));
debug_console_printf(machine, "%s\n", buffer.c_str());
printed++;
}
@@ -1639,10 +1639,9 @@ static void execute_rplist(running_machine &machine, int ref, int params, const
/* loop over the breakpoints */
for (device_debug::registerpoint *rp = device->debug()->registerpoint_first(); rp != nullptr; rp = rp->next())
{
- strprintf(buffer, "%c%4X ", rp->enabled() ? ' ' : 'D', rp->index());
- strcatprintf(buffer, "if %s", rp->condition());
+ buffer = string_format("%c%4X if %s", rp->enabled() ? ' ' : 'D', rp->index(), rp->condition());
if (rp->action() != nullptr)
- strcatprintf(buffer, " do %s", rp->action());
+ buffer.append(string_format(" do %s", rp->action()));
debug_console_printf(machine, "%s\n", buffer.c_str());
printed++;
}
diff --git a/src/emu/debug/debugcpu.cpp b/src/emu/debug/debugcpu.cpp
index 727b08e8f60..4bcb66588a9 100644
--- a/src/emu/debug/debugcpu.cpp
+++ b/src/emu/debug/debugcpu.cpp
@@ -2680,7 +2680,6 @@ const char *device_debug::comment_text(offs_t addr) const
bool device_debug::comment_export(xml_data_node &curnode)
{
// iterate through the comments
- std::string crc_buf;
for (const auto & elem : m_comment_set)
{
xml_data_node *datanode = xml_add_child(&curnode, "comment", xml_normalize_string(elem.m_text.c_str()));
@@ -2688,8 +2687,7 @@ bool device_debug::comment_export(xml_data_node &curnode)
return false;
xml_set_attribute_int(datanode, "address", elem.m_address);
xml_set_attribute_int(datanode, "color", elem.m_color);
- strprintf(crc_buf,"%08X", elem.m_crc);
- xml_set_attribute(datanode, "crc", crc_buf.c_str());
+ xml_set_attribute(datanode, "crc", string_format("%08X", elem.m_crc).c_str());
}
return true;
}
@@ -3051,14 +3049,14 @@ void device_debug::watchpoint_check(address_space &space, int type, offs_t addre
if (type & WATCHPOINT_WRITE)
{
- strprintf(buffer, "Stopped at watchpoint %X writing %s to %08X (PC=%X)", wp->m_index, sizes[size], space.byte_to_address(address), pc);
+ buffer = string_format("Stopped at watchpoint %X writing %s to %08X (PC=%X)", wp->m_index, sizes[size], space.byte_to_address(address), pc);
if (value_to_write >> 32)
- strcatprintf(buffer, " (data=%X%08X)", (UINT32)(value_to_write >> 32), (UINT32)value_to_write);
+ buffer.append(string_format(" (data=%X%08X)", (UINT32)(value_to_write >> 32), (UINT32)value_to_write));
else
- strcatprintf(buffer, " (data=%X)", (UINT32)value_to_write);
+ buffer.append(string_format(" (data=%X)", (UINT32)value_to_write));
}
else
- strprintf(buffer,"Stopped at watchpoint %X reading %s from %08X (PC=%X)", wp->m_index, sizes[size], space.byte_to_address(address), pc);
+ buffer = string_format("Stopped at watchpoint %X reading %s from %08X (PC=%X)", wp->m_index, sizes[size], space.byte_to_address(address), pc);
debug_console_printf(space.machine(), "%s\n", buffer.c_str());
space.device().debug()->compute_debug_flags();
}
@@ -3486,7 +3484,7 @@ void device_debug::tracer::update(offs_t pc)
// print the address
std::string buffer;
int logaddrchars = m_debug.logaddrchars();
- strprintf(buffer,"%0*X: ", logaddrchars, pc);
+ buffer = string_format("%0*X: ", logaddrchars, pc);
// print the disassembly
std::string dasm;
diff --git a/src/emu/debug/dvbpoints.cpp b/src/emu/debug/dvbpoints.cpp
index efb604e385d..1606f596ddf 100644
--- a/src/emu/debug/dvbpoints.cpp
+++ b/src/emu/debug/dvbpoints.cpp
@@ -134,7 +134,7 @@ void debug_view_breakpoints::enumerate_sources()
for (device_disasm_interface *dasm = iter.first(); dasm != nullptr; dasm = iter.next())
{
std::string name;
- strprintf(name, "%s '%s'", dasm->device().name(), dasm->device().tag());
+ name = string_format("%s '%s'", dasm->device().name(), dasm->device().tag());
m_source_list.append(*global_alloc(debug_view_source(name.c_str(), &dasm->device())));
}
@@ -190,14 +190,7 @@ void debug_view_breakpoints::view_click(const int button, const debug_view_xy& p
void debug_view_breakpoints::pad_astring_to_length(std::string& str, int len)
{
- int diff = len - str.length();
- if (diff > 0)
- {
- std::string buffer;
- for (int i = 0; i < diff; i++)
- strcatprintf(buffer, " ");
- strcatprintf(str, "%s", buffer.c_str());
- }
+ str = string_format("%-*s", std::max(len, 0), str);
}
@@ -236,7 +229,7 @@ void debug_view_breakpoints::view_update()
// Draw
debug_view_char *dest = &m_viewdata[0];
- std::string linebuf;
+ std::string linebuf;
// Header
if (m_visible.y > 0)
@@ -282,8 +275,7 @@ void debug_view_breakpoints::view_update()
{
device_debug::breakpoint *const bp = m_buffer[bpi];
- linebuf.clear();
- strcatprintf(linebuf, "%2X", bp->index());
+ linebuf = string_format("%2X", bp->index());
pad_astring_to_length(linebuf, tableBreaks[0]);
linebuf.push_back(bp->enabled() ? 'X' : 'O');
pad_astring_to_length(linebuf, tableBreaks[1]);
diff --git a/src/emu/debug/dvdisasm.cpp b/src/emu/debug/dvdisasm.cpp
index 9b05345b6ff..0b019d076ff 100644
--- a/src/emu/debug/dvdisasm.cpp
+++ b/src/emu/debug/dvdisasm.cpp
@@ -99,7 +99,7 @@ void debug_view_disasm::enumerate_sources()
std::string name;
for (device_disasm_interface *dasm = iter.first(); dasm != nullptr; dasm = iter.next())
{
- strprintf(name,"%s '%s'", dasm->device().name(), dasm->device().tag());
+ name = string_format("%s '%s'", dasm->device().name(), dasm->device().tag());
if (dasm->device().memory().space_config(AS_PROGRAM)!=nullptr)
m_source_list.append(*global_alloc(debug_view_disasm_source(name.c_str(), dasm->device())));
}
diff --git a/src/emu/debug/dvmemory.cpp b/src/emu/debug/dvmemory.cpp
index b792d002c27..c39372af5b3 100644
--- a/src/emu/debug/dvmemory.cpp
+++ b/src/emu/debug/dvmemory.cpp
@@ -142,14 +142,14 @@ void debug_view_memory::enumerate_sources()
if (memintf->has_space(spacenum))
{
address_space &space = memintf->space(spacenum);
- strprintf(name,"%s '%s' %s space memory", memintf->device().name(), memintf->device().tag(), space.name());
+ name = string_format("%s '%s' %s space memory", memintf->device().name(), memintf->device().tag(), space.name());
m_source_list.append(*global_alloc(debug_view_memory_source(name.c_str(), space)));
}
// then add all the memory regions
for (memory_region *region = machine().memory().first_region(); region != nullptr; region = region->next())
{
- strprintf(name, "Region '%s'", region->name());
+ name = string_format("Region '%s'", region->name());
m_source_list.append(*global_alloc(debug_view_memory_source(name.c_str(), *region)));
}
@@ -538,14 +538,14 @@ void debug_view_memory::recompute()
else
{
m_maxaddr = source.m_length - 1;
- addrchars = strprintf(m_addrformat, "%X", m_maxaddr);
+ addrchars = string_format("%X", m_maxaddr).size();
}
// generate an 8-byte aligned format for the address
if (!m_reverse_view)
- strprintf(m_addrformat, "%*s%%0%dX", 8 - addrchars, "", addrchars);
+ m_addrformat = string_format("%*s%%0%dX", 8 - addrchars, "", addrchars);
else
- strprintf(m_addrformat, "%%0%dX%*s", addrchars, 8 - addrchars, "");
+ m_addrformat = string_format("%%0%dX%*s", addrchars, 8 - addrchars, "");
// if we are viewing a space with a minimum chunk size, clamp the bytes per chunk
if (source.m_space != nullptr && source.m_space->byte_to_address(1) > 1)
diff --git a/src/emu/debug/dvstate.cpp b/src/emu/debug/dvstate.cpp
index d0d741ed21e..8e1fe7513fd 100644
--- a/src/emu/debug/dvstate.cpp
+++ b/src/emu/debug/dvstate.cpp
@@ -78,7 +78,7 @@ void debug_view_state::enumerate_sources()
std::string name;
for (device_state_interface *state = iter.first(); state != nullptr; state = iter.next())
{
- strprintf(name,"%s '%s'", state->device().name(), state->device().tag());
+ name = string_format("%s '%s'", state->device().name(), state->device().tag());
m_source_list.append(*global_alloc(debug_view_state_source(name.c_str(), state->device())));
}
@@ -242,7 +242,7 @@ void debug_view_state::view_update()
if (source.m_execintf != nullptr)
{
curitem->m_currval = source.m_execintf->cycles_remaining();
- strprintf(valstr, "%-8d", (UINT32)curitem->m_currval);
+ valstr = string_format("%-8d", (UINT32)curitem->m_currval);
}
break;
@@ -250,7 +250,7 @@ void debug_view_state::view_update()
if (screen != nullptr)
{
curitem->m_currval = screen->hpos();
- strprintf(valstr, "%4d", (UINT32)curitem->m_currval);
+ valstr = string_format("%4d", (UINT32)curitem->m_currval);
}
break;
@@ -258,7 +258,7 @@ void debug_view_state::view_update()
if (screen != nullptr)
{
curitem->m_currval = screen->vpos();
- strprintf(valstr, "%4d", (UINT32)curitem->m_currval);
+ valstr = string_format("%4d", (UINT32)curitem->m_currval);
}
break;
@@ -266,7 +266,7 @@ void debug_view_state::view_update()
if (screen != nullptr)
{
curitem->m_currval = screen->frame_number();
- strprintf(valstr, "%6d", (UINT32)curitem->m_currval);
+ valstr = string_format("%6d", (UINT32)curitem->m_currval);
}
break;
}
diff --git a/src/emu/debug/dvwpoints.cpp b/src/emu/debug/dvwpoints.cpp
index c1e346c62b2..504a1cd19fa 100644
--- a/src/emu/debug/dvwpoints.cpp
+++ b/src/emu/debug/dvwpoints.cpp
@@ -155,7 +155,7 @@ void debug_view_watchpoints::enumerate_sources()
for (device_disasm_interface *dasm = iter.first(); dasm != nullptr; dasm = iter.next())
{
std::string name;
- strprintf(name, "%s '%s'", dasm->device().name(), dasm->device().tag());
+ name = string_format("%s '%s'", dasm->device().name(), dasm->device().tag());
m_source_list.append(*global_alloc(debug_view_source(name.c_str(), &dasm->device())));
}
@@ -213,14 +213,7 @@ void debug_view_watchpoints::view_click(const int button, const debug_view_xy& p
void debug_view_watchpoints::pad_astring_to_length(std::string& str, int len)
{
- int diff = len - str.length();
- if (diff > 0)
- {
- std::string buffer;
- for (int i = 0; i < diff; i++)
- buffer.append(" ");
- strcatprintf(str, "%s", buffer.c_str());
- }
+ str = string_format("%-*s", std::max(len, 0), str);
}
@@ -317,8 +310,7 @@ void debug_view_watchpoints::view_update()
static char const *const types[] = { "unkn ", "read ", "write", "r/w " };
device_debug::watchpoint *const wp = m_buffer[wpi];
- linebuf.clear();
- strcatprintf(linebuf, "%2X", wp->index());
+ linebuf = string_format("%2X", wp->index());
pad_astring_to_length(linebuf, tableBreaks[0]);
linebuf.push_back(wp->enabled() ? 'X' : 'O');
pad_astring_to_length(linebuf, tableBreaks[1]);
diff --git a/src/emu/devfind.h b/src/emu/devfind.h
index 00e859437ba..44a5532b6a8 100644
--- a/src/emu/devfind.h
+++ b/src/emu/devfind.h
@@ -271,7 +271,7 @@ public:
{
for (int index = 0; index < _Count; index++)
{
- strprintf(m_tag[index], "%s.%d", basetag, index);
+ m_tag[index] = string_format("%s.%d", basetag, index);
m_array[index] = std::make_unique<ioport_finder_type>(base, m_tag[index].c_str());
}
}
@@ -442,7 +442,7 @@ public:
{
for (int index = 0; index < _Count; index++)
{
- strprintf(m_tag[index],"%s.%d", basetag, index);
+ m_tag[index] = string_format("%s.%d", basetag, index);
m_array[index] = std::make_unique<shared_ptr_type>(base, m_tag[index].c_str(), width);
}
}
diff --git a/src/emu/diimage.cpp b/src/emu/diimage.cpp
index 6cc9b0fb41a..d43cfe02fed 100644
--- a/src/emu/diimage.cpp
+++ b/src/emu/diimage.cpp
@@ -1181,8 +1181,8 @@ void device_image_interface::update_names(const device_type device_type, const c
const char *brief_name = (device_type!=nullptr) ? brief : device_brieftypename(image_type());
if (count > 1)
{
- strprintf(m_instance_name,"%s%d", inst_name, index + 1);
- strprintf(m_brief_instance_name, "%s%d", brief_name, index + 1);
+ m_instance_name = string_format("%s%d", inst_name, index + 1);
+ m_brief_instance_name = string_format("%s%d", brief_name, index + 1);
}
else
{
@@ -1312,8 +1312,7 @@ bool device_image_interface::load_software_part(const char *path, software_part
bool result = call_softlist_load(swpart->info().list(), swpart->info().shortname(), swpart->romdata());
// Tell the world which part we actually loaded
- std::string full_sw_name;
- strprintf(full_sw_name,"%s:%s:%s", swpart->info().list().list_name(), swpart->info().shortname(), swpart->name());
+ std::string full_sw_name = string_format("%s:%s:%s", swpart->info().list().list_name(), swpart->info().shortname(), swpart->name());
// check compatibility
if (!swpart->is_compatible(swpart->info().list()))
diff --git a/src/emu/distate.cpp b/src/emu/distate.cpp
index 9986b261e93..dcf14c02ee8 100644
--- a/src/emu/distate.cpp
+++ b/src/emu/distate.cpp
@@ -134,7 +134,7 @@ void device_state_entry::format_from_mask()
int width = 0;
for (UINT64 tempmask = m_datamask; tempmask != 0; tempmask >>= 4)
width++;
- strprintf(m_format,"%%0%dX", width);
+ m_format = string_format("%%0%dX", width);
}
diff --git a/src/emu/emuopts.cpp b/src/emu/emuopts.cpp
index 2ff24849bf8..b90905852f7 100644
--- a/src/emu/emuopts.cpp
+++ b/src/emu/emuopts.cpp
@@ -334,14 +334,14 @@ void emu_options::add_device_options()
add_entry(nullptr, "IMAGE DEVICES", OPTION_HEADER | OPTION_FLAG_DEVICE);
// retrieve info about the device instance
- std::string option_name;
- strprintf(option_name, "%s;%s", image->instance_name(), image->brief_instance_name());
+ std::ostringstream option_name;
+ stream_format(option_name, "%s;%s", image->instance_name(), image->brief_instance_name());
if (strcmp(image->device_typename(image->image_type()), image->instance_name()) == 0)
- strcatprintf(option_name, ";%s1;%s1", image->instance_name(), image->brief_instance_name());
+ stream_format(option_name, ";%s1;%s1", image->instance_name(), image->brief_instance_name());
// add the option
if (!exists(image->instance_name()))
- add_entry(option_name.c_str(), nullptr, OPTION_STRING | OPTION_FLAG_DEVICE, nullptr, true);
+ add_entry(option_name.str().c_str(), nullptr, OPTION_STRING | OPTION_FLAG_DEVICE, nullptr, true);
}
}
@@ -574,8 +574,8 @@ bool emu_options::parse_one_ini(const char *basename, int priority, std::string
bool result = parse_ini_file((core_file&)file, priority, OPTION_PRIORITY_DRIVER_INI, error);
// append errors if requested
- if (!error.empty() && error_string != nullptr)
- strcatprintf(*error_string, "While parsing %s:\n%s\n", file.fullpath(), error.c_str());
+ if (!error.empty() && error_string)
+ error_string->append(string_format("While parsing %s:\n%s\n", file.fullpath(), error));
return result;
}
diff --git a/src/emu/hash.cpp b/src/emu/hash.cpp
index 20fd59ecab6..2eaa4c03c2a 100644
--- a/src/emu/hash.cpp
+++ b/src/emu/hash.cpp
@@ -19,10 +19,16 @@
// GLOBAL VARIABLES
//**************************************************************************
+const char hash_collection::HASH_CRC;
+const char hash_collection::HASH_SHA1;
+
const char *hash_collection::HASH_TYPES_CRC = "R";
const char *hash_collection::HASH_TYPES_CRC_SHA1 = "RS";
const char *hash_collection::HASH_TYPES_ALL = "RS";
+const char hash_collection::FLAG_NO_DUMP;
+const char hash_collection::FLAG_BAD_DUMP;
+
//**************************************************************************
diff --git a/src/emu/hash.h b/src/emu/hash.h
index f225c7827a3..a421aa5523f 100644
--- a/src/emu/hash.h
+++ b/src/emu/hash.h
@@ -42,8 +42,8 @@ class hash_collection
{
public:
// hash types are identified by non-hex alpha values (G-Z)
- static const char HASH_CRC = 'R';
- static const char HASH_SHA1 = 'S';
+ static constexpr char HASH_CRC = 'R';
+ static constexpr char HASH_SHA1 = 'S';
// common combinations for requests
static const char *HASH_TYPES_CRC;
@@ -51,8 +51,8 @@ public:
static const char *HASH_TYPES_ALL;
// flags are identified by punctuation marks
- static const char FLAG_NO_DUMP = '!';
- static const char FLAG_BAD_DUMP = '^';
+ static constexpr char FLAG_NO_DUMP = '!';
+ static constexpr char FLAG_BAD_DUMP = '^';
// construction/destruction
hash_collection();
diff --git a/src/emu/info.cpp b/src/emu/info.cpp
index 111022ae223..e8f20f69a6f 100644
--- a/src/emu/info.cpp
+++ b/src/emu/info.cpp
@@ -554,54 +554,54 @@ void info_xml_creator::output_rom(device_t &device)
}
}
- std::string output;
+ std::ostringstream output;
// opening tag
if (!is_disk)
- output.append("\t\t<rom");
+ output << "\t\t<rom";
else
- output.append("\t\t<disk");
+ output << "\t\t<disk";
// add name, merge, bios, and size tags */
if (name != nullptr && name[0] != 0)
- strcatprintf(output," name=\"%s\"", xml_normalize_string(name));
+ stream_format(output, " name=\"%s\"", xml_normalize_string(name));
if (merge_name != nullptr)
- strcatprintf(output," merge=\"%s\"", xml_normalize_string(merge_name));
+ stream_format(output, " merge=\"%s\"", xml_normalize_string(merge_name));
if (bios_name[0] != 0)
- strcatprintf(output," bios=\"%s\"", xml_normalize_string(bios_name));
+ stream_format(output, " bios=\"%s\"", xml_normalize_string(bios_name));
if (!is_disk)
- strcatprintf(output," size=\"%d\"", rom_file_size(rom));
+ stream_format(output, " size=\"%d\"", rom_file_size(rom));
// dump checksum information only if there is a known dump
if (!hashes.flag(hash_collection::FLAG_NO_DUMP))
{
// iterate over hash function types and print m_output their values
- output.append(" ").append(hashes.attribute_string());
+ output << " " << hashes.attribute_string();
}
else
- output.append(" status=\"nodump\"");
+ output << " status=\"nodump\"";
// append a region name
- strcatprintf(output," region=\"%s\"", ROMREGION_GETTAG(region));
+ stream_format(output, " region=\"%s\"", ROMREGION_GETTAG(region));
// for non-disk entries, print offset
if (!is_disk)
- strcatprintf(output," offset=\"%x\"", offset);
+ stream_format(output, " offset=\"%x\"", offset);
// for disk entries, add the disk index
else
{
- strcatprintf(output," index=\"%x\"", DISK_GETINDEX(rom));
- strcatprintf(output," writable=\"%s\"", DISK_ISREADONLY(rom) ? "no" : "yes");
+ stream_format(output, " index=\"%x\"", DISK_GETINDEX(rom));
+ stream_format(output, " writable=\"%s\"", DISK_ISREADONLY(rom) ? "no" : "yes");
}
// add optional flag
if (ROM_ISOPTIONAL(rom))
- output.append(" optional=\"yes\"");
+ output << " optional=\"yes\"";
- output.append("/>\n");
+ output << "/>\n";
- fprintf(m_output, "%s", output.c_str());
+ fprintf(m_output, "%s", output.str().c_str());
}
}
}
@@ -1096,7 +1096,7 @@ void info_xml_creator::output_switches(const ioport_list &portlist, const char *
for (ioport_field *field = port->first_field(); field != nullptr; field = field->next())
if (field->type() == type)
{
- std::string output;
+ std::ostringstream output;
std::string newtag(port->tag()), oldtag(":");
newtag = newtag.substr(newtag.find(oldtag.append(root_tag)) + oldtag.length());
@@ -1104,18 +1104,18 @@ void info_xml_creator::output_switches(const ioport_list &portlist, const char *
// output the switch name information
std::string normalized_field_name(xml_normalize_string(field->name()));
std::string normalized_newtag(xml_normalize_string(newtag.c_str()));
- strcatprintf(output,"\t\t<%s name=\"%s\" tag=\"%s\" mask=\"%u\">\n", outertag, normalized_field_name.c_str(), normalized_newtag.c_str(), field->mask());
+ stream_format(output,"\t\t<%s name=\"%s\" tag=\"%s\" mask=\"%u\">\n", outertag, normalized_field_name.c_str(), normalized_newtag.c_str(), field->mask());
// loop over settings
for (ioport_setting *setting = field->first_setting(); setting != nullptr; setting = setting->next())
{
- strcatprintf(output,"\t\t\t<%s name=\"%s\" value=\"%u\"%s/>\n", innertag, xml_normalize_string(setting->name()), setting->value(), setting->value() == field->defvalue() ? " default=\"yes\"" : "");
+ stream_format(output,"\t\t\t<%s name=\"%s\" value=\"%u\"%s/>\n", innertag, xml_normalize_string(setting->name()), setting->value(), setting->value() == field->defvalue() ? " default=\"yes\"" : "");
}
// terminate the switch entry
- strcatprintf(output,"\t\t</%s>\n", outertag);
+ stream_format(output,"\t\t</%s>\n", outertag);
- fprintf(m_output, "%s", output.c_str());
+ fprintf(m_output, "%s", output.str().c_str());
}
}
diff --git a/src/emu/input.cpp b/src/emu/input.cpp
index 474680a7409..68e825402b4 100644
--- a/src/emu/input.cpp
+++ b/src/emu/input.cpp
@@ -1471,7 +1471,7 @@ std::string input_manager::code_name(input_code code) const
const char *devclass = (*devclass_string_table)[code.device_class()];
// determine the devindex part
- std::string devindex = strformat("%d", code.device_index() + 1);
+ std::string devindex = string_format("%d", code.device_index() + 1);
// if we're unifying all devices, don't display a number
if (!m_class[code.device_class()]->multi())
@@ -1521,7 +1521,7 @@ std::string input_manager::code_to_token(input_code code) const
const char *devclass = (*devclass_token_table)[code.device_class()];
// determine the devindex part; keyboard 0 doesn't show an index
- std::string devindex = strformat("%d", code.device_index() + 1);
+ std::string devindex = string_format("%d", code.device_index() + 1);
if (code.device_class() == DEVICE_CLASS_KEYBOARD && code.device_index() == 0)
devindex.clear();
diff --git a/src/emu/ioport.cpp b/src/emu/ioport.cpp
index 4d2a7852f91..a2547fdc5be 100644
--- a/src/emu/ioport.cpp
+++ b/src/emu/ioport.cpp
@@ -1259,7 +1259,7 @@ std::string natural_keyboard::unicode_to_string(unicode_char ch)
// did we fail to resolve? if so, we have a last resort
if (buffer.empty())
- strprintf(buffer,"U+%04X", unsigned(ch));
+ buffer = string_format("U+%04X", unsigned(ch));
break;
}
return buffer;
@@ -1337,29 +1337,27 @@ std::string natural_keyboard::key_name(unicode_char ch) const
std::string natural_keyboard::dump()
{
- std::string buffer;
+ std::ostringstream buffer;
const size_t left_column_width = 24;
// loop through all codes
for (auto & code : m_keycode_map)
{
// describe the character code
-
- strcatprintf(buffer,"%08X (%s) ", code.ch, unicode_to_string(code.ch).c_str());
+ std::string description = string_format("%08X (%s) ", code.ch, unicode_to_string(code.ch).c_str());
// pad with spaces
- while (buffer.length() < left_column_width)
- buffer.push_back(' ');
+ stream_format(buffer, "%-*s", left_column_width, description);
// identify the keys used
for (int field = 0; field < ARRAY_LENGTH(code.field) && code.field[field] != nullptr; field++)
- strcatprintf(buffer, "%s'%s'", (field > 0) ? ", " : "", code.field[field]->name());
+ stream_format(buffer, "%s'%s'", (field > 0) ? ", " : "", code.field[field]->name());
// carriage return
- buffer.push_back('\n');
+ buffer << '\n';
}
- return buffer;
+ return buffer.str();
}
@@ -2095,7 +2093,7 @@ void ioport_field::expand_diplocation(const char *location, std::string &errorbu
{
if (lastname == nullptr)
{
- strcatprintf(errorbuf, "Switch location '%s' missing switch name!\n", location);
+ errorbuf.append(string_format("Switch location '%s' missing switch name!\n", location));
lastname = (char *)"UNK";
}
name.assign(lastname);
@@ -2112,7 +2110,7 @@ void ioport_field::expand_diplocation(const char *location, std::string &errorbu
// now scan the switch number
int swnum = -1;
if (sscanf(number, "%d", &swnum) != 1)
- strcatprintf(errorbuf, "Switch location '%s' has invalid format!\n", location);
+ errorbuf.append(string_format("Switch location '%s' has invalid format!\n", location));
// allocate a new entry
m_diploclist.append(*global_alloc(ioport_diplocation(name.c_str(), swnum, invert)));
@@ -2130,7 +2128,7 @@ void ioport_field::expand_diplocation(const char *location, std::string &errorbu
for (bits = 0, temp = m_mask; temp != 0 && bits < 32; bits++)
temp &= temp - 1;
if (bits != entries)
- strcatprintf(errorbuf, "Switch location '%s' does not describe enough bits for mask %X\n", location, m_mask);
+ errorbuf.append(string_format("Switch location '%s' does not describe enough bits for mask %X\n", location, m_mask));
}
@@ -2195,7 +2193,7 @@ ioport_field_live::ioport_field_live(ioport_field &field, analog_field *analog)
unicode_char ch = field.keyboard_code(which);
if (ch == 0)
break;
- strcatprintf(name, "%-*s ", MAX(SPACE_COUNT - 1, 0), field.manager().natkeyboard().key_name(ch).c_str());
+ name.append(string_format("%-*s ", MAX(SPACE_COUNT - 1, 0), field.manager().natkeyboard().key_name(ch)));
}
// trim extra spaces
@@ -2371,7 +2369,7 @@ void ioport_port::insert_field(ioport_field &newfield, ioport_value &disallowedb
if (newfield.condition().none())
{
if ((newfield.mask() & disallowedbits) != 0)
- strcatprintf(errorbuf, "INPUT_TOKEN_FIELD specifies duplicate port bits (port=%s mask=%X)\n", tag(), newfield.mask());
+ errorbuf.append(string_format("INPUT_TOKEN_FIELD specifies duplicate port bits (port=%s mask=%X)\n", tag(), newfield.mask()));
disallowedbits |= newfield.mask();
}
@@ -3695,107 +3693,90 @@ void ioport_manager::record_frame(const attotime &curtime)
record_write(UINT32(machine().video().speed_percent() * double(1 << 20)));
}
- if (m_timecode_file.is_open() && machine().video().get_timecode_write()) {
+ if (m_timecode_file.is_open() && machine().video().get_timecode_write())
+ {
// Display the timecode
- std::string current_time_str;
m_timecode_count++;
- strcatprintf(current_time_str, "%02d:%02d:%02d.%03d",
- (int)curtime.seconds() / (60 * 60),
- (curtime.seconds() / 60) % 60,
- curtime.seconds() % 60,
- (int)(curtime.attoseconds()/ATTOSECONDS_PER_MILLISECOND));
+ std::string const current_time_str = string_format("%02d:%02d:%02d.%03d",
+ (int)curtime.seconds() / (60 * 60),
+ (curtime.seconds() / 60) % 60,
+ curtime.seconds() % 60,
+ (int)(curtime.attoseconds()/ATTOSECONDS_PER_MILLISECOND));
// Elapsed from previous timecode
- attotime elapsed_time = curtime - m_timecode_last_time;
+ attotime const elapsed_time = curtime - m_timecode_last_time;
m_timecode_last_time = curtime;
- std::string elapsed_time_str;
- strcatprintf(elapsed_time_str, "%02d:%02d:%02d.%03d",
- elapsed_time.seconds() / (60 * 60),
- (elapsed_time.seconds() / 60) % 60,
- elapsed_time.seconds() % 60,
- int(elapsed_time.attoseconds()/ATTOSECONDS_PER_MILLISECOND));
+ std::string const elapsed_time_str = string_format("%02d:%02d:%02d.%03d",
+ elapsed_time.seconds() / (60 * 60),
+ (elapsed_time.seconds() / 60) % 60,
+ elapsed_time.seconds() % 60,
+ int(elapsed_time.attoseconds()/ATTOSECONDS_PER_MILLISECOND));
// Number of ms from beginning of playback
- int mseconds_start = curtime.seconds()*1000 + curtime.attoseconds()/ATTOSECONDS_PER_MILLISECOND;
- std::string mseconds_start_str;
- strcatprintf(mseconds_start_str, "%015d", mseconds_start);
+ int const mseconds_start = curtime.seconds()*1000 + curtime.attoseconds()/ATTOSECONDS_PER_MILLISECOND;
+ std::string const mseconds_start_str = string_format("%015d", mseconds_start);
// Number of ms from previous timecode
int mseconds_elapsed = elapsed_time.seconds()*1000 + elapsed_time.attoseconds()/ATTOSECONDS_PER_MILLISECOND;
- std::string mseconds_elapsed_str;
- strcatprintf(mseconds_elapsed_str, "%015d", mseconds_elapsed);
+ std::string const mseconds_elapsed_str = string_format("%015d", mseconds_elapsed);
// Number of frames from beginning of playback
- int frame_start = mseconds_start * 60 / 1000;
- std::string frame_start_str;
- strcatprintf(frame_start_str, "%015d", frame_start);
+ int const frame_start = mseconds_start * 60 / 1000;
+ std::string const frame_start_str = string_format("%015d", frame_start);
// Number of frames from previous timecode
int frame_elapsed = mseconds_elapsed * 60 / 1000;
- std::string frame_elapsed_str;
- strcatprintf(frame_elapsed_str, "%015d", frame_elapsed);
+ std::string const frame_elapsed_str = string_format("%015d", frame_elapsed);
std::string message;
std::string timecode_text;
std::string timecode_key;
bool show_timecode_counter = false;
if (m_timecode_count==1) {
- message += "TIMECODE: Intro started at " + current_time_str;
+ message = string_format("TIMECODE: Intro started at %s", current_time_str);
timecode_key = "INTRO_START";
timecode_text = "INTRO";
show_timecode_counter = true;
}
else if (m_timecode_count==2) {
- message += "TIMECODE: Intro duration " + elapsed_time_str;
- timecode_key = "INTRO_STOP";
machine().video().add_to_total_time(elapsed_time);
- //timecode_text += "INTRO";
+ message = string_format("TIMECODE: Intro duration %s", elapsed_time_str);
+ timecode_key = "INTRO_STOP";
+ //timecode_text = "INTRO";
}
else if (m_timecode_count==3) {
- message += "TIMECODE: Gameplay started at " + current_time_str;
+ message = string_format("TIMECODE: Gameplay started at %s", current_time_str);
timecode_key = "GAMEPLAY_START";
- timecode_text += "GAMEPLAY";
+ timecode_text = "GAMEPLAY";
show_timecode_counter = true;
}
else if (m_timecode_count==4) {
- message += "TIMECODE: Gameplay duration " + elapsed_time_str;
- timecode_key = "GAMEPLAY_STOP";
machine().video().add_to_total_time(elapsed_time);
- //timecode_text += "GAMEPLAY";
+ message = string_format("TIMECODE: Gameplay duration %s", elapsed_time_str);
+ timecode_key = "GAMEPLAY_STOP";
+ //timecode_text = "GAMEPLAY";
}
else if (m_timecode_count % 2 == 1) {
- std::string timecode_count_str;
- strcatprintf(timecode_count_str, "%03d", (m_timecode_count-3)/2);
- timecode_key = "EXTRA_START_" + timecode_count_str;
- timecode_count_str.clear();
- strcatprintf(timecode_count_str, "%d", (m_timecode_count-3)/2);
- message += "TIMECODE: Extra " + timecode_count_str + " started at " + current_time_str;
- timecode_text += "EXTRA " + timecode_count_str;
+ message = string_format("TIMECODE: Extra %d started at %s", (m_timecode_count-3)/2, current_time_str);
+ timecode_key = string_format("EXTRA_START_%03d", (m_timecode_count-3)/2);
+ timecode_text = string_format("EXTRA %d", (m_timecode_count-3)/2);
show_timecode_counter = true;
}
else {
machine().video().add_to_total_time(elapsed_time);
-
- std::string timecode_count_str;
- strcatprintf(timecode_count_str, "%d", (m_timecode_count-4)/2);
- message += "TIMECODE: Extra " + timecode_count_str + " duration " + elapsed_time_str;
-
- timecode_count_str.clear();
- strcatprintf(timecode_count_str, "%03d", (m_timecode_count-4)/2);
- timecode_key = "EXTRA_STOP_" + timecode_count_str;
+ message = string_format("TIMECODE: Extra %d duration %s", (m_timecode_count-4)/2, elapsed_time_str);
+ timecode_key = string_format("EXTRA_STOP_%03d", (m_timecode_count-4)/2);
}
osd_printf_info("%s \n", message.c_str());
machine().popmessage("%s \n", message.c_str());
- std::string line_to_add;
- line_to_add.append(timecode_key).append(19-timecode_key.length(), ' ');
- line_to_add +=
- " " + current_time_str + " " + elapsed_time_str +
- " " + mseconds_start_str + " " + mseconds_elapsed_str +
- " " + frame_start_str + " " + frame_elapsed_str +
- "\n";
- m_timecode_file.puts(line_to_add.c_str());
+ m_timecode_file.printf(
+ "%-19s %s %s %s %s %s %s\n",
+ timecode_key.c_str(),
+ current_time_str.c_str(), elapsed_time_str.c_str(),
+ mseconds_start_str.c_str(), mseconds_elapsed_str.c_str(),
+ frame_start_str.c_str(), frame_elapsed_str.c_str());
machine().video().set_timecode_write(false);
machine().video().set_timecode_text(timecode_text);
@@ -4616,7 +4597,7 @@ std::string ioport_manager::input_type_to_token(ioport_type type, int player)
return std::string(entry->token());
// if that fails, carry on
- return strformat("TYPE_OTHER(%d,%d)", type, player);
+ return string_format("TYPE_OTHER(%d,%d)", type, player);
}
diff --git a/src/emu/machine.cpp b/src/emu/machine.cpp
index 0c8d85a4540..7c82f554dc9 100644
--- a/src/emu/machine.cpp
+++ b/src/emu/machine.cpp
@@ -190,7 +190,7 @@ const char *running_machine::describe_context()
if (cpu != nullptr)
{
address_space &prg = cpu->space(AS_PROGRAM);
- strprintf(m_context, "'%s' (%s)", cpu->tag(), core_i64_format(cpu->pc(), prg.logaddrchars(), prg.is_octal()));
+ m_context = string_format("'%s' (%s)", cpu->tag(), core_i64_format(cpu->pc(), prg.logaddrchars(), prg.is_octal()));
}
}
else
@@ -1199,9 +1199,10 @@ void running_machine::postload_all_devices()
std::string running_machine::nvram_filename(device_t &device) const
{
// start with either basename or basename_biosnum
- std::string result(basename());
+ std::ostringstream result;
+ result << basename();
if (root_device().system_bios() != 0 && root_device().default_bios() != root_device().system_bios())
- strcatprintf(result, "_%d", root_device().system_bios() - 1);
+ stream_format(result, "_%d", root_device().system_bios() - 1);
// device-based NVRAM gets its own name in a subdirectory
if (device.owner() != nullptr)
@@ -1218,14 +1219,14 @@ std::string running_machine::nvram_filename(device_t &device) const
}
}
if (software != nullptr && *software != '\0')
- result.append(PATH_SEPARATOR).append(software);
+ result << PATH_SEPARATOR << software;
std::string tag(device.tag());
tag.erase(0, 1);
strreplacechr(tag,':', '_');
- result.append(PATH_SEPARATOR).append(tag);
+ result << PATH_SEPARATOR << tag;
}
- return result;
+ return result.str();
}
/*-------------------------------------------------
diff --git a/src/emu/memory.cpp b/src/emu/memory.cpp
index aa33faf65cf..520a0cd25fe 100644
--- a/src/emu/memory.cpp
+++ b/src/emu/memory.cpp
@@ -2653,7 +2653,7 @@ memory_bank &address_space::bank_find_or_allocate(const char *tag, offs_t addrst
membank = global_alloc(memory_bank(*this, banknum, bytestart, byteend, tag));
std::string temptag;
if (tag == nullptr) {
- strprintf(temptag, "anon_%p", (void *) membank);
+ temptag = string_format("anon_%p", membank);
tag = temptag.c_str();
}
manager().m_banklist.append(tag, *membank);
@@ -3842,8 +3842,7 @@ memory_block::memory_block(address_space &space, offs_t bytestart, offs_t byteen
if (region == nullptr)
{
int bytes_per_element = space.data_width() / 8;
- std::string name;
- strprintf(name,"%08x-%08x", bytestart, byteend);
+ std::string name = string_format("%08x-%08x", bytestart, byteend);
space.machine().save().save_memory(nullptr, "memory", space.device().tag(), space.spacenum(), name.c_str(), m_data, bytes_per_element, (UINT32)(byteend + 1 - bytestart) / bytes_per_element);
}
}
@@ -3880,13 +3879,13 @@ memory_bank::memory_bank(address_space &space, int index, offs_t bytestart, offs
// generate an internal tag if we don't have one
if (tag == nullptr)
{
- strprintf(m_tag,"~%d~", index);
- strprintf(m_name,"Internal bank #%d", index);
+ m_tag = string_format("~%d~", index);
+ m_name = string_format("Internal bank #%d", index);
}
else
{
m_tag.assign(tag);
- strprintf(m_name,"Bank '%s'", tag);
+ m_name = string_format("Bank '%s'", tag);
}
if (!m_anonymous && space.machine().save().registration_allowed())
diff --git a/src/emu/profiler.cpp b/src/emu/profiler.cpp
index 102f0358e09..57b775556b2 100644
--- a/src/emu/profiler.cpp
+++ b/src/emu/profiler.cpp
@@ -202,15 +202,15 @@ void real_profiler_state::update_text(running_machine &machine)
if (computed != 0)
{
// start with the un-normalized percentage
- strcatprintf(m_text, "%02d%% ", (int)((computed * 100 + total / 2) / total));
+ m_text.append(string_format("%02d%% ", (int)((computed * 100 + total / 2) / total)));
// followed by the normalized percentage for everything but profiler and idle
if (curtype < PROFILER_PROFILER)
- strcatprintf(m_text, "%02d%% ", (int)((computed * 100 + normalize / 2) / normalize));
+ m_text.append(string_format("%02d%% ", (int)((computed * 100 + normalize / 2) / normalize)));
// and then the text
if (curtype >= PROFILER_DEVICE_FIRST && curtype <= PROFILER_DEVICE_MAX)
- strcatprintf(m_text, "'%s'", iter.byindex(curtype - PROFILER_DEVICE_FIRST)->tag());
+ m_text.append(string_format("'%s'", iter.byindex(curtype - PROFILER_DEVICE_FIRST)->tag()));
else
for (auto & name : names)
if (name.type == curtype)
diff --git a/src/emu/romload.cpp b/src/emu/romload.cpp
index 886093edf13..656bf4bf362 100644
--- a/src/emu/romload.cpp
+++ b/src/emu/romload.cpp
@@ -302,7 +302,7 @@ void rom_load_manager::determine_bios_rom(device_t *device, const char *specbios
/* if we got neither an empty string nor 'default' then warn the user */
if (specbios[0] != 0 && strcmp(specbios, "default") != 0)
{
- strcatprintf(m_errorstring, "%s: invalid bios, reverting to default\n", specbios);
+ m_errorstring.append(string_format("%s: invalid bios, reverting to default\n", specbios));
m_warnings++;
}
@@ -370,13 +370,13 @@ void rom_load_manager::handle_missing_file(const rom_entry *romp, std::string tr
bool is_chd_error = (is_chd && chderr != CHDERR_FILE_NOT_FOUND);
if (is_chd_error)
- strcatprintf(m_errorstring, "%s CHD ERROR: %s\n", name.c_str(), chd_file::error_string(chderr));
+ m_errorstring.append(string_format("%s CHD ERROR: %s\n", name.c_str(), chd_file::error_string(chderr)));
/* optional files are okay */
if (ROM_ISOPTIONAL(romp))
{
if (!is_chd_error)
- strcatprintf(m_errorstring, "OPTIONAL %s NOT FOUND%s\n", name.c_str(), tried_file_names.c_str());
+ m_errorstring.append(string_format("OPTIONAL %s NOT FOUND%s\n", name.c_str(), tried_file_names.c_str()));
m_warnings++;
}
@@ -384,7 +384,7 @@ void rom_load_manager::handle_missing_file(const rom_entry *romp, std::string tr
else if (hash_collection(ROM_GETHASHDATA(romp)).flag(hash_collection::FLAG_NO_DUMP))
{
if (!is_chd_error)
- strcatprintf(m_errorstring, "%s NOT FOUND (NO GOOD DUMP KNOWN)%s\n", name.c_str(), tried_file_names.c_str());
+ m_errorstring.append(string_format("%s NOT FOUND (NO GOOD DUMP KNOWN)%s\n", name, tried_file_names));
m_knownbad++;
}
@@ -392,7 +392,7 @@ void rom_load_manager::handle_missing_file(const rom_entry *romp, std::string tr
else
{
if (!is_chd_error)
- strcatprintf(m_errorstring, "%s NOT FOUND%s\n", name.c_str(), tried_file_names.c_str());
+ m_errorstring.append(string_format("%s NOT FOUND%s\n", name.c_str(), tried_file_names));
m_errors++;
}
}
@@ -406,8 +406,8 @@ void rom_load_manager::handle_missing_file(const rom_entry *romp, std::string tr
void rom_load_manager::dump_wrong_and_correct_checksums(const hash_collection &hashes, const hash_collection &acthashes)
{
- strcatprintf(m_errorstring, " EXPECTED: %s\n", hashes.macro_string().c_str());
- strcatprintf(m_errorstring, " FOUND: %s\n", acthashes.macro_string().c_str());
+ m_errorstring.append(string_format(" EXPECTED: %s\n", hashes.macro_string().c_str()));
+ m_errorstring.append(string_format(" FOUND: %s\n", acthashes.macro_string().c_str()));
}
@@ -426,7 +426,7 @@ void rom_load_manager::verify_length_and_hash(const char *name, UINT32 explength
UINT32 actlength = m_file->size();
if (explength != actlength)
{
- strcatprintf(m_errorstring, "%s WRONG LENGTH (expected: %08x found: %08x)\n", name, explength, actlength);
+ m_errorstring.append(string_format(m_errorstring, "%s WRONG LENGTH (expected: %08x found: %08x)\n", name, explength, actlength));
m_warnings++;
}
@@ -434,21 +434,21 @@ void rom_load_manager::verify_length_and_hash(const char *name, UINT32 explength
hash_collection &acthashes = m_file->hashes(hashes.hash_types().c_str());
if (hashes.flag(hash_collection::FLAG_NO_DUMP))
{
- strcatprintf(m_errorstring, "%s NO GOOD DUMP KNOWN\n", name);
+ m_errorstring.append(string_format(m_errorstring, "%s NO GOOD DUMP KNOWN\n", name));
m_knownbad++;
}
/* verify checksums */
else if (hashes != acthashes)
{
/* otherwise, it's just bad */
- strcatprintf(m_errorstring, "%s WRONG CHECKSUMS:\n", name);
+ m_errorstring.append(string_format(m_errorstring, "%s WRONG CHECKSUMS:\n", name));
dump_wrong_and_correct_checksums(hashes, acthashes);
m_warnings++;
}
/* If it matches, but it is actually a bad dump, write it */
else if (hashes.flag(hash_collection::FLAG_BAD_DUMP))
{
- strcatprintf(m_errorstring, "%s ROM NEEDS REDUMP\n",name);
+ m_errorstring.append(string_format(m_errorstring, "%s ROM NEEDS REDUMP\n", name));
m_knownbad++;
}
}
@@ -1179,13 +1179,13 @@ void rom_load_manager::process_disk_entries(const char *regiontag, const rom_ent
/* verify the hash */
if (hashes != acthashes)
{
- strcatprintf(m_errorstring, "%s WRONG CHECKSUMS:\n", filename.c_str());
+ m_errorstring.append(string_format("%s WRONG CHECKSUMS:\n", filename));
dump_wrong_and_correct_checksums(hashes, acthashes);
m_warnings++;
}
else if (hashes.flag(hash_collection::FLAG_BAD_DUMP))
{
- strcatprintf(m_errorstring, "%s CHD NEEDS REDUMP\n", filename.c_str());
+ m_errorstring.append(string_format("%s CHD NEEDS REDUMP\n", filename));
m_knownbad++;
}
@@ -1196,7 +1196,7 @@ void rom_load_manager::process_disk_entries(const char *regiontag, const rom_ent
err = open_disk_diff(machine().options(), romp, chd->orig_chd(), chd->diff_chd());
if (err != CHDERR_NONE)
{
- strcatprintf(m_errorstring, "%s DIFF CHD ERROR: %s\n", filename.c_str(), chd_file::error_string(err));
+ m_errorstring.append(string_format("%s DIFF CHD ERROR: %s\n", filename, chd_file::error_string(err)));
m_errors++;
chd = nullptr;
continue;
@@ -1276,13 +1276,13 @@ void rom_load_manager::load_software_part_region(device_t &device, software_list
UINT32 supported = swinfo->supported();
if (supported == SOFTWARE_SUPPORTED_PARTIAL)
{
- strcatprintf(m_errorstring, "WARNING: support for software %s (in list %s) is only partial\n", swname, swlist.list_name());
- strcatprintf(m_softwarningstring, "Support for software %s (in list %s) is only partial\n", swname, swlist.list_name());
+ m_errorstring.append(string_format("WARNING: support for software %s (in list %s) is only partial\n", swname, swlist.list_name()));
+ m_softwarningstring.append(string_format("Support for software %s (in list %s) is only partial\n", swname, swlist.list_name()));
}
if (supported == SOFTWARE_SUPPORTED_NO)
{
- strcatprintf(m_errorstring, "WARNING: support for software %s (in list %s) is only preliminary\n", swname, swlist.list_name());
- strcatprintf(m_softwarningstring, "Support for software %s (in list %s) is only preliminary\n", swname, swlist.list_name());
+ m_errorstring.append(string_format("WARNING: support for software %s (in list %s) is only preliminary\n", swname, swlist.list_name()));
+ m_softwarningstring.append(string_format("Support for software %s (in list %s) is only preliminary\n", swname, swlist.list_name()));
}
// attempt reading up the chain through the parents and create a locationtag std::string in the format
diff --git a/src/emu/save.cpp b/src/emu/save.cpp
index 89197ab224e..6c875bc08ff 100644
--- a/src/emu/save.cpp
+++ b/src/emu/save.cpp
@@ -164,9 +164,9 @@ void save_manager::save_memory(device_t *device, const char *module, const char
// create the full name
std::string totalname;
if (tag != nullptr)
- strprintf(totalname, "%s/%s/%X/%s", module, tag, index, name);
+ totalname = string_format("%s/%s/%X/%s", module, tag, index, name);
else
- strprintf(totalname, "%s/%X/%s", module, index, name);
+ totalname = string_format("%s/%X/%s", module, index, name);
// look for duplicates and an entry to insert in front of
state_entry *insert_after = nullptr;
diff --git a/src/emu/schedule.cpp b/src/emu/schedule.cpp
index 925364aab07..7e131f18451 100644
--- a/src/emu/schedule.cpp
+++ b/src/emu/schedule.cpp
@@ -252,7 +252,7 @@ void emu_timer::register_save()
// for device timers, it is an index based on the device and timer ID
else
{
- strprintf(name,"%s/%d", m_device->tag(), m_id);
+ name = string_format("%s/%d", m_device->tag(), m_id);
for (emu_timer *curtimer = machine().scheduler().first_timer(); curtimer != nullptr; curtimer = curtimer->next())
if (!curtimer->m_temporary && curtimer->m_device != nullptr && curtimer->m_device == m_device && curtimer->m_id == m_id)
index++;
diff --git a/src/emu/softlist.cpp b/src/emu/softlist.cpp
index 6631fa82124..bab8ed3a3e9 100644
--- a/src/emu/softlist.cpp
+++ b/src/emu/softlist.cpp
@@ -486,7 +486,7 @@ void software_list_device::parse()
m_file.close();
}
else
- strprintf(m_errors, "Error opening file: %s\n", filename());
+ m_errors = string_format("Error opening file: %s\n", filename());
// indicate that we've been parsed
m_parsed = true;
@@ -726,7 +726,7 @@ void softlist_parser::expat_free(void *ptr)
void ATTR_PRINTF(2,3) softlist_parser::parse_error(const char *fmt, ...)
{
// always start with filename(line.column):
- strcatprintf(m_errors, "%s(%d.%d): ", filename(), line(), column());
+ m_errors.append(string_format("%s(%d.%d): ", filename(), line(), column()));
// append the remainder of the string
va_list va;
@@ -1151,14 +1151,14 @@ void softlist_parser::parse_data_start(const char *tagname, const char **attribu
std::string hashdata;
if (nodump)
{
- strprintf(hashdata, "%s", NO_DUMP);
+ hashdata = string_format("%s", NO_DUMP);
if (crc != nullptr && sha1 != nullptr)
parse_error("No need for hash definition");
}
else
{
if (crc != nullptr && sha1 != nullptr)
- strprintf(hashdata, "%c%s%c%s%s", hash_collection::HASH_CRC, crc, hash_collection::HASH_SHA1, sha1, (baddump ? BAD_DUMP : ""));
+ hashdata = string_format("%c%s%c%s%s", hash_collection::HASH_CRC, crc, hash_collection::HASH_SHA1, sha1, (baddump ? BAD_DUMP : ""));
else
parse_error("Incomplete rom hash definition");
}
@@ -1201,8 +1201,7 @@ void softlist_parser::parse_data_start(const char *tagname, const char **attribu
bool baddump = (status != nullptr && strcmp(status, "baddump") == 0);
bool nodump = (status != nullptr && strcmp(status, "nodump" ) == 0);
bool writeable = (writeablestr != nullptr && strcmp(writeablestr, "yes") == 0);
- std::string hashdata;
- strprintf(hashdata, "%c%s%s", hash_collection::HASH_SHA1, sha1, (nodump ? NO_DUMP : (baddump ? BAD_DUMP : "")));
+ std::string hashdata = string_format("%c%s%s", hash_collection::HASH_SHA1, sha1, (nodump ? NO_DUMP : (baddump ? BAD_DUMP : "")));
add_rom_entry(name, hashdata.c_str(), 0, 0, ROMENTRYTYPE_ROM | (writeable ? DISK_READWRITE : DISK_READONLY));
}
diff --git a/src/emu/sound.cpp b/src/emu/sound.cpp
index 096695935d9..1ece31f9e6e 100644
--- a/src/emu/sound.cpp
+++ b/src/emu/sound.cpp
@@ -75,8 +75,7 @@ sound_stream::sound_stream(device_t &device, int inputs, int outputs, int sample
m_callback = stream_update_delegate(FUNC(device_sound_interface::sound_stream_update),(device_sound_interface *)sound);
// create a unique tag for saving
- std::string state_tag;
- strprintf(state_tag, "%d", m_device.machine().sound().m_stream_list.count());
+ std::string state_tag = string_format("%d", m_device.machine().sound().m_stream_list.count());
m_device.machine().save().save_item(&m_device, "stream", state_tag.c_str(), 0, NAME(m_sample_rate));
m_device.machine().save().register_postload(save_prepost_delegate(FUNC(sound_stream::postload), this));
@@ -165,17 +164,17 @@ float sound_stream::output_gain(int outputnum) const
std::string sound_stream::input_name(int inputnum) const
{
- std::string str;
+ std::ostringstream str;
// start with our device name and tag
assert(inputnum >= 0 && inputnum < m_input.size());
- strprintf(str, "%s '%s': ", m_device.name(), m_device.tag());
+ stream_format(str, "%s '%s': ", m_device.name(), m_device.tag());
// if we have a source, indicate where the sound comes from by device name and tag
if (m_input[inputnum].m_source != nullptr && m_input[inputnum].m_source->m_stream != nullptr)
{
device_t &source = m_input[inputnum].m_source->m_stream->device();
- strcatprintf(str, "%s '%s'", source.name(), source.tag());
+ stream_format(str, "%s '%s'", source.name(), source.tag());
// get the sound interface; if there is more than 1 output we need to figure out which one
device_sound_interface *sound;
@@ -188,12 +187,12 @@ std::string sound_stream::input_name(int inputnum) const
for (int outputnum = 0; (outstream = sound->output_to_stream_output(outputnum, streamoutputnum)) != nullptr; outputnum++)
if (outstream == m_input[inputnum].m_source->m_stream && m_input[inputnum].m_source == &outstream->m_output[streamoutputnum])
{
- strcatprintf(str, " Ch.%d", outputnum);
+ stream_format(str, " Ch.%d", outputnum);
break;
}
}
}
- return str;
+ return str.str();
}
diff --git a/src/emu/ui/auditmenu.cpp b/src/emu/ui/auditmenu.cpp
index 9703545948e..43f057f0b10 100644
--- a/src/emu/ui/auditmenu.cpp
+++ b/src/emu/ui/auditmenu.cpp
@@ -177,24 +177,25 @@ void ui_menu_audit::save_available_machines()
if (file.open(emulator_info::get_configname(), "_avail.ini") == FILERR_NONE)
{
// generate header
- std::string buffer = std::string("#\n").append(UI_VERSION_TAG).append(bare_build_version).append("\n#\n\n");
- strcatprintf(buffer, "%d\n", (int)m_availablesorted.size());
- strcatprintf(buffer, "%d\n", (int)m_unavailablesorted.size());
+ std::ostringstream buffer;
+ buffer << "#\n" << UI_VERSION_TAG << bare_build_version << "\n#\n\n";
+ stream_format(buffer, "%d\n", m_availablesorted.size());
+ stream_format(buffer, "%d\n", m_unavailablesorted.size());
// generate available list
for (size_t x = 0; x < m_availablesorted.size(); ++x)
{
int find = driver_list::find(m_availablesorted[x]->name);
- strcatprintf(buffer, "%d\n", find);
+ stream_format(buffer, "%d\n", find);
}
// generate unavailable list
for (size_t x = 0; x < m_unavailablesorted.size(); ++x)
{
int find = driver_list::find(m_unavailablesorted[x]->name);
- strcatprintf(buffer, "%d\n", find);
+ stream_format(buffer, "%d\n", find);
}
- file.puts(buffer.c_str());
+ file.puts(buffer.str().c_str());
file.close();
}
}
diff --git a/src/emu/ui/custmenu.cpp b/src/emu/ui/custmenu.cpp
index e52c9ced27d..73505f10cc6 100644
--- a/src/emu/ui/custmenu.cpp
+++ b/src/emu/ui/custmenu.cpp
@@ -242,19 +242,19 @@ void ui_menu_custom_filter::save_custom_filters()
if (file.open("custom_", emulator_info::get_configname(), "_filter.ini") == FILERR_NONE)
{
// generate custom filters info
- std::string cinfo;
- strprintf(cinfo, "Total filters = %d\n", (custfltr::numother + 1));
- cinfo.append("Main filter = ").append(main_filters::text[custfltr::main]).append("\n");
+ std::ostringstream cinfo;
+ stream_format(cinfo, "Total filters = %d\n", (custfltr::numother + 1));
+ stream_format(cinfo, "Main filter = %s\n", main_filters::text[custfltr::main]);
for (int x = 1; x <= custfltr::numother; x++)
{
- cinfo.append("Other filter = ").append(main_filters::text[custfltr::other[x]]).append("\n");
+ stream_format(cinfo, "Other filter = %s\n", main_filters::text[custfltr::other[x]]);
if (custfltr::other[x] == FILTER_MANUFACTURER)
- cinfo.append(" Manufacturer filter = ").append(c_mnfct::ui[custfltr::mnfct[x]]).append("\n");
+ stream_format(cinfo, " Manufacturer filter = %s\n", c_mnfct::ui[custfltr::mnfct[x]]);
else if (custfltr::other[x] == FILTER_YEAR)
- cinfo.append(" Year filter = ").append(c_year::ui[custfltr::year[x]]).append("\n");
+ stream_format(cinfo, " Year filter = %s\n", c_year::ui[custfltr::year[x]]);
}
- file.puts(cinfo.c_str());
+ file.puts(cinfo.str().c_str());
file.close();
}
}
@@ -555,25 +555,25 @@ void ui_menu_swcustom_filter::save_sw_custom_filters()
if (file.open("custom_", m_driver->name, "_filter.ini") == FILERR_NONE)
{
// generate custom filters info
- std::string cinfo;
- strprintf(cinfo, "Total filters = %d\n", (sw_custfltr::numother + 1));
- cinfo.append("Main filter = ").append(sw_filters::text[sw_custfltr::main]).append("\n");
+ std::ostringstream cinfo;
+ stream_format(cinfo, "Total filters = %d\n", (sw_custfltr::numother + 1));
+ stream_format(cinfo, "Main filter = %s\n", sw_filters::text[sw_custfltr::main]);
for (int x = 1; x <= sw_custfltr::numother; x++)
{
- cinfo.append("Other filter = ").append(sw_filters::text[sw_custfltr::other[x]]).append("\n");
+ stream_format(cinfo, "Other filter = %s\n", sw_filters::text[sw_custfltr::other[x]]);
if (sw_custfltr::other[x] == UI_SW_PUBLISHERS)
- cinfo.append(" Manufacturer filter = ").append(m_filter.publisher.ui[sw_custfltr::mnfct[x]]).append("\n");
+ stream_format(cinfo, " Manufacturer filter = %s\n", m_filter.publisher.ui[sw_custfltr::mnfct[x]]);
else if (sw_custfltr::other[x] == UI_SW_LIST)
- cinfo.append(" Software List filter = ").append(m_filter.swlist.name[sw_custfltr::list[x]]).append("\n");
+ stream_format(cinfo, " Software List filter = %s\n", m_filter.swlist.name[sw_custfltr::list[x]]);
else if (sw_custfltr::other[x] == UI_SW_YEARS)
- cinfo.append(" Year filter = ").append(m_filter.year.ui[sw_custfltr::year[x]]).append("\n");
+ stream_format(cinfo, " Year filter = %s\n", m_filter.year.ui[sw_custfltr::year[x]]);
else if (sw_custfltr::other[x] == UI_SW_TYPE)
- cinfo.append(" Type filter = ").append(m_filter.type.ui[sw_custfltr::type[x]]).append("\n");
+ stream_format(cinfo, " Type filter = %s\n", m_filter.type.ui[sw_custfltr::type[x]]);
else if (sw_custfltr::other[x] == UI_SW_REGION)
- cinfo.append(" Region filter = ").append(m_filter.region.ui[sw_custfltr::region[x]]).append("\n");
+ stream_format(cinfo, " Region filter = %s\n", m_filter.region.ui[sw_custfltr::region[x]]);
}
- file.puts(cinfo.c_str());
+ file.puts(cinfo.str().c_str());
file.close();
}
}
diff --git a/src/emu/ui/custui.cpp b/src/emu/ui/custui.cpp
index 2392db122fc..bef78ae5fc6 100644
--- a/src/emu/ui/custui.cpp
+++ b/src/emu/ui/custui.cpp
@@ -363,7 +363,6 @@ void ui_menu_font_ui::populate()
{
// set filter arrow
UINT32 arrow_flags;
- std::string tmptxt;
#ifdef UI_WINDOWS
// add fonts option
@@ -379,16 +378,13 @@ void ui_menu_font_ui::populate()
#endif
arrow_flags = get_arrow_flags(m_font_min, m_font_max, m_font_size);
- strprintf(tmptxt, "%2d", m_font_size);
- item_append(_("Lines"), tmptxt.c_str(), arrow_flags, (void *)(FPTR)FONT_SIZE);
+ item_append(_("Lines"), string_format("%2d", m_font_size).c_str(), arrow_flags, (void *)(FPTR)FONT_SIZE);
item_append(MENU_SEPARATOR_ITEM, nullptr, 0, nullptr);
// add item
- tmptxt.clear();
- strprintf(tmptxt, "%3.2f", m_info_size);
arrow_flags = get_arrow_flags(m_info_min, m_info_max, m_info_size);
- item_append(_("Infos text size"), tmptxt.c_str(), arrow_flags, (void *)(FPTR)INFOS_SIZE);
+ item_append(_("Infos text size"), string_format("%3.2f", m_info_size).c_str(), arrow_flags, (void *)(FPTR)INFOS_SIZE);
item_append(MENU_SEPARATOR_ITEM, nullptr, 0, nullptr);
@@ -493,7 +489,7 @@ ui_menu_colors_ui::~ui_menu_colors_ui()
std::string error_string, dec_color;
for (int index = 1; index < MUI_RESTORE; index++)
{
- strprintf(dec_color, "%x", (UINT32)m_color_table[index].color);
+ dec_color = string_format("%x", (UINT32)m_color_table[index].color);
machine().ui().options().set_value(m_color_table[index].option, dec_color.c_str(), OPTION_PRIORITY_CMDLINE, error_string);
}
}
@@ -856,14 +852,12 @@ void ui_menu_rgb_ui::populate()
{
// set filter arrow
UINT32 arrow_flags = MENU_FLAG_LEFT_ARROW | MENU_FLAG_RIGHT_ARROW;
- std::string text;
std::string s_text = std::string(m_search).append("_");
if (m_lock_ref != RGB_ALPHA)
{
arrow_flags = get_arrow_flags(0, 255, m_color->a());
- strprintf(text, "%3d", m_color->a());
- item_append("Alpha", text.c_str(), arrow_flags, (void *)(FPTR)RGB_ALPHA);
+ item_append("Alpha", string_format("%3d", m_color->a()).c_str(), arrow_flags, (void *)(FPTR)RGB_ALPHA);
}
else
item_append("Alpha", s_text.c_str(), 0, (void *)(FPTR)RGB_ALPHA);
@@ -871,8 +865,7 @@ void ui_menu_rgb_ui::populate()
if (m_lock_ref != RGB_RED)
{
arrow_flags = get_arrow_flags(0, 255, m_color->r());
- strprintf(text, "%3d", m_color->r());
- item_append("Red", text.c_str(), arrow_flags, (void *)(FPTR)RGB_RED);
+ item_append("Red", string_format("%3d", m_color->r()).c_str(), arrow_flags, (void *)(FPTR)RGB_RED);
}
else
item_append("Red", s_text.c_str(), 0, (void *)(FPTR)RGB_RED);
@@ -880,8 +873,7 @@ void ui_menu_rgb_ui::populate()
if (m_lock_ref != RGB_GREEN)
{
arrow_flags = get_arrow_flags(0, 255, m_color->g());
- strprintf(text, "%3d", m_color->g());
- item_append("Green", text.c_str(), arrow_flags, (void *)(FPTR)RGB_GREEN);
+ item_append("Green", string_format("%3d", m_color->g()).c_str(), arrow_flags, (void *)(FPTR)RGB_GREEN);
}
else
item_append("Green", s_text.c_str(), 0, (void *)(FPTR)RGB_GREEN);
@@ -889,8 +881,7 @@ void ui_menu_rgb_ui::populate()
if (m_lock_ref != RGB_BLUE)
{
arrow_flags = get_arrow_flags(0, 255, m_color->b());
- strprintf(text, "%3d", m_color->b());
- item_append("Blue", text.c_str(), arrow_flags, (void *)(FPTR)RGB_BLUE);
+ item_append("Blue", string_format("%3d", m_color->b()).c_str(), arrow_flags, (void *)(FPTR)RGB_BLUE);
}
else
item_append("Blue", s_text.c_str(), 0, (void *)(FPTR)RGB_BLUE);
diff --git a/src/emu/ui/devctrl.h b/src/emu/ui/devctrl.h
index f7054e6279f..44cdb6d8ede 100644
--- a/src/emu/ui/devctrl.h
+++ b/src/emu/ui/devctrl.h
@@ -126,11 +126,7 @@ std::string ui_menu_device_control<_DeviceType>::current_display_name()
std::string display_name;
display_name.assign(current_device()->name());
if (count() > 1)
- {
- std::string temp;
- strprintf(temp, " %d", current_index() + 1);
- display_name.append(temp);
- }
+ display_name.append(string_format("%d", current_index() + 1));
return display_name;
}
diff --git a/src/emu/ui/devopt.cpp b/src/emu/ui/devopt.cpp
index 3d217e92025..e846f78e997 100644
--- a/src/emu/ui/devopt.cpp
+++ b/src/emu/ui/devopt.cpp
@@ -39,25 +39,25 @@ ui_menu_device_config::ui_menu_device_config(running_machine &machine, render_co
void ui_menu_device_config::populate()
{
- std::string str;
+ std::ostringstream str;
device_t *dev;
- strprintf(str,"[This option is%s currently mounted in the running system]\n\n", m_mounted ? "" : " NOT");
- strcatprintf(str,"Option: %s\n", m_option->name());
+ stream_format(str, "[This option is%s currently mounted in the running system]\n\n", m_mounted ? "" : " NOT");
+ stream_format(str, "Option: %s\n", m_option->name());
dev = const_cast<machine_config &>(machine().config()).device_add(&machine().config().root_device(), m_option->name(), m_option->devtype(), 0);
- strcatprintf(str,"Device: %s\n", dev->name());
+ stream_format(str, "Device: %s\n", dev->name());
if (!m_mounted)
- str.append("\nIf you select this option, the following items will be enabled:\n");
+ str << "\nIf you select this option, the following items will be enabled:\n";
else
- str.append("\nThe selected option enables the following items:\n");
+ str << "\nThe selected option enables the following items:\n";
// loop over all CPUs
execute_interface_iterator execiter(*dev);
if (execiter.count() > 0)
{
- str.append("* CPU:\n");
+ str << "* CPU:\n";
std::unordered_set<std::string> exectags;
for (device_execute_interface *exec = execiter.first(); exec != nullptr; exec = execiter.next())
{
@@ -80,16 +80,16 @@ void ui_menu_device_config::populate()
// if more than one, prepend a #x in front of the CPU name
if (count > 1)
- strcatprintf(str," %d" UTF8_MULTIPLY, count);
+ stream_format(str, " %d" UTF8_MULTIPLY, count);
else
- str.append(" ");
- str.append(name);
+ str << " ";
+ str << name;
// display clock in kHz or MHz
if (clock >= 1000000)
- strcatprintf(str," %d.%06d" UTF8_NBSP "MHz\n", clock / 1000000, clock % 1000000);
+ stream_format(str, " %d.%06d" UTF8_NBSP "MHz\n", clock / 1000000, clock % 1000000);
else
- strcatprintf(str," %d.%03d" UTF8_NBSP "kHz\n", clock / 1000, clock % 1000);
+ stream_format(str, " %d.%03d" UTF8_NBSP "kHz\n", clock / 1000, clock % 1000);
}
}
@@ -97,18 +97,18 @@ void ui_menu_device_config::populate()
screen_device_iterator scriter(*dev);
if (scriter.count() > 0)
{
- str.append("* Video:\n");
+ str << "* Video:\n";
for (screen_device *screen = scriter.first(); screen != nullptr; screen = scriter.next())
{
- strcatprintf(str," Screen '%s': ", screen->tag());
+ stream_format(str, " Screen '%s': ", screen->tag());
if (screen->screen_type() == SCREEN_TYPE_VECTOR)
- str.append("Vector\n");
+ str << "Vector\n";
else
{
const rectangle &visarea = screen->visible_area();
- strcatprintf(str,"%d " UTF8_MULTIPLY " %d (%s) %f" UTF8_NBSP "Hz\n",
+ stream_format(str, "%d " UTF8_MULTIPLY " %d (%s) %f" UTF8_NBSP "Hz\n",
visarea.width(), visarea.height(),
(machine().system().flags & ORIENTATION_SWAP_XY) ? "V" : "H",
ATTOSECONDS_TO_HZ(screen->frame_period().attoseconds()));
@@ -120,7 +120,7 @@ void ui_menu_device_config::populate()
sound_interface_iterator snditer(*dev);
if (snditer.count() > 0)
{
- str.append("* Sound:\n");
+ str << "* Sound:\n";
std::unordered_set<std::string> soundtags;
for (device_sound_interface *sound = snditer.first(); sound != nullptr; sound = snditer.next())
{
@@ -138,19 +138,19 @@ void ui_menu_device_config::populate()
}
// if more than one, prepend a #x in front of the CPU name
if (count > 1)
- strcatprintf(str," %d" UTF8_MULTIPLY, count);
+ stream_format(str," %d" UTF8_MULTIPLY, count);
else
- str.append(" ");
- str.append(sound->device().name());
+ str << " ";
+ str << sound->device().name();
// display clock in kHz or MHz
int clock = sound->device().clock();
if (clock >= 1000000)
- strcatprintf(str," %d.%06d" UTF8_NBSP "MHz\n", clock / 1000000, clock % 1000000);
+ stream_format(str," %d.%06d" UTF8_NBSP "MHz\n", clock / 1000000, clock % 1000000);
else if (clock != 0)
- strcatprintf(str," %d.%03d" UTF8_NBSP "kHz\n", clock / 1000, clock % 1000);
+ stream_format(str," %d.%03d" UTF8_NBSP "kHz\n", clock / 1000, clock % 1000);
else
- str.append("\n");
+ str << '\n';
}
}
@@ -176,12 +176,13 @@ void ui_menu_device_config::populate()
}
if (bios)
- strcatprintf(str,"* BIOS settings:\n %d options [default: %s]\n", bios, bios_str.c_str());
+ stream_format(str, "* BIOS settings:\n %d options [default: %s]\n", bios, bios_str.c_str());
}
int input = 0, input_mj = 0, input_hana = 0, input_gamble = 0, input_analog = 0, input_adjust = 0;
int input_keypad = 0, input_keyboard = 0, dips = 0, confs = 0;
- std::string errors, dips_opt, confs_opt;
+ std::string errors;
+ std::ostringstream dips_opt, confs_opt;
ioport_list portlist;
device_iterator iptiter(*dev);
for (device_t *iptdev = iptiter.first(); iptdev != nullptr; iptdev = iptiter.next())
@@ -210,12 +211,12 @@ void ui_menu_device_config::populate()
else if (field->type() == IPT_DIPSWITCH)
{
dips++;
- dips_opt.append(" ").append(field->name());
+ dips_opt << " " << field->name();
for (ioport_setting *setting = field->first_setting(); setting != nullptr; setting = setting->next())
{
if (setting->value() == field->defvalue())
{
- strcatprintf(dips_opt, " [default: %s]\n", setting->name());
+ stream_format(dips_opt, " [default: %s]\n", setting->name());
break;
}
}
@@ -223,12 +224,12 @@ void ui_menu_device_config::populate()
else if (field->type() == IPT_CONFIG)
{
confs++;
- confs_opt.append(" ").append(field->name());
+ confs_opt << " " << field->name();
for (ioport_setting *setting = field->first_setting(); setting != nullptr; setting = setting->next())
{
if (setting->value() == field->defvalue())
{
- strcatprintf(confs_opt," [default: %s]\n", setting->name());
+ stream_format(confs_opt, " [default: %s]\n", setting->name());
break;
}
}
@@ -236,50 +237,50 @@ void ui_menu_device_config::populate()
}
if (dips)
- str.append("* Dispwitch settings:\n").append(dips_opt);
+ str << "* Dispwitch settings:\n" << dips_opt.str();
if (confs)
- str.append("* Configuration settings:\n").append(confs_opt);
+ str << "* Configuration settings:\n" << confs_opt.str();
if (input + input_mj + input_hana + input_gamble + input_analog + input_adjust + input_keypad + input_keyboard)
- str.append("* Input device(s):\n");
+ str << "* Input device(s):\n";
if (input)
- strcatprintf(str," User inputs [%d inputs]\n", input);
+ stream_format(str, " User inputs [%d inputs]\n", input);
if (input_mj)
- strcatprintf(str," Mahjong inputs [%d inputs]\n", input_mj);
+ stream_format(str, " Mahjong inputs [%d inputs]\n", input_mj);
if (input_hana)
- strcatprintf(str," Hanafuda inputs [%d inputs]\n", input_hana);
+ stream_format(str, " Hanafuda inputs [%d inputs]\n", input_hana);
if (input_gamble)
- strcatprintf(str," Gambling inputs [%d inputs]\n", input_gamble);
+ stream_format(str, " Gambling inputs [%d inputs]\n", input_gamble);
if (input_analog)
- strcatprintf(str," Analog inputs [%d inputs]\n", input_analog);
+ stream_format(str, " Analog inputs [%d inputs]\n", input_analog);
if (input_adjust)
- strcatprintf(str," Adjuster inputs [%d inputs]\n", input_adjust);
+ stream_format(str, " Adjuster inputs [%d inputs]\n", input_adjust);
if (input_keypad)
- strcatprintf(str," Keypad inputs [%d inputs]\n", input_keypad);
+ stream_format(str, " Keypad inputs [%d inputs]\n", input_keypad);
if (input_keyboard)
- strcatprintf(str," Keyboard inputs [%d inputs]\n", input_keyboard);
+ stream_format(str, " Keyboard inputs [%d inputs]\n", input_keyboard);
image_interface_iterator imgiter(*dev);
if (imgiter.count() > 0)
{
- str.append("* Media Options:\n");
+ str << "* Media Options:\n";
for (const device_image_interface *imagedev = imgiter.first(); imagedev != nullptr; imagedev = imgiter.next())
- strcatprintf(str," %s [tag: %s]\n", imagedev->image_type_name(), imagedev->device().tag());
+ stream_format(str, " %s [tag: %s]\n", imagedev->image_type_name(), imagedev->device().tag());
}
slot_interface_iterator slotiter(*dev);
if (slotiter.count() > 0)
{
- str.append("* Slot Options:\n");
+ str << "* Slot Options:\n";
for (const device_slot_interface *slot = slotiter.first(); slot != nullptr; slot = slotiter.next())
- strcatprintf(str," %s [default: %s]\n", slot->device().tag(), slot->default_option() ? slot->default_option() : "----");
+ stream_format(str, " %s [default: %s]\n", slot->device().tag(), slot->default_option() ? slot->default_option() : "----");
}
if ((execiter.count() + scriter.count() + snditer.count() + imgiter.count() + slotiter.count() + bios + dips + confs
+ input + input_mj + input_hana + input_gamble + input_analog + input_adjust + input_keypad + input_keyboard) == 0)
- str.append("[None]\n");
+ str << "[None]\n";
const_cast<machine_config &>(machine().config()).device_remove(&machine().config().root_device(), m_option->name());
- item_append(str.c_str(), nullptr, MENU_FLAG_MULTILINE, nullptr);
+ item_append(str.str().c_str(), nullptr, MENU_FLAG_MULTILINE, nullptr);
}
void ui_menu_device_config::handle()
diff --git a/src/emu/ui/dsplmenu.cpp b/src/emu/ui/dsplmenu.cpp
index c93bdd960ca..b9f9b3f9650 100644
--- a/src/emu/ui/dsplmenu.cpp
+++ b/src/emu/ui/dsplmenu.cpp
@@ -185,9 +185,8 @@ void ui_menu_display_options::populate()
m_options[opt].status ? MENU_FLAG_RIGHT_ARROW : MENU_FLAG_LEFT_ARROW, (void *)(FPTR)opt);
else
{
- strprintf(v_text, "%d", m_options[opt].status);
arrow_flags = get_arrow_flags(1, 3, m_options[opt].status);
- item_append(m_options[opt].description, v_text.c_str(), arrow_flags, (void *)(FPTR)opt);
+ item_append(m_options[opt].description, string_format("%d", m_options[opt].status).c_str(), arrow_flags, (void *)(FPTR)opt);
}
item_append(MENU_SEPARATOR_ITEM, nullptr, 0, nullptr);
diff --git a/src/emu/ui/filemngr.cpp b/src/emu/ui/filemngr.cpp
index cccc92888c4..d46199793ce 100644
--- a/src/emu/ui/filemngr.cpp
+++ b/src/emu/ui/filemngr.cpp
@@ -68,7 +68,7 @@ void ui_menu_file_manager::custom_render(void *selectedref, float top, float bot
void ui_menu_file_manager::fill_image_line(device_image_interface *img, std::string &instance, std::string &filename)
{
// get the image type/id
- strprintf(instance,"%s (%s)", img->instance_name(), img->brief_instance_name());
+ instance = string_format("%s (%s)", img->instance_name(), img->brief_instance_name());
// get the base name
if (img->basename() != nullptr)
@@ -103,7 +103,7 @@ void ui_menu_file_manager::fill_image_line(device_image_interface *img, std::str
void ui_menu_file_manager::populate()
{
- std::string buffer, tmp_inst, tmp_name;
+ std::string tmp_inst, tmp_name;
bool first_entry = true;
if (!m_warnings.empty())
@@ -140,8 +140,7 @@ void ui_menu_file_manager::populate()
first_entry = false;
else
item_append(MENU_SEPARATOR_ITEM, nullptr, 0, nullptr);
- strprintf(buffer, "[root%s]", dev->tag());
- item_append(buffer.c_str(), nullptr, 0, nullptr);
+ item_append(string_format("[root%s]", dev->tag()).c_str(), nullptr, 0, nullptr);
tag_appended = true;
}
// finally, append the image interface to the menu
diff --git a/src/emu/ui/info.cpp b/src/emu/ui/info.cpp
index 0b198769b15..2122c57d5e9 100644
--- a/src/emu/ui/info.cpp
+++ b/src/emu/ui/info.cpp
@@ -85,14 +85,11 @@ void ui_menu_image_info::image_info(device_image_interface *image)
// if image has been loaded through softlist, let's add some more info
if (image->software_entry())
{
- std::string str;
-
// display long filename
item_append(image->longname(), "", MENU_FLAG_DISABLE, nullptr);
// display manufacturer and year
- strcatprintf(str, "%s, %s", image->manufacturer(), image->year());
- item_append(str.c_str(), "", MENU_FLAG_DISABLE, nullptr);
+ item_append(string_format("%s, %s", image->manufacturer(), image->year()).c_str(), "", MENU_FLAG_DISABLE, nullptr);
// display supported information, if available
switch (image->supported())
diff --git a/src/emu/ui/inifile.cpp b/src/emu/ui/inifile.cpp
index 0c7d7a1a01b..e993213d4d9 100644
--- a/src/emu/ui/inifile.cpp
+++ b/src/emu/ui/inifile.cpp
@@ -428,27 +428,28 @@ void favorite_manager::save_favorite_games()
}
// generate the favorite INI
- std::string text("[ROOT_FOLDER]\n[Favorite]\n\n");
+ std::ostringstream text;
+ text << "[ROOT_FOLDER]\n[Favorite]\n\n";
for (auto & elem : m_list)
{
- text += elem.shortname + "\n";
- text += elem.longname + "\n";
- text += elem.parentname + "\n";
- text += elem.year + "\n";
- text += elem.publisher + "\n";
- strcatprintf(text, "%d\n", elem.supported);
- text += elem.part + "\n";
- strcatprintf(text, "%s\n", elem.driver->name);
- text += elem.listname + "\n";
- text += elem.interface + "\n";
- text += elem.instance + "\n";
- strcatprintf(text, "%d\n", elem.startempty);
- text += elem.parentlongname + "\n";
- text += elem.usage + "\n";
- text += elem.devicetype + "\n";
- strcatprintf(text, "%d\n", elem.available);
+ text << elem.shortname << '\n';
+ text << elem.longname << '\n';
+ text << elem.parentname << '\n';
+ text << elem.year << '\n';
+ text << elem.publisher << '\n';
+ stream_format(text, "%d\n", elem.supported);
+ text << elem.part << '\n';
+ stream_format(text, "%s\n", elem.driver->name);
+ text << elem.listname << '\n';
+ text << elem.interface << '\n';
+ text << elem.instance << '\n';
+ stream_format(text, "%d\n", elem.startempty);
+ text << elem.parentlongname << '\n';
+ text << elem.usage << '\n';
+ text << elem.devicetype << '\n';
+ stream_format(text, "%d\n", elem.available);
}
- file.puts(text.c_str());
+ file.puts(text.str().c_str());
file.close();
}
}
diff --git a/src/emu/ui/inputmap.cpp b/src/emu/ui/inputmap.cpp
index f3ffe9b0e59..66afd666cd0 100644
--- a/src/emu/ui/inputmap.cpp
+++ b/src/emu/ui/inputmap.cpp
@@ -379,7 +379,6 @@ void ui_menu_input::populate_and_sort(input_item_data *itemlist)
const char *nameformat[INPUT_TYPE_TOTAL] = { nullptr };
input_item_data **itemarray, *item;
int numitems = 0, curitem;
- std::string text;
std::string subtext;
std::string prev_owner;
bool first_entry = true;
@@ -417,12 +416,11 @@ void ui_menu_input::populate_and_sort(input_item_data *itemlist)
first_entry = false;
else
item_append(MENU_SEPARATOR_ITEM, nullptr, 0, nullptr);
- strprintf(text, "[root%s]", item->owner_name);
- item_append(text.c_str(), nullptr, 0, nullptr);
+ item_append(string_format("[root%s]", item->owner_name).c_str(), nullptr, 0, nullptr);
prev_owner.assign(item->owner_name);
}
- strprintf(text, nameformat[item->type], item->name);
+ std::string text = string_format(nameformat[item->type], item->name);
/* if we're polling this item, use some spaces with left/right arrows */
if (pollingref == item->ref)
@@ -556,7 +554,6 @@ void ui_menu_settings::populate()
if (field->type() == type && field->enabled())
{
UINT32 flags = 0;
- std::string name;
/* set the left/right flags appropriately */
if (field->has_previous_setting())
@@ -571,14 +568,12 @@ void ui_menu_settings::populate()
first_entry = false;
else
item_append(MENU_SEPARATOR_ITEM, nullptr, 0, nullptr);
- strprintf(name, "[root%s]", field->device().tag());
- item_append(name.c_str(), nullptr, 0, nullptr);
+ string_format("[root%s]", field->device().tag());
+ item_append(string_format("[root%s]", field->device().tag()).c_str(), nullptr, 0, nullptr);
prev_owner.assign(field->device().tag());
}
- name.assign(field->name());
-
- item_append(name.c_str(), field->setting_name(), flags, (void *)field);
+ item_append(field->name(), field->setting_name(), flags, (void *)field);
/* for DIP switches, build up the model */
if (type == IPT_DIPSWITCH && field->first_diplocation() != nullptr)
@@ -868,20 +863,16 @@ void ui_menu_analog::populate()
{
analog_item_data *data;
UINT32 flags = 0;
- std::string name;
if (strcmp(field->device().tag(), prev_owner.c_str()) != 0)
{
if (first_entry)
first_entry = false;
else
item_append(MENU_SEPARATOR_ITEM, nullptr, 0, nullptr);
- strprintf(name,"[root%s]", field->device().tag());
- item_append(name.c_str(), nullptr, 0, nullptr);
+ item_append(string_format("[root%s]", field->device().tag()).c_str(), nullptr, 0, nullptr);
prev_owner.assign(field->device().tag());
}
- name.assign(field->name());
-
/* allocate a data item for tracking what this menu item refers to */
data = (analog_item_data *)m_pool_alloc(sizeof(*data));
data->field = field;
@@ -892,8 +883,8 @@ void ui_menu_analog::populate()
{
default:
case ANALOG_ITEM_KEYSPEED:
- strprintf(text, "%s Digital Speed", name.c_str());
- strprintf(subtext, "%d", settings.delta);
+ text = string_format("%s Digital Speed", field->name());
+ subtext = string_format("%d", settings.delta);
data->min = 0;
data->max = 255;
data->cur = settings.delta;
@@ -901,8 +892,8 @@ void ui_menu_analog::populate()
break;
case ANALOG_ITEM_CENTERSPEED:
- strprintf(text, "%s Autocenter Speed", name.c_str());
- strprintf(subtext, "%d", settings.centerdelta);
+ text = string_format("%s Autocenter Speed", field->name());
+ subtext = string_format("%d", settings.centerdelta);
data->min = 0;
data->max = 255;
data->cur = settings.centerdelta;
@@ -910,7 +901,7 @@ void ui_menu_analog::populate()
break;
case ANALOG_ITEM_REVERSE:
- strprintf(text, "%s Reverse", name.c_str());
+ text = string_format("%s Reverse", field->name());
subtext.assign(settings.reverse ? "On" : "Off");
data->min = 0;
data->max = 1;
@@ -919,8 +910,8 @@ void ui_menu_analog::populate()
break;
case ANALOG_ITEM_SENSITIVITY:
- strprintf(text, "%s Sensitivity", name.c_str());
- strprintf(subtext, "%d", settings.sensitivity);
+ text = string_format("%s Sensitivity", field->name());
+ subtext = string_format("%d", settings.sensitivity);
data->min = 1;
data->max = 255;
data->cur = settings.sensitivity;
diff --git a/src/emu/ui/menu.cpp b/src/emu/ui/menu.cpp
index cdba1f0fcd8..dd463535f74 100644
--- a/src/emu/ui/menu.cpp
+++ b/src/emu/ui/menu.cpp
@@ -246,25 +246,23 @@ void ui_menu::reset(ui_menu_reset_options options)
item.clear();
visitems = 0;
selected = 0;
- std::string backtext;
- strprintf(backtext, "Return to Machine");
// add an item to return
if (parent == nullptr)
- item_append(backtext.c_str(), nullptr, 0, nullptr);
+ item_append(_("Return to Machine"), nullptr, 0, nullptr);
else if (parent->is_special_main_menu())
{
if (strcmp(machine().options().ui(), "simple") == 0)
- item_append("Exit", nullptr, 0, nullptr);
+ item_append(_("Exit"), nullptr, 0, nullptr);
else
- item_append("Exit", nullptr, MENU_FLAG_UI | MENU_FLAG_LEFT_ARROW | MENU_FLAG_RIGHT_ARROW, nullptr);
+ item_append(_("Exit"), nullptr, MENU_FLAG_UI | MENU_FLAG_LEFT_ARROW | MENU_FLAG_RIGHT_ARROW, nullptr);
}
else
{
if (strcmp(machine().options().ui(), "simple") != 0 && ui_menu::stack_has_special_main_menu())
- item_append("Return to Previous Menu", nullptr, MENU_FLAG_UI | MENU_FLAG_LEFT_ARROW | MENU_FLAG_RIGHT_ARROW, nullptr);
+ item_append(_("Return to Previous Menu"), nullptr, MENU_FLAG_UI | MENU_FLAG_LEFT_ARROW | MENU_FLAG_RIGHT_ARROW, nullptr);
else
- item_append("Return to Previous Menu", nullptr, 0, nullptr);
+ item_append(_("Return to Previous Menu"), nullptr, 0, nullptr);
}
}
diff --git a/src/emu/ui/miscmenu.cpp b/src/emu/ui/miscmenu.cpp
index fff03a97f74..0a4c428bd69 100644
--- a/src/emu/ui/miscmenu.cpp
+++ b/src/emu/ui/miscmenu.cpp
@@ -125,8 +125,7 @@ void ui_menu_bios_selection::handle()
assert(error.empty());
} else {
std::string error;
- std::string value = machine().options().main_value(dev->owner()->tag()+1);
- strcatprintf(value,",bios=%d",val-1);
+ std::string value = string_format("%s,bios=%d", machine().options().main_value(dev->owner()->tag()+1), val-1);
machine().options().set_value(dev->owner()->tag()+1, value.c_str(), OPTION_PRIORITY_CMDLINE, error);
assert(error.empty());
}
@@ -232,18 +231,18 @@ ui_menu_bookkeeping::~ui_menu_bookkeeping()
void ui_menu_bookkeeping::populate()
{
int tickets = machine().bookkeeping().get_dispensed_tickets();
- std::string tempstring;
+ std::ostringstream tempstring;
int ctrnum;
/* show total time first */
- if (prevtime.seconds() >= 60 * 60)
- strcatprintf(tempstring, "Uptime: %d:%02d:%02d\n\n", prevtime.seconds() / (60 * 60), (prevtime.seconds() / 60) % 60, prevtime.seconds() % 60);
+ if (prevtime.seconds() >= (60 * 60))
+ stream_format(tempstring, _("Uptime: %1$d:%2$02d:%3$02d\n\n"), prevtime.seconds() / (60 * 60), (prevtime.seconds() / 60) % 60, prevtime.seconds() % 60);
else
- strcatprintf(tempstring,"Uptime: %d:%02d\n\n", (prevtime.seconds() / 60) % 60, prevtime.seconds() % 60);
+ stream_format(tempstring, _("Uptime: %1$d:%2$02d\n\n"), (prevtime.seconds() / 60) % 60, prevtime.seconds() % 60);
/* show tickets at the top */
if (tickets > 0)
- strcatprintf(tempstring,"Tickets dispensed: %d\n\n", tickets);
+ stream_format(tempstring, _("Tickets dispensed: %1$d\n\n"), tickets);
/* loop over coin counters */
for (ctrnum = 0; ctrnum < COIN_COUNTERS; ctrnum++)
@@ -251,22 +250,17 @@ void ui_menu_bookkeeping::populate()
int count = machine().bookkeeping().coin_counter_get_count(ctrnum);
/* display the coin counter number */
- strcatprintf(tempstring,"Coin %c: ", ctrnum + 'A');
-
/* display how many coins */
- if (count == 0)
- tempstring.append("NA");
- else
- strcatprintf(tempstring, "%d", count);
-
/* display whether or not we are locked out */
- if (machine().bookkeeping().coin_lockout_get_state(ctrnum))
- tempstring.append(_(" (locked)"));
- tempstring.append("\n");
+ stream_format(tempstring,
+ (count == 0) ? _("Coin %1$c: NA%3$s\n") : _("Coin %1$c: %2$d%3$s\n"),
+ ctrnum + 'A',
+ count,
+ machine().bookkeeping().coin_lockout_get_state(ctrnum) ? _(" (locked)") : "");
}
/* append the single item */
- item_append(tempstring.c_str(), nullptr, MENU_FLAG_MULTILINE, nullptr);
+ item_append(tempstring.str().c_str(), nullptr, MENU_FLAG_MULTILINE, nullptr);
}
/*-------------------------------------------------
@@ -710,8 +704,7 @@ void ui_menu_export::handle()
if (infile.open(filename.c_str(), ".xml") == FILERR_NONE)
for (int seq = 0; ; ++seq)
{
- std::string seqtext;
- strprintf(seqtext, "%s_%04d", filename.c_str(), seq);
+ std::string seqtext = string_format("%s_%04d", filename, seq);
if (infile.open(seqtext.c_str(), ".xml") != FILERR_NONE)
{
filename = seqtext;
@@ -747,13 +740,11 @@ void ui_menu_export::handle()
if (m_event->iptkey == IPT_UI_SELECT)
{
std::string filename("exported");
- std::string buffer;
emu_file infile(machine().ui().options().ui_path(), OPEN_FLAG_READ);
if (infile.open(filename.c_str(), ".txt") == FILERR_NONE)
for (int seq = 0; ; ++seq)
{
- std::string seqtext;
- strprintf(seqtext, "%s_%04d", filename.c_str(), seq);
+ std::string seqtext = string_format("%s_%04d", filename, seq);
if (infile.open(seqtext.c_str(), ".txt") != FILERR_NONE)
{
filename = seqtext;
@@ -766,7 +757,8 @@ void ui_menu_export::handle()
if (file.open(filename.c_str(), ".txt") == FILERR_NONE)
{
// print the header
- buffer.assign(_("Name: Description:\n"));
+ std::ostringstream buffer;
+ buffer << _("Name: Description:\n");
driver_enumerator drvlist(machine().options());
drvlist.exclude_all();
for (auto & elem : m_list)
@@ -775,8 +767,8 @@ void ui_menu_export::handle()
// iterate through drivers and output the info
while (drvlist.next())
if ((drvlist.driver().flags & MACHINE_NO_STANDALONE) == 0)
- strcatprintf(buffer, "%-18s\"%s\"\n", drvlist.driver().name, drvlist.driver().description);
- file.puts(buffer.c_str());
+ stream_format(buffer, "%-18s\"%s\"\n", drvlist.driver().name, drvlist.driver().description);
+ file.puts(buffer.str().c_str());
file.close();
machine().popmessage(_("%s.txt saved under ui folder."), filename.c_str());
}
diff --git a/src/emu/ui/selgame.cpp b/src/emu/ui/selgame.cpp
index fd56eb9ab7b..7b48de112fc 100644
--- a/src/emu/ui/selgame.cpp
+++ b/src/emu/ui/selgame.cpp
@@ -708,27 +708,39 @@ void ui_menu_select_game::custom_render(void *selectedref, float top, float bott
ui_manager &mui = machine().ui();
float tbarspace = mui.get_line_height();
- strprintf(tempbuf[0], _("%s %s ( %d / %d machines (%d BIOS) )"), emulator_info::get_appname(), bare_build_version, visible_items, (driver_list::total() - 1), m_isabios);
- std::string filtered;
+ tempbuf[0] = string_format(_("%1$s %2$s ( %3$d / %4$d machines (%5$d BIOS) )"),
+ emulator_info::get_appname(),
+ bare_build_version,
+ visible_items,
+ (driver_list::total() - 1),
+ m_isabios);
+ std::string filtered;
if (main_filters::actual == FILTER_CATEGORY && !machine().inifile().ini_index.empty())
{
- std::string s_file(machine().inifile().actual_file());
- std::string s_category(machine().inifile().actual_category());
- filtered.assign(main_filters::text[main_filters::actual]).append(" (").append(s_file).append(" - ").append(s_category).append(") -");
+ filtered = string_format(_("%1$s (%2$s - %3$s) - "),
+ main_filters::text[main_filters::actual],
+ machine().inifile().actual_file(),
+ machine().inifile().actual_category());
}
-
else if (main_filters::actual == FILTER_MANUFACTURER)
- filtered.assign(main_filters::text[main_filters::actual]).append(" (").append(c_mnfct::ui[c_mnfct::actual]).append(") -");
-
+ {
+ filtered = string_format(_("%1$s (%2$s) - "),
+ main_filters::text[main_filters::actual],
+ c_mnfct::ui[c_mnfct::actual]);
+ }
else if (main_filters::actual == FILTER_YEAR)
- filtered.assign(main_filters::text[main_filters::actual]).append(" (").append(c_year::ui[c_year::actual]).append(") -");
+ {
+ filtered = string_format(_("%1$s (%2$s) - "),
+ main_filters::text[main_filters::actual],
+ c_year::ui[c_year::actual]);
+ }
// display the current typeahead
if (isfavorite())
tempbuf[1].clear();
else
- tempbuf[1].assign(filtered).append(_(" Search: ")).append(m_search).append("_");
+ tempbuf[1] = string_format(_("%1$s Search: %2$s_"), filtered, m_search);
// get the size of the text
for (int line = 0; line < 2; ++line)
@@ -776,39 +788,39 @@ void ui_menu_select_game::custom_render(void *selectedref, float top, float bott
isstar = machine().favorite().isgame_favorite(driver);
// first line is game name
- strprintf(tempbuf[0], "Romset: %-.100s", driver->name);
+ tempbuf[0] = string_format(_("Romset: %1$-.100s"), driver->name);
// next line is year, manufacturer
- strprintf(tempbuf[1], "%s, %-.100s", driver->year, driver->manufacturer);
+ tempbuf[1] = string_format(_("%1$s, %2$-.100s"), driver->year, driver->manufacturer);
// next line is clone/parent status
int cloneof = driver_list::non_bios_clone(*driver);
if (cloneof != -1)
- strprintf(tempbuf[2], "Driver is clone of: %-.100s", driver_list::driver(cloneof).description);
+ tempbuf[2] = string_format(_("Driver is clone of: %1$-.100s"), driver_list::driver(cloneof).description);
else
- tempbuf[2] = "Driver is parent";
+ tempbuf[2] = _("Driver is parent");
// next line is overall driver status
if (driver->flags & MACHINE_NOT_WORKING)
- tempbuf[3] = "Overall: NOT WORKING";
+ tempbuf[3] = _("Overall: NOT WORKING");
else if (driver->flags & MACHINE_UNEMULATED_PROTECTION)
- tempbuf[3] = "Overall: Unemulated Protection";
+ tempbuf[3] = _("Overall: Unemulated Protection");
else
- tempbuf[3] = "Overall: Working";
+ tempbuf[3] = _("Overall: Working");
// next line is graphics, sound status
if (driver->flags & (MACHINE_IMPERFECT_GRAPHICS | MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_COLORS))
- tempbuf[4] = "Graphics: Imperfect, ";
+ tempbuf[4] = _("Graphics: Imperfect, ");
else
- tempbuf[4] = "Graphics: OK, ";
+ tempbuf[4] = _("Graphics: OK, ");
if (driver->flags & MACHINE_NO_SOUND)
- tempbuf[4].append("Sound: Unimplemented");
+ tempbuf[4].append(_("Sound: Unimplemented"));
else if (driver->flags & MACHINE_IMPERFECT_SOUND)
- tempbuf[4].append("Sound: Imperfect");
+ tempbuf[4].append(_("Sound: Imperfect"));
else
- tempbuf[4].append("Sound: OK");
+ tempbuf[4].append(_("Sound: OK"));
color = UI_GREEN_COLOR;
@@ -825,43 +837,43 @@ void ui_menu_select_game::custom_render(void *selectedref, float top, float bott
isstar = machine().favorite().isgame_favorite(*swinfo);
// first line is system
- strprintf(tempbuf[0], "System: %-.100s", swinfo->driver->description);
+ tempbuf[0] = string_format(_("System: %1$-.100s"), swinfo->driver->description);
// next line is year, publisher
- strprintf(tempbuf[1], "%s, %-.100s", swinfo->year.c_str(), swinfo->publisher.c_str());
+ tempbuf[1] = string_format(_("%1$s, %2$-.100s"), swinfo->year.c_str(), swinfo->publisher.c_str());
// next line is parent/clone
if (!swinfo->parentname.empty())
- strprintf(tempbuf[2], "Software is clone of: %-.100s", !swinfo->parentlongname.empty() ? swinfo->parentlongname.c_str() : swinfo->parentname.c_str());
+ tempbuf[2] = string_format(_("Software is clone of: %1$-.100s"), !swinfo->parentlongname.empty() ? swinfo->parentlongname.c_str() : swinfo->parentname.c_str());
else
- tempbuf[2] = "Software is parent";
+ tempbuf[2] = _("Software is parent");
// next line is supported status
if (swinfo->supported == SOFTWARE_SUPPORTED_NO)
{
- tempbuf[3] = "Supported: No";
+ tempbuf[3] = _("Supported: No");
color = UI_RED_COLOR;
}
else if (swinfo->supported == SOFTWARE_SUPPORTED_PARTIAL)
{
- tempbuf[3] = "Supported: Partial";
+ tempbuf[3] = _("Supported: Partial");
color = UI_YELLOW_COLOR;
}
else
{
- tempbuf[3] = "Supported: Yes";
+ tempbuf[3] = _("Supported: Yes");
color = UI_GREEN_COLOR;
}
// last line is romset name
- strprintf(tempbuf[4], "romset: %-.100s", swinfo->shortname.c_str());
+ tempbuf[4] = string_format(_("romset: %1$-.100s"), swinfo->shortname.c_str());
}
else
{
std::string copyright(emulator_info::get_copyright());
size_t found = copyright.find("\n");
tempbuf[0].clear();
- tempbuf[1].assign(emulator_info::get_appname()).append(" ").append(build_version);
+ tempbuf[1] = string_format(_("%1$s %2$s"), emulator_info::get_appname(), build_version);
tempbuf[2] = copyright.substr(0, found);
tempbuf[3] = copyright.substr(found + 1);
tempbuf[4].clear();
@@ -1455,47 +1467,49 @@ void ui_menu_select_game::populate_search()
void ui_menu_select_game::general_info(const game_driver *driver, std::string &buffer)
{
- strprintf(buffer, _("Romset: %-.100s\n"), driver->name);
- buffer.append(_("Year: ")).append(driver->year).append("\n");
- strcatprintf(buffer, _("Manufacturer: %-.100s\n"), driver->manufacturer);
+ std::ostringstream str;
+
+ stream_format(str, _("Romset: %1$-.100s\n"), driver->name);
+ stream_format(str, _("Year: %1$s\n"), driver->year);
+ stream_format(str, _("Manufacturer: %1$-.100s\n"), driver->manufacturer);
int cloneof = driver_list::non_bios_clone(*driver);
if (cloneof != -1)
- strcatprintf(buffer, _("Driver is Clone of: %-.100s\n"), driver_list::driver(cloneof).description);
+ stream_format(str, _("Driver is Clone of: %1$-.100s\n"), driver_list::driver(cloneof).description);
else
- buffer.append(_("Driver is Parent\n"));
+ str << _("Driver is Parent\n");
if (driver->flags & MACHINE_NOT_WORKING)
- buffer.append(_("Overall: NOT WORKING\n"));
+ str << _("Overall: NOT WORKING\n");
else if (driver->flags & MACHINE_UNEMULATED_PROTECTION)
- buffer.append(_("Overall: Unemulated Protection\n"));
+ str << _("Overall: Unemulated Protection\n");
else
- buffer.append(_("Overall: Working\n"));
+ str << _("Overall: Working\n");
if (driver->flags & MACHINE_IMPERFECT_COLORS)
- buffer.append(_("Graphics: Imperfect Colors\n"));
+ str << _("Graphics: Imperfect Colors\n");
else if (driver->flags & MACHINE_WRONG_COLORS)
- buffer.append(_("Graphics: Wrong Colors\n"));
+ str << ("Graphics: Wrong Colors\n");
else if (driver->flags & MACHINE_IMPERFECT_GRAPHICS)
- buffer.append(_("Graphics: Imperfect\n"));
+ str << _("Graphics: Imperfect\n");
else
- buffer.append(_("Graphics: OK\n"));
+ str << _("Graphics: OK\n");
if (driver->flags & MACHINE_NO_SOUND)
- buffer.append(_("Sound: Unimplemented\n"));
+ str << _("Sound: Unimplemented\n");
else if (driver->flags & MACHINE_IMPERFECT_SOUND)
- buffer.append(_("Sound: Imperfect\n"));
+ str << _("Sound: Imperfect\n");
else
- buffer.append(_("Sound: OK\n"));
-
- strcatprintf(buffer, _("Driver is Skeleton: %s\n"), ((driver->flags & MACHINE_IS_SKELETON) ? _("Yes") : _("No")));
- strcatprintf(buffer, _("Game is Mechanical: %s\n"), ((driver->flags & MACHINE_MECHANICAL) ? _("Yes") : _("No")));
- strcatprintf(buffer, _("Requires Artwork: %s\n"), ((driver->flags & MACHINE_REQUIRES_ARTWORK) ? _("Yes") : _("No")));
- strcatprintf(buffer, _("Requires Clickable Artwork: %s\n"), ((driver->flags & MACHINE_CLICKABLE_ARTWORK) ? _("Yes") : _("No")));
- strcatprintf(buffer, _("Support Cocktail: %s\n"), ((driver->flags & MACHINE_NO_COCKTAIL) ? _("Yes") : _("No")));
- strcatprintf(buffer, _("Driver is Bios: %s\n"), ((driver->flags & MACHINE_IS_BIOS_ROOT) ? _("Yes") : _("No")));
- strcatprintf(buffer, _("Support Save: %s\n"), ((driver->flags & MACHINE_SUPPORTS_SAVE) ? _("Yes") : _("No")));
- strcatprintf(buffer, _("Screen Orentation: %s\n"), ((driver->flags & ORIENTATION_SWAP_XY) ? _("Vertical") : _("Horizontal")));
+ str << _("Sound: OK\n");
+
+ stream_format(str, _("Driver is Skeleton: %1$s\n"), ((driver->flags & MACHINE_IS_SKELETON) ? _("Yes") : _("No")));
+ stream_format(str, _("Game is Mechanical: %1$s\n"), ((driver->flags & MACHINE_MECHANICAL) ? _("Yes") : _("No")));
+ stream_format(str, _("Requires Artwork: %1$s\n"), ((driver->flags & MACHINE_REQUIRES_ARTWORK) ? _("Yes") : _("No")));
+ stream_format(str, _("Requires Clickable Artwork: %1$s\n"), ((driver->flags & MACHINE_CLICKABLE_ARTWORK) ? _("Yes") : _("No")));
+ stream_format(str, _("Support Cocktail: %1$s\n"), ((driver->flags & MACHINE_NO_COCKTAIL) ? _("Yes") : _("No")));
+ stream_format(str, _("Driver is Bios: %1$s\n"), ((driver->flags & MACHINE_IS_BIOS_ROOT) ? _("Yes") : _("No")));
+ stream_format(str, _("Support Save: %1$s\n"), ((driver->flags & MACHINE_SUPPORTS_SAVE) ? _("Yes") : _("No")));
+ stream_format(str, _("Screen Orentation: %1$s\n"), ((driver->flags & ORIENTATION_SWAP_XY) ? _("Vertical") : _("Horizontal")));
bool found = false;
for (const rom_entry *rom = driver->rom; !ROMENTRY_ISEND(rom); ++rom)
if (ROMENTRY_ISREGION(rom) && ROMREGION_ISDISKDATA(rom))
@@ -1503,7 +1517,7 @@ void ui_menu_select_game::general_info(const game_driver *driver, std::string &b
found = true;
break;
}
- strcatprintf(buffer, _("Requires CHD: %s\n"), (found ? "Yes" : "No"));
+ stream_format(str, _("Requires CHD: %1$s\n"), found ? _("Yes") : _("No"));
// audit the game first to see if we're going to work
if (machine().ui().options().info_audit())
@@ -1516,19 +1530,21 @@ void ui_menu_select_game::general_info(const game_driver *driver, std::string &b
// if everything looks good, schedule the new driver
if (summary == media_auditor::CORRECT || summary == media_auditor::BEST_AVAILABLE || summary == media_auditor::NONE_NEEDED)
- buffer.append(_("Roms Audit Pass: OK\n"));
+ str << _("Roms Audit Pass: OK\n");
else
- buffer.append(_("Roms Audit Pass: BAD\n"));
+ str << _("Roms Audit Pass: BAD\n");
if (summary_samples == media_auditor::NONE_NEEDED)
- buffer.append(_("Samples Audit Pass: None Needed\n"));
+ str << _("Samples Audit Pass: None Needed\n");
else if (summary_samples == media_auditor::CORRECT || summary_samples == media_auditor::BEST_AVAILABLE)
- buffer.append(_("Samples Audit Pass: OK\n"));
+ str << _("Samples Audit Pass: OK\n");
else
- buffer.append(_("Samples Audit Pass: BAD\n"));
+ str << _("Samples Audit Pass: BAD\n");
}
else
- buffer.append(_("Roms Audit Pass: Disabled\nSamples Audit Pass: Disabled\n"));
+ str << _("Roms Audit Pass: Disabled\nSamples Audit Pass: Disabled\n");
+
+ buffer = str.str();
}
void ui_menu_select_game::inkey_export()
@@ -1779,7 +1795,7 @@ float ui_menu_select_game::draw_left_panel(float x1, float y1, float x2, float y
int cfilter = custfltr::other[count];
if (cfilter == filter)
{
- strprintf(str, "@custom%d %s", count + 1, text[filter]);
+ str = string_format("@custom%d %s", count + 1, text[filter]);
x1t -= text_sign;
break;
}
diff --git a/src/emu/ui/selsoft.cpp b/src/emu/ui/selsoft.cpp
index 772c9575693..1fdb75d021f 100644
--- a/src/emu/ui/selsoft.cpp
+++ b/src/emu/ui/selsoft.cpp
@@ -681,22 +681,21 @@ void ui_menu_select_software::custom_render(void *selectedref, float top, float
// determine the text for the header
int vis_item = (m_search[0] != 0) ? visible_items : (m_has_empty_start ? visible_items - 1 : visible_items);
- strprintf(tempbuf[0], "MAME %s ( %d / %d softwares )", bare_build_version, vis_item, (int)m_swinfo.size() - 1);
- tempbuf[1].assign("Driver: \"").append(m_driver->description).append("\" software list ");
+ tempbuf[0] = string_format(_("%1$s %2$s ( %3$d / %4$d softwares )"), emulator_info::get_appname(), bare_build_version, vis_item, m_swinfo.size() - 1);
+ tempbuf[1] = string_format(_("Driver: \"%1$s\" software list "), m_driver->description);
if (sw_filters::actual == UI_SW_REGION && m_filter.region.ui.size() != 0)
- strprintf(filtered, _("Region: %s -"), m_filter.region.ui[m_filter.region.actual].c_str());
+ filtered = string_format(_("Region: %1$s -"), m_filter.region.ui[m_filter.region.actual]);
else if (sw_filters::actual == UI_SW_PUBLISHERS)
- strprintf(filtered, _("Publisher: %s -"), m_filter.publisher.ui[m_filter.publisher.actual].c_str());
+ filtered = string_format(_("Publisher: %1$s -"), m_filter.publisher.ui[m_filter.publisher.actual]);
else if (sw_filters::actual == UI_SW_YEARS)
- strprintf(filtered, _("Year: %s -"), m_filter.year.ui[m_filter.year.actual].c_str());
+ filtered = string_format(_("Year: %1$s -"), m_filter.year.ui[m_filter.year.actual]);
else if (sw_filters::actual == UI_SW_LIST)
- strprintf(filtered, _("Software List: %s -"), m_filter.swlist.description[m_filter.swlist.actual].c_str());
+ filtered = string_format(_("Software List: %1$s -"), m_filter.swlist.description[m_filter.swlist.actual]);
else if (sw_filters::actual == UI_SW_TYPE)
- strprintf(filtered, _("Device type: %s -"), m_filter.type.ui[m_filter.type.actual].c_str());
+ filtered = string_format(_("Device type: %1$s -"), m_filter.type.ui[m_filter.type.actual]);
- strprintf(tempbuf[2], _("%s Search: %s_"), filtered.c_str(), m_search);
-// tempbuf[2].assign(filtered).append(_("Search: ")).append(m_search).append("_");
+ tempbuf[2] = string_format(_("%s Search: %s_"), filtered, m_search);
// get the size of the text
float maxwidth = origx2 - origx1;
@@ -740,39 +739,39 @@ void ui_menu_select_software::custom_render(void *selectedref, float top, float
isstar = machine().favorite().isgame_favorite(driver);
// first line is game description
- strprintf(tempbuf[0], "%-.100s", driver->description);
+ tempbuf[0] = string_format(_("%1$-.100s"), driver->description);
// next line is year, manufacturer
- strprintf(tempbuf[1], "%s, %-.100s", driver->year, driver->manufacturer);
+ tempbuf[1] = string_format(_("%1$s, %2$-.100s"), driver->year, driver->manufacturer);
// next line is clone/parent status
int cloneof = driver_list::non_bios_clone(*driver);
if (cloneof != -1)
- strprintf(tempbuf[2], "Driver is clone of: %-.100s", driver_list::driver(cloneof).description);
+ tempbuf[2] = string_format(_("Driver is clone of: %1$-.100s"), driver_list::driver(cloneof).description);
else
- tempbuf[2] = "Driver is parent";
+ tempbuf[2] = _("Driver is parent");
// next line is overall driver status
if (driver->flags & MACHINE_NOT_WORKING)
- tempbuf[3] = "Overall: NOT WORKING";
+ tempbuf[3] = _("Overall: NOT WORKING");
else if (driver->flags & MACHINE_UNEMULATED_PROTECTION)
- tempbuf[3] = "Overall: Unemulated Protection";
+ tempbuf[3] = _("Overall: Unemulated Protection");
else
- tempbuf[3] = "Overall: Working";
+ tempbuf[3] = _("Overall: Working");
// next line is graphics, sound status
if (driver->flags & (MACHINE_IMPERFECT_GRAPHICS | MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_COLORS))
- tempbuf[4] = "Graphics: Imperfect, ";
+ tempbuf[4] = _("Graphics: Imperfect, ");
else
- tempbuf[4] = "Graphics: OK, ";
+ tempbuf[4] = _("Graphics: OK, ");
if (driver->flags & MACHINE_NO_SOUND)
- tempbuf[4].append("Sound: Unimplemented");
+ tempbuf[4].append(_("Sound: Unimplemented"));
else if (driver->flags & MACHINE_IMPERFECT_SOUND)
- tempbuf[4].append("Sound: Imperfect");
+ tempbuf[4].append(_("Sound: Imperfect"));
else
- tempbuf[4].append("Sound: OK");
+ tempbuf[4].append(_("Sound: OK"));
color = UI_GREEN_COLOR;
@@ -790,36 +789,36 @@ void ui_menu_select_software::custom_render(void *selectedref, float top, float
isstar = machine().favorite().isgame_favorite(*swinfo);
// first line is long name
- strprintf(tempbuf[0], "%-.100s", swinfo->longname.c_str());
+ tempbuf[0] = string_format(_("%1$-.100s"), swinfo->longname.c_str());
// next line is year, publisher
- strprintf(tempbuf[1], "%s, %-.100s", swinfo->year.c_str(), swinfo->publisher.c_str());
+ tempbuf[1] = string_format(_("%1$s, %2$-.100s"), swinfo->year.c_str(), swinfo->publisher.c_str());
// next line is parent/clone
if (!swinfo->parentname.empty())
- strprintf(tempbuf[2], "Software is clone of: %-.100s", !swinfo->parentlongname.empty() ? swinfo->parentlongname.c_str() : swinfo->parentname.c_str());
+ tempbuf[2] = string_format(_("Software is clone of: %1$-.100s"), !swinfo->parentlongname.empty() ? swinfo->parentlongname.c_str() : swinfo->parentname.c_str());
else
- tempbuf[2] = "Software is parent";
+ tempbuf[2] = _("Software is parent");
// next line is supported status
if (swinfo->supported == SOFTWARE_SUPPORTED_NO)
{
- tempbuf[3] = "Supported: No";
+ tempbuf[3] = _("Supported: No");
color = UI_RED_COLOR;
}
else if (swinfo->supported == SOFTWARE_SUPPORTED_PARTIAL)
{
- tempbuf[3] = "Supported: Partial";
+ tempbuf[3] = _("Supported: Partial");
color = UI_YELLOW_COLOR;
}
else
{
- tempbuf[3] = "Supported: Yes";
+ tempbuf[3] = _("Supported: Yes");
color = UI_GREEN_COLOR;
}
// last line is romset name
- strprintf(tempbuf[4], "romset: %-.100s", swinfo->shortname.c_str());
+ tempbuf[4] = string_format(_("romset: %1$-.100s"), swinfo->shortname.c_str());
}
else
@@ -1467,7 +1466,7 @@ float ui_menu_select_software::draw_left_panel(float x1, float y1, float x2, flo
int cfilter = sw_custfltr::other[count];
if (cfilter == filter)
{
- strprintf(str, "@custom%d %s", count + 1, text[filter]);
+ str = string_format("@custom%d %s", count + 1, text[filter]);
x1t -= text_sign;
break;
}
diff --git a/src/emu/ui/simpleselgame.cpp b/src/emu/ui/simpleselgame.cpp
index 4847eb06da4..617c6e651e4 100644
--- a/src/emu/ui/simpleselgame.cpp
+++ b/src/emu/ui/simpleselgame.cpp
@@ -228,12 +228,12 @@ void ui_simple_menu_select_game::populate()
// if nothing there, add a single multiline item and return
if (matchcount == 0)
{
- std::string txt;
- strprintf(txt, "No machines found. Please check the rompath specified in the %s.ini file.\n\n"
- "If this is your first time using %s, please see the config.txt file in "
- "the docs directory for information on configuring %s.",
- emulator_info::get_configname(),
- emulator_info::get_appname(),emulator_info::get_appname() );
+ std::string txt = string_format(
+ _("No machines found. Please check the rompath specified in the %1$s.ini file.\n\n"
+ "If this is your first time using %2$s, please see the config.txt file in "
+ "the docs directory for information on configuring %2$s."),
+ emulator_info::get_configname(),
+ emulator_info::get_appname());
item_append(txt.c_str(), nullptr, MENU_FLAG_MULTILINE | MENU_FLAG_REDTEXT, nullptr);
return;
}
@@ -284,9 +284,9 @@ void ui_simple_menu_select_game::custom_render(void *selectedref, float top, flo
// display the current typeahead
if (m_search[0] != 0)
- strprintf(tempbuf[0], "Type name or select: %s_", m_search);
+ tempbuf[0] = string_format(_("Type name or select: %1$s_"), m_search);
else
- strprintf(tempbuf[0],"Type name or select: (random)");
+ tempbuf[0] = _("Type name or select: (random)");
// get the size of the text
machine().ui().draw_text_full(container, tempbuf[0].c_str(), 0.0f, 0.0f, 1.0f, JUSTIFY_CENTER, WRAP_TRUNCATE,
@@ -319,36 +319,36 @@ void ui_simple_menu_select_game::custom_render(void *selectedref, float top, flo
const char *gfxstat, *soundstat;
// first line is game name
- strprintf(tempbuf[0],"%-.100s", driver->description);
+ tempbuf[0] = string_format(_("%1$-.100s"), driver->description);
// next line is year, manufacturer
- strprintf(tempbuf[1], "%s, %-.100s", driver->year, driver->manufacturer);
+ tempbuf[1] = string_format(_("%1$s, %2$-.100s"), driver->year, driver->manufacturer);
// next line source path
- strprintf(tempbuf[2],"Driver: %-.100s", core_filename_extract_base(driver->source_file).c_str());
+ tempbuf[2] = string_format(_("Driver: %1$-.100s"), core_filename_extract_base(driver->source_file).c_str());
// next line is overall driver status
if (driver->flags & MACHINE_NOT_WORKING)
- tempbuf[3].assign("Overall: NOT WORKING");
+ tempbuf[3].assign(_("Overall: NOT WORKING"));
else if (driver->flags & MACHINE_UNEMULATED_PROTECTION)
- tempbuf[3].assign("Overall: Unemulated Protection");
+ tempbuf[3].assign(_("Overall: Unemulated Protection"));
else
- tempbuf[3].assign("Overall: Working");
+ tempbuf[3].assign(_("Overall: Working"));
// next line is graphics, sound status
if (driver->flags & (MACHINE_IMPERFECT_GRAPHICS | MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_COLORS))
- gfxstat = "Imperfect";
+ gfxstat = _("Imperfect");
else
- gfxstat = "OK";
+ gfxstat = _("OK");
if (driver->flags & MACHINE_NO_SOUND)
- soundstat = "Unimplemented";
+ soundstat = _("Unimplemented");
else if (driver->flags & MACHINE_IMPERFECT_SOUND)
- soundstat = "Imperfect";
+ soundstat = _("Imperfect");
else
- soundstat = "OK";
+ soundstat = _("OK");
- strprintf(tempbuf[4], "Gfx: %s, Sound: %s", gfxstat, soundstat);
+ tempbuf[4] = string_format(_("Gfx: %s, Sound: %s"), gfxstat, soundstat);
}
else
{
@@ -356,7 +356,7 @@ void ui_simple_menu_select_game::custom_render(void *selectedref, float top, flo
line = 0;
// first line is version string
- strprintf(tempbuf[line++], "%s %s", emulator_info::get_appname(), build_version);
+ tempbuf[line++] = string_format("%s %s", emulator_info::get_appname(), build_version);
// output message
while (line < ARRAY_LENGTH(tempbuf))
diff --git a/src/emu/ui/sndmenu.cpp b/src/emu/ui/sndmenu.cpp
index cc5e8490406..ab1731e6589 100644
--- a/src/emu/ui/sndmenu.cpp
+++ b/src/emu/ui/sndmenu.cpp
@@ -129,13 +129,11 @@ void ui_menu_sound_options::populate()
{
UINT32 arrow_flags = get_arrow_flags(0, ARRAY_LENGTH(m_sound_rate) - 1, m_cur_rates);
m_sample_rate = m_sound_rate[m_cur_rates];
- std::string s_text;
- strprintf(s_text, "%d", m_sample_rate);
// add options items
- item_append(_("Sound"), m_sound ? "On" : "Off", m_sound ? MENU_FLAG_RIGHT_ARROW : MENU_FLAG_LEFT_ARROW, (void *)(FPTR)ENABLE_SOUND);
- item_append(_("Sample Rate"), s_text.c_str(), arrow_flags, (void *)(FPTR)SAMPLE_RATE);
- item_append(_("Use External Samples"), m_samples ? "On" : "Off", m_samples ? MENU_FLAG_RIGHT_ARROW : MENU_FLAG_LEFT_ARROW, (void *)(FPTR)ENABLE_SAMPLES);
+ item_append(_("Sound"), m_sound ? _("On") : _("Off"), m_sound ? MENU_FLAG_RIGHT_ARROW : MENU_FLAG_LEFT_ARROW, (void *)(FPTR)ENABLE_SOUND);
+ item_append(_("Sample Rate"), string_format("%d", m_sample_rate).c_str(), arrow_flags, (void *)(FPTR)SAMPLE_RATE);
+ item_append(_("Use External Samples"), m_samples ? _("On") : _("Off"), m_samples ? MENU_FLAG_RIGHT_ARROW : MENU_FLAG_LEFT_ARROW, (void *)(FPTR)ENABLE_SAMPLES);
item_append(MENU_SEPARATOR_ITEM, nullptr, 0, nullptr);
customtop = machine().ui().get_line_height() + (3.0f * UI_BOX_TB_BORDER);
diff --git a/src/emu/ui/tapectrl.cpp b/src/emu/ui/tapectrl.cpp
index 253ffbf915d..461ec1e972c 100644
--- a/src/emu/ui/tapectrl.cpp
+++ b/src/emu/ui/tapectrl.cpp
@@ -171,9 +171,9 @@ void ui_menu_tape_control::get_time_string(std::string &dest, cassette_image_dev
t1 = cassette->get_length();
if (t1)
- strprintf(dest, "%04d/%04d", (int)t0, (int)t1);
+ dest = string_format("%04d/%04d", (int)t0, (int)t1);
else
- strprintf(dest, "%04d/%04d", 0, (int)t1);
+ dest = string_format("%04d/%04d", 0, (int)t1);
if (curpos != nullptr)
*curpos = t0;
diff --git a/src/emu/ui/ui.cpp b/src/emu/ui/ui.cpp
index b474c7c61f6..b54de0e093e 100644
--- a/src/emu/ui/ui.cpp
+++ b/src/emu/ui/ui.cpp
@@ -148,7 +148,7 @@ static INT32 slider_flicker(running_machine &machine, void *arg, std::string *st
static INT32 slider_beam_width_min(running_machine &machine, void *arg, std::string *str, INT32 newval);
static INT32 slider_beam_width_max(running_machine &machine, void *arg, std::string *str, INT32 newval);
static INT32 slider_beam_intensity_weight(running_machine &machine, void *arg, std::string *str, INT32 newval);
-static char *slider_get_screen_desc(screen_device &screen);
+static std::string slider_get_screen_desc(screen_device &screen);
#ifdef MAME_DEBUG
static INT32 slider_crossscale(running_machine &machine, void *arg, std::string *str, INT32 newval);
static INT32 slider_crossoffset(running_machine &machine, void *arg, std::string *str, INT32 newval);
@@ -1059,9 +1059,11 @@ bool ui_manager::show_timecode_total()
std::string &ui_manager::disclaimer_string(std::string &str)
{
- str.assign(_("Usage of emulators in conjunction with ROMs you don't own is forbidden by copyright law.\n\n"));
- strcatprintf(str, _("IF YOU ARE NOT LEGALLY ENTITLED TO PLAY \"%s\" ON THIS EMULATOR, PRESS ESC.\n\n"), machine().system().description);
- str.append(_("Otherwise, type OK or move the joystick left then right to continue"));
+ str = string_format(
+ _("Usage of emulators in conjunction with ROMs you don't own is forbidden by copyright law.\n\n"
+ "IF YOU ARE NOT LEGALLY ENTITLED TO PLAY \"%1$s\" ON THIS EMULATOR, PRESS ESC.\n\n"
+ "Otherwise, type OK or move the joystick left then right to continue"),
+ machine().system().description);
return str;
}
@@ -1204,8 +1206,14 @@ std::string &ui_manager::warnings_string(std::string &str)
std::string &ui_manager::game_info_astring(std::string &str)
{
+ std::ostringstream buf;
+
// print description, manufacturer, and CPU:
- strprintf(str, "%s\n%s %s\nDriver: %s\n\nCPU:\n", machine().system().description, machine().system().year, machine().system().manufacturer, core_filename_extract_base(machine().system().source_file).c_str());
+ stream_format(buf, _("%1$s\n%2$s %3$s\nDriver: %4$s\n\nCPU:\n"),
+ machine().system().description,
+ machine().system().year,
+ machine().system().manufacturer,
+ core_filename_extract_base(machine().system().source_file));
// loop over all CPUs
execute_interface_iterator execiter(machine().root_device());
@@ -1229,15 +1237,15 @@ std::string &ui_manager::game_info_astring(std::string &str)
}
// if more than one, prepend a #x in front of the CPU name
- if (count > 1)
- strcatprintf(str, "%d" UTF8_MULTIPLY, count);
- str.append(name);
-
// display clock in kHz or MHz
- if (clock >= 1000000)
- strcatprintf(str, " %d.%06d" UTF8_NBSP "MHz\n", clock / 1000000, clock % 1000000);
- else
- strcatprintf(str, " %d.%03d" UTF8_NBSP "kHz\n", clock / 1000, clock % 1000);
+ stream_format(buf,
+ (count > 1) ? "%1$d" UTF8_MULTIPLY "%2$s %3$d.%4$0*5$d%6$s\n" : "%2$s %3$d.%4$0*5$d%6$s\n",
+ count,
+ name,
+ (clock >= 1000000) ? (clock / 1000000) : (clock / 1000),
+ (clock >= 1000000) ? (clock % 1000000) : (clock % 1000),
+ (clock >= 1000000) ? 6 : 3,
+ (clock >= 1000000) ? _("MHz") : _("kHz"));
}
// loop over all sound chips
@@ -1251,7 +1259,7 @@ std::string &ui_manager::game_info_astring(std::string &str)
// append the Sound: string
if (!found_sound)
- str.append(_("\nSound:\n"));
+ buf << _("\nSound:\n");
found_sound = true;
// count how many identical sound chips we have
@@ -1263,52 +1271,51 @@ std::string &ui_manager::game_info_astring(std::string &str)
if (soundtags.insert(scan->device().tag()).second)
count++;
}
- // if more than one, prepend a #x in front of the CPU name
- if (count > 1)
- strcatprintf(str, "%d" UTF8_MULTIPLY, count);
- str.append(sound->device().name());
+ // if more than one, prepend a #x in front of the CPU name
// display clock in kHz or MHz
int clock = sound->device().clock();
- if (clock >= 1000000)
- strcatprintf(str, " %d.%06d" UTF8_NBSP "MHz\n", clock / 1000000, clock % 1000000);
- else if (clock != 0)
- strcatprintf(str, " %d.%03d" UTF8_NBSP "kHz\n", clock / 1000, clock % 1000);
- else
- str.append("\n");
+ stream_format(buf,
+ (count > 1)
+ ? ((clock != 0) ? "%1$d" UTF8_MULTIPLY "%2$s %3$d.%4$0*5$d%6$s\n" : "%1$d" UTF8_MULTIPLY "%2$s\n")
+ : ((clock != 0) ? "%2$s %3$d.%4$0*5$d%6$s\n" : "%2$s\n"),
+ count,
+ sound->device().name(),
+ (clock >= 1000000) ? (clock / 1000000) : (clock / 1000),
+ (clock >= 1000000) ? (clock % 1000000) : (clock % 1000),
+ (clock >= 1000000) ? 6 : 3,
+ (clock >= 1000000) ? _("MHz") : _("kHz"));
}
// display screen information
- str.append(_("\nVideo:\n"));
+ buf << _("\nVideo:\n");
screen_device_iterator scriter(machine().root_device());
int scrcount = scriter.count();
if (scrcount == 0)
- str.append(_("None\n"));
+ buf << _("None\n");
else
{
for (screen_device *screen = scriter.first(); screen != nullptr; screen = scriter.next())
{
- if (scrcount > 1)
- {
- str.append(slider_get_screen_desc(*screen));
- str.append(": ");
- }
-
+ std::string detail;
if (screen->screen_type() == SCREEN_TYPE_VECTOR)
- str.append(_("Vector\n"));
+ detail = _("Vector");
else
{
const rectangle &visarea = screen->visible_area();
-
- strcatprintf(str, "%d " UTF8_MULTIPLY " %d (%s) %f" UTF8_NBSP "Hz\n",
+ detail = string_format("%d " UTF8_MULTIPLY " %d (%s) %f" UTF8_NBSP "Hz",
visarea.width(), visarea.height(),
(machine().system().flags & ORIENTATION_SWAP_XY) ? "V" : "H",
ATTOSECONDS_TO_HZ(screen->frame_period().attoseconds()));
}
+
+ stream_format(buf,
+ (scrcount > 1) ? _("%1$s: %2$s\n") : _("%2$s\n"),
+ slider_get_screen_desc(*screen), detail);
}
}
- return str;
+ return str = buf.str();
}
@@ -1901,11 +1908,11 @@ UINT32 ui_manager::handler_confirm_quit(running_machine &machine, render_contain
std::string ui_cancel_text = machine.input().seq_name(machine.ioport().type_seq(IPT_UI_CANCEL, 0, SEQ_TYPE_STANDARD));
// assemble the quit message
- std::string quit_message = strformat(_("Are you sure you want to quit?\n\n"
- "Press ''%s'' to quit,\n"
- "Press ''%s'' to return to emulation."),
- ui_select_text.c_str(),
- ui_cancel_text.c_str());
+ std::string quit_message = string_format(_("Are you sure you want to quit?\n\n"
+ "Press ''%1$s'' to quit,\n"
+ "Press ''%2$s'' to return to emulation."),
+ ui_select_text,
+ ui_cancel_text);
machine.ui().draw_text_box(container, quit_message.c_str(), JUSTIFY_CENTER, 0.5f, 0.5f, UI_RED_COLOR);
machine.pause();
@@ -1987,8 +1994,7 @@ static slider_state *slider_init(running_machine &machine)
INT32 maxval = 2000;
INT32 defval = 1000;
- str.assign(info.stream->input_name(info.inputnum));
- str.append(_(" Volume"));
+ str = string_format(_("%1$s Volume"), info.stream->input_name(info.inputnum));
*tailptr = slider_alloc(machine, str.c_str(), 0, defval, maxval, 20, slider_mixervol, (void *)(FPTR)item);
tailptr = &(*tailptr)->next;
}
@@ -2010,7 +2016,7 @@ static slider_state *slider_init(running_machine &machine)
for (device_execute_interface *exec = iter.first(); exec != nullptr; exec = iter.next())
{
void *param = (void *)&exec->device();
- strprintf(str, "Overclock CPU %s", exec->device().tag());
+ str = string_format(_("Overclock CPU %1$s"), exec->device().tag());
*tailptr = slider_alloc(machine, str.c_str(), 10, 1000, 2000, 1, slider_overclock, param);
tailptr = &(*tailptr)->next;
}
@@ -2025,37 +2031,38 @@ static slider_state *slider_init(running_machine &machine)
int defxoffset = floor(screen->xoffset() * 1000.0f + 0.5f);
int defyoffset = floor(screen->yoffset() * 1000.0f + 0.5f);
void *param = (void *)screen;
+ std::string screen_desc = slider_get_screen_desc(*screen);
// add refresh rate tweaker
if (machine.options().cheat())
{
- strprintf(str, "%s Refresh Rate", slider_get_screen_desc(*screen));
+ str = string_format(_("%1$s Refresh Rate"), screen_desc);
*tailptr = slider_alloc(machine, str.c_str(), -10000, 0, 10000, 1000, slider_refresh, param);
tailptr = &(*tailptr)->next;
}
// add standard brightness/contrast/gamma controls per-screen
- strprintf(str, "%s Brightness", slider_get_screen_desc(*screen));
+ str = string_format(_("%1$s Brightness"), screen_desc);
*tailptr = slider_alloc(machine, str.c_str(), 100, 1000, 2000, 10, slider_brightness, param);
tailptr = &(*tailptr)->next;
- strprintf(str, "%s Contrast", slider_get_screen_desc(*screen));
+ str = string_format(_("%1$s Contrast"), screen_desc);
*tailptr = slider_alloc(machine, str.c_str(), 100, 1000, 2000, 50, slider_contrast, param);
tailptr = &(*tailptr)->next;
- strprintf(str,"%s Gamma", slider_get_screen_desc(*screen));
+ str = string_format(_("%1$s Gamma"), screen_desc);
*tailptr = slider_alloc(machine, str.c_str(), 100, 1000, 3000, 50, slider_gamma, param);
tailptr = &(*tailptr)->next;
// add scale and offset controls per-screen
- strprintf(str,"%s Horiz Stretch", slider_get_screen_desc(*screen));
+ str = string_format(_("%1$s Horiz Stretch"), screen_desc);
*tailptr = slider_alloc(machine, str.c_str(), 500, defxscale, 1500, 2, slider_xscale, param);
tailptr = &(*tailptr)->next;
- strprintf(str,"%s Horiz Position", slider_get_screen_desc(*screen));
+ str = string_format(_("%1$s Horiz Position"), screen_desc);
*tailptr = slider_alloc(machine, str.c_str(), -500, defxoffset, 500, 2, slider_xoffset, param);
tailptr = &(*tailptr)->next;
- strprintf(str,"%s Vert Stretch", slider_get_screen_desc(*screen));
+ str = string_format(_("%1$s Vert Stretch"), screen_desc);
*tailptr = slider_alloc(machine, str.c_str(), 500, defyscale, 1500, 2, slider_yscale, param);
tailptr = &(*tailptr)->next;
- strprintf(str,"%s Vert Position", slider_get_screen_desc(*screen));
+ str = string_format(_("%1$s Vert Position"), screen_desc);
*tailptr = slider_alloc(machine, str.c_str(), -500, defyoffset, 500, 2, slider_yoffset, param);
tailptr = &(*tailptr)->next;
}
@@ -2073,16 +2080,16 @@ static slider_state *slider_init(running_machine &machine)
void *param = (void *)laserdisc;
// add scale and offset controls per-overlay
- strprintf(str,"Laserdisc '%s' Horiz Stretch", laserdisc->tag());
+ str = string_format(_("Laserdisc '%1$s' Horiz Stretch"), laserdisc->tag());
*tailptr = slider_alloc(machine, str.c_str(), 500, (defxscale == 0) ? 1000 : defxscale, 1500, 2, slider_overxscale, param);
tailptr = &(*tailptr)->next;
- strprintf(str,"Laserdisc '%s' Horiz Position", laserdisc->tag());
+ str = string_format(_("Laserdisc '%1$s' Horiz Position"), laserdisc->tag());
*tailptr = slider_alloc(machine, str.c_str(), -500, defxoffset, 500, 2, slider_overxoffset, param);
tailptr = &(*tailptr)->next;
- strprintf(str,"Laserdisc '%s' Vert Stretch", laserdisc->tag());
+ str = string_format(_("Laserdisc '%1$s' Vert Stretch"), laserdisc->tag());
*tailptr = slider_alloc(machine, str.c_str(), 500, (defyscale == 0) ? 1000 : defyscale, 1500, 2, slider_overyscale, param);
tailptr = &(*tailptr)->next;
- strprintf(str,"Laserdisc '%s' Vert Position", laserdisc->tag());
+ str = string_format(_("Laserdisc '%1$s' Vert Position"), laserdisc->tag());
*tailptr = slider_alloc(machine, str.c_str(), -500, defyoffset, 500, 2, slider_overyoffset, param);
tailptr = &(*tailptr)->next;
}
@@ -2109,10 +2116,10 @@ static slider_state *slider_init(running_machine &machine)
if (field->crosshair_axis() != CROSSHAIR_AXIS_NONE && field->player() == 0)
{
void *param = (void *)field;
- strprintf(str,"Crosshair Scale %s", (field->crosshair_axis() == CROSSHAIR_AXIS_X) ? "X" : "Y");
+ str = string_format(_("Crosshair Scale %1$s"), (field->crosshair_axis() == CROSSHAIR_AXIS_X) ? _("X") : _("Y"));
*tailptr = slider_alloc(machine, str.c_str(), -3000, 1000, 3000, 100, slider_crossscale, param);
tailptr = &(*tailptr)->next;
- strprintf(str,"Crosshair Offset %s", (field->crosshair_axis() == CROSSHAIR_AXIS_X) ? "X" : "Y");
+ str = string_format(_("Crosshair Offset %1$s"), (field->crosshair_axis() == CROSSHAIR_AXIS_X) ? _("X") : _("Y"));
*tailptr = slider_alloc(machine, str.c_str(), -3000, 0, 3000, 100, slider_crossoffset, param);
tailptr = &(*tailptr)->next;
}
@@ -2130,8 +2137,8 @@ static INT32 slider_volume(running_machine &machine, void *arg, std::string *str
{
if (newval != SLIDER_NOCHANGE)
machine.sound().set_attenuation(newval);
- if (str != nullptr)
- strprintf(*str,"%3ddB", machine.sound().attenuation());
+ if (str)
+ *str = string_format(_("%1$3ddB"), machine.sound().attenuation());
return machine.sound().attenuation();
}
@@ -2152,8 +2159,8 @@ static INT32 slider_mixervol(running_machine &machine, void *arg, std::string *s
if (newval > curval && (newval - curval) <= 4) newval += 4; // round up on increment
info.stream->set_user_gain(info.inputnum, (float)newval * 0.001f);
}
- if (str != nullptr)
- strprintf(*str,"%4.2f", (double) info.stream->user_gain(info.inputnum));
+ if (str)
+ *str = string_format("%4.2f", info.stream->user_gain(info.inputnum));
return floorf(info.stream->user_gain(info.inputnum) * 1000.0f + 0.5f);
}
@@ -2174,8 +2181,8 @@ static INT32 slider_adjuster(running_machine &machine, void *arg, std::string *s
settings.value = newval;
field->set_user_settings(settings);
}
- if (str != nullptr)
- strprintf(*str,"%d%%", settings.value);
+ if (str)
+ *str = string_format(_("%1$d%%"), settings.value);
return settings.value;
}
@@ -2190,8 +2197,8 @@ static INT32 slider_overclock(running_machine &machine, void *arg, std::string *
device_t *cpu = (device_t *)arg;
if (newval != SLIDER_NOCHANGE)
cpu->set_clock_scale((float)newval * 0.001f);
- if (str != nullptr)
- strprintf(*str,"%3.0f%%", floor(cpu->clock_scale() * 100.0 + 0.5));
+ if (str)
+ *str = string_format(_("%1$3.0f%%"), floor(cpu->clock_scale() * 100.0 + 0.5));
return floor(cpu->clock_scale() * 1000.0 + 0.5);
}
@@ -2213,8 +2220,8 @@ static INT32 slider_refresh(running_machine &machine, void *arg, std::string *st
const rectangle &visarea = screen->visible_area();
screen->configure(width, height, visarea, HZ_TO_ATTOSECONDS(defrefresh + (double)newval * 0.001));
}
- if (str != nullptr)
- strprintf(*str,"%.3ffps", ATTOSECONDS_TO_HZ(machine.first_screen()->frame_period().attoseconds()));
+ if (str)
+ *str = string_format(_("%1$.3ffps"), ATTOSECONDS_TO_HZ(machine.first_screen()->frame_period().attoseconds()));
refresh = ATTOSECONDS_TO_HZ(machine.first_screen()->frame_period().attoseconds());
return floor((refresh - defrefresh) * 1000.0 + 0.5);
}
@@ -2236,8 +2243,8 @@ static INT32 slider_brightness(running_machine &machine, void *arg, std::string
settings.m_brightness = (float)newval * 0.001f;
screen->container().set_user_settings(settings);
}
- if (str != nullptr)
- strprintf(*str,"%.3f", (double) settings.m_brightness);
+ if (str)
+ *str = string_format(_("%1$.3f"), settings.m_brightness);
return floor(settings.m_brightness * 1000.0f + 0.5f);
}
@@ -2258,8 +2265,8 @@ static INT32 slider_contrast(running_machine &machine, void *arg, std::string *s
settings.m_contrast = (float)newval * 0.001f;
screen->container().set_user_settings(settings);
}
- if (str != nullptr)
- strprintf(*str,"%.3f", (double) settings.m_contrast);
+ if (str)
+ *str = string_format(_("%1$.3f"), settings.m_contrast);
return floor(settings.m_contrast * 1000.0f + 0.5f);
}
@@ -2279,8 +2286,8 @@ static INT32 slider_gamma(running_machine &machine, void *arg, std::string *str,
settings.m_gamma = (float)newval * 0.001f;
screen->container().set_user_settings(settings);
}
- if (str != nullptr)
- strprintf(*str,"%.3f", (double) settings.m_gamma);
+ if (str)
+ *str = string_format(_("%1$.3f"), settings.m_gamma);
return floor(settings.m_gamma * 1000.0f + 0.5f);
}
@@ -2301,8 +2308,8 @@ static INT32 slider_xscale(running_machine &machine, void *arg, std::string *str
settings.m_xscale = (float)newval * 0.001f;
screen->container().set_user_settings(settings);
}
- if (str != nullptr)
- strprintf(*str,"%.3f", (double) settings.m_xscale);
+ if (str)
+ *str = string_format(_("%1$.3f"), settings.m_xscale);
return floor(settings.m_xscale * 1000.0f + 0.5f);
}
@@ -2323,8 +2330,8 @@ static INT32 slider_yscale(running_machine &machine, void *arg, std::string *str
settings.m_yscale = (float)newval * 0.001f;
screen->container().set_user_settings(settings);
}
- if (str != nullptr)
- strprintf(*str,"%.3f", (double) settings.m_yscale);
+ if (str)
+ *str = string_format(_("%1$.3f"), settings.m_yscale);
return floor(settings.m_yscale * 1000.0f + 0.5f);
}
@@ -2345,8 +2352,8 @@ static INT32 slider_xoffset(running_machine &machine, void *arg, std::string *st
settings.m_xoffset = (float)newval * 0.001f;
screen->container().set_user_settings(settings);
}
- if (str != nullptr)
- strprintf(*str,"%.3f", (double) settings.m_xoffset);
+ if (str)
+ *str = string_format(_("%1$.3f"), settings.m_xoffset);
return floor(settings.m_xoffset * 1000.0f + 0.5f);
}
@@ -2367,8 +2374,8 @@ static INT32 slider_yoffset(running_machine &machine, void *arg, std::string *st
settings.m_yoffset = (float)newval * 0.001f;
screen->container().set_user_settings(settings);
}
- if (str != nullptr)
- strprintf(*str,"%.3f", (double) settings.m_yoffset);
+ if (str)
+ *str = string_format(_("%1$.3f"), settings.m_yoffset);
return floor(settings.m_yoffset * 1000.0f + 0.5f);
}
@@ -2389,8 +2396,8 @@ static INT32 slider_overxscale(running_machine &machine, void *arg, std::string
settings.m_overscalex = (float)newval * 0.001f;
laserdisc->set_overlay_config(settings);
}
- if (str != nullptr)
- strprintf(*str,"%.3f", (double) settings.m_overscalex);
+ if (str)
+ *str = string_format(_("%1$.3f"), settings.m_overscalex);
return floor(settings.m_overscalex * 1000.0f + 0.5f);
}
@@ -2411,8 +2418,8 @@ static INT32 slider_overyscale(running_machine &machine, void *arg, std::string
settings.m_overscaley = (float)newval * 0.001f;
laserdisc->set_overlay_config(settings);
}
- if (str != nullptr)
- strprintf(*str,"%.3f", (double) settings.m_overscaley);
+ if (str)
+ *str = string_format(_("%1$.3f"), settings.m_overscaley);
return floor(settings.m_overscaley * 1000.0f + 0.5f);
}
@@ -2433,8 +2440,8 @@ static INT32 slider_overxoffset(running_machine &machine, void *arg, std::string
settings.m_overposx = (float)newval * 0.001f;
laserdisc->set_overlay_config(settings);
}
- if (str != nullptr)
- strprintf(*str,"%.3f", (double) settings.m_overposx);
+ if (str)
+ *str = string_format(_("%1$.3f"), settings.m_overposx);
return floor(settings.m_overposx * 1000.0f + 0.5f);
}
@@ -2455,8 +2462,8 @@ static INT32 slider_overyoffset(running_machine &machine, void *arg, std::string
settings.m_overposy = (float)newval * 0.001f;
laserdisc->set_overlay_config(settings);
}
- if (str != nullptr)
- strprintf(*str,"%.3f", (double) settings.m_overposy);
+ if (str)
+ *str = string_format(_("%1$.3f"), settings.m_overposy);
return floor(settings.m_overposy * 1000.0f + 0.5f);
}
@@ -2471,8 +2478,8 @@ static INT32 slider_flicker(running_machine &machine, void *arg, std::string *st
vector_device *vector = nullptr;
if (newval != SLIDER_NOCHANGE)
vector->set_flicker((float)newval * 0.001f);
- if (str != nullptr)
- strprintf(*str,"%1.2f", (double) vector->get_flicker());
+ if (str)
+ *str = string_format(_("%1$1.2f"), vector->get_flicker());
return floor(vector->get_flicker() * 1000.0f + 0.5f);
}
@@ -2488,7 +2495,7 @@ static INT32 slider_beam_width_min(running_machine &machine, void *arg, std::str
if (newval != SLIDER_NOCHANGE)
vector->set_beam_width_min(MIN((float)newval * 0.01f, vector->get_beam_width_max()));
if (str != nullptr)
- strprintf(*str,"%1.2f", (double) vector->get_beam_width_min());
+ *str = string_format(_("%1$1.2f"), vector->get_beam_width_min());
return floor(vector->get_beam_width_min() * 100.0f + 0.5f);
}
@@ -2504,7 +2511,7 @@ static INT32 slider_beam_width_max(running_machine &machine, void *arg, std::str
if (newval != SLIDER_NOCHANGE)
vector->set_beam_width_max(MAX((float)newval * 0.01f, vector->get_beam_width_min()));
if (str != nullptr)
- strprintf(*str,"%1.2f", (double) vector->get_beam_width_max());
+ *str = string_format(_("%1$1.2f"), vector->get_beam_width_max());
return floor(vector->get_beam_width_max() * 100.0f + 0.5f);
}
@@ -2520,7 +2527,7 @@ static INT32 slider_beam_intensity_weight(running_machine &machine, void *arg, s
if (newval != SLIDER_NOCHANGE)
vector->set_beam_intensity_weight((float)newval * 0.001f);
if (str != nullptr)
- strprintf(*str,"%1.2f", (double) vector->get_beam_intensity_weight());
+ *str = string_format(_("%1$1.2f"), vector->get_beam_intensity_weight());
return floor(vector->get_beam_intensity_weight() * 1000.0f + 0.5f);
}
@@ -2530,18 +2537,15 @@ static INT32 slider_beam_intensity_weight(running_machine &machine, void *arg, s
// description for a given screen
//-------------------------------------------------
-static char *slider_get_screen_desc(screen_device &screen)
+static std::string slider_get_screen_desc(screen_device &screen)
{
screen_device_iterator iter(screen.machine().root_device());
int scrcount = iter.count();
- static char descbuf[256];
if (scrcount > 1)
- sprintf(descbuf, _("Screen '%s'"), screen.tag());
+ return string_format(_("Screen '%1$s'"), screen.tag());
else
- strcpy(descbuf, _("Screen"));
-
- return descbuf;
+ return _("Screen");
}
//-------------------------------------------------
@@ -2556,8 +2560,8 @@ static INT32 slider_crossscale(running_machine &machine, void *arg, std::string
if (newval != SLIDER_NOCHANGE)
field->set_crosshair_scale(float(newval) * 0.001);
- if (str != nullptr)
- strprintf(*str,"%s %s %1.3f", _("Crosshair Scale"), (field->crosshair_axis() == CROSSHAIR_AXIS_X) ? "X" : "Y", float(newval) * 0.001f);
+ if (str)
+ *str = string_format((field->crosshair_axis() == CROSSHAIR_AXIS_X) ? _("Crosshair Scale X %1$1.3f") : _("Crosshair Scale Y %1$1.3f"), float(newval) * 0.001f);
return floor(field->crosshair_scale() * 1000.0f + 0.5f);
}
#endif
@@ -2575,8 +2579,8 @@ static INT32 slider_crossoffset(running_machine &machine, void *arg, std::string
if (newval != SLIDER_NOCHANGE)
field->set_crosshair_offset(float(newval) * 0.001f);
- if (str != nullptr)
- strprintf(*str,"%s %s %1.3f", _("Crosshair Offset"), (field->crosshair_axis() == CROSSHAIR_AXIS_X) ? "X" : "Y", float(newval) * 0.001f);
+ if (str)
+ *str = string_format((field->crosshair_axis() == CROSSHAIR_AXIS_X) ? _("Crosshair Offset X %1$1.3f") : _("Crosshair Offset Y %1$1.3f"), float(newval) * 0.001f);
return field->crosshair_offset();
}
#endif
diff --git a/src/emu/video.cpp b/src/emu/video.cpp
index 9115efd1f4b..0fe17cf8140 100644
--- a/src/emu/video.cpp
+++ b/src/emu/video.cpp
@@ -267,28 +267,28 @@ void video_manager::frame_update(bool debug)
std::string video_manager::speed_text()
{
- std::string str;
+ std::ostringstream str;
// if we're paused, just display Paused
bool paused = machine().paused();
if (paused)
- str.append("paused");
+ str << "paused";
// if we're fast forwarding, just display Fast-forward
else if (m_fastforward)
- str.append("fast ");
+ str << "fast ";
// if we're auto frameskipping, display that plus the level
else if (effective_autoframeskip())
- strcatprintf(str, "auto%2d/%d", effective_frameskip(), MAX_FRAMESKIP);
+ stream_format(str, "auto%2d/%d", effective_frameskip(), MAX_FRAMESKIP);
// otherwise, just display the frameskip plus the level
else
- strcatprintf(str, "skip %d/%d", effective_frameskip(), MAX_FRAMESKIP);
+ stream_format(str, "skip %d/%d", effective_frameskip(), MAX_FRAMESKIP);
// append the speed for all cases except paused
if (!paused)
- strcatprintf(str, "%4d%%", (int)(100 * m_speed_percent + 0.5));
+ stream_format(str, "%4d%%", (int)(100 * m_speed_percent + 0.5));
// display the number of partial updates as well
int partials = 0;
@@ -296,9 +296,9 @@ std::string video_manager::speed_text()
for (screen_device *screen = iter.first(); screen != nullptr; screen = iter.next())
partials += screen->partial_updates();
if (partials > 1)
- strcatprintf(str, "\n%d partial updates", partials);
+ stream_format(str, "\n%d partial updates", partials);
- return str;
+ return str.str();
}
@@ -381,44 +381,27 @@ void video_manager::save_input_timecode()
m_timecode_write = true;
}
-std::string &video_manager::timecode_text(std::string &str) {
- str.clear();
- str += " ";
-
- if (!m_timecode_text.empty()) {
- str += m_timecode_text + " ";
- }
-
+std::string &video_manager::timecode_text(std::string &str)
+{
attotime elapsed_time = machine().time() - m_timecode_start;
- std::string elapsed_time_str;
- strcatprintf(elapsed_time_str, "%02d:%02d",
- (elapsed_time.m_seconds / 60) % 60,
- elapsed_time.m_seconds % 60);
- str += elapsed_time_str;
-
- bool paused = machine().paused();
- if (paused) {
- str.append(" [paused]");
- }
-
- str += " ";
-
+ str = string_format(" %s%s%02d:%02d %s",
+ m_timecode_text,
+ m_timecode_text.empty() ? "" : " ",
+ (elapsed_time.m_seconds / 60) % 60,
+ elapsed_time.m_seconds % 60,
+ machine().paused() ? "[paused] " : "");
return str;
}
-std::string &video_manager::timecode_total_text(std::string &str) {
- str.clear();
- str += " TOTAL ";
-
+std::string &video_manager::timecode_total_text(std::string &str)
+{
attotime elapsed_time = m_timecode_total;
if (machine().ui().show_timecode_counter()) {
elapsed_time += machine().time() - m_timecode_start;
}
- std::string elapsed_time_str;
- strcatprintf(elapsed_time_str, "%02d:%02d",
- (elapsed_time.m_seconds / 60) % 60,
- elapsed_time.m_seconds % 60);
- str += elapsed_time_str + " ";
+ str = string_format("TOTAL %02d:%02d ",
+ (elapsed_time.m_seconds / 60) % 60,
+ elapsed_time.m_seconds % 60);
return str;
}
@@ -1269,14 +1252,12 @@ file_error video_manager::open_next(emu_file &file, const char *extension)
else
{
// try until we succeed
- std::string seqtext;
file.set_openflags(OPEN_FLAG_READ);
for (int seq = 0; ; seq++)
{
// build up the filename
fname.assign(snapstr);
- strprintf(seqtext, "%04d", seq);
- strreplace(fname, "%i", seqtext.c_str());
+ strreplace(fname, "%i", string_format("%04d", seq).c_str());
// try to open the file; stop when we fail
file_error filerr = file.open(fname.c_str());
diff --git a/src/lib/util/cdrom.cpp b/src/lib/util/cdrom.cpp
index 2235119f776..10a1828d5e4 100644
--- a/src/lib/util/cdrom.cpp
+++ b/src/lib/util/cdrom.cpp
@@ -1288,10 +1288,9 @@ chd_error cdrom_parse_metadata(chd_file *chd, cdrom_toc *toc)
chd_error cdrom_write_metadata(chd_file *chd, const cdrom_toc *toc)
{
chd_error err;
- int i;
/* write the metadata */
- for (i = 0; i < toc->numtrks; i++)
+ for (int i = 0; i < toc->numtrks; i++)
{
std::string metadata;
if (!(toc->flags & CD_FLAG_GDROM))
@@ -1308,7 +1307,7 @@ chd_error cdrom_write_metadata(chd_file *chd, const cdrom_toc *toc)
strcpy(submode, cdrom_get_type_string(toc->tracks[i].pgtype));
}
- strprintf(metadata, CDROM_TRACK_METADATA2_FORMAT, i + 1, cdrom_get_type_string(toc->tracks[i].trktype),
+ metadata = string_format(CDROM_TRACK_METADATA2_FORMAT, i + 1, cdrom_get_type_string(toc->tracks[i].trktype),
cdrom_get_subtype_string(toc->tracks[i].subtype), toc->tracks[i].frames, toc->tracks[i].pregap,
submode, cdrom_get_subtype_string(toc->tracks[i].pgsub),
toc->tracks[i].postgap);
@@ -1316,7 +1315,7 @@ chd_error cdrom_write_metadata(chd_file *chd, const cdrom_toc *toc)
}
else
{
- strprintf(metadata, GDROM_TRACK_METADATA_FORMAT, i + 1, cdrom_get_type_string(toc->tracks[i].trktype),
+ metadata = string_format(GDROM_TRACK_METADATA_FORMAT, i + 1, cdrom_get_type_string(toc->tracks[i].trktype),
cdrom_get_subtype_string(toc->tracks[i].subtype), toc->tracks[i].frames, toc->tracks[i].padframes,
toc->tracks[i].pregap, cdrom_get_type_string(toc->tracks[i].pgtype),
cdrom_get_subtype_string(toc->tracks[i].pgsub), toc->tracks[i].postgap);
diff --git a/src/lib/util/corestr.cpp b/src/lib/util/corestr.cpp
index ce5976869d4..3c65bcb3db6 100644
--- a/src/lib/util/corestr.cpp
+++ b/src/lib/util/corestr.cpp
@@ -208,25 +208,6 @@ int strvprintf(std::string &str, const char *format, va_list args)
return result;
}
-int strprintf(std::string &str, const char *format, ...)
-{
- va_list ap;
- va_start(ap, format);
- int retVal = strvprintf(str, format, ap);
- va_end(ap);
- return retVal;
-}
-
-std::string strformat(const char *format, ...)
-{
- std::string retVal;
- va_list ap;
- va_start(ap, format);
- strvprintf(retVal, format, ap);
- va_end(ap);
- return retVal;
-}
-
int strcatvprintf(std::string &str, const char *format, va_list args)
{
char tempbuf[4096];
@@ -237,15 +218,6 @@ int strcatvprintf(std::string &str, const char *format, va_list args)
return result;
}
-int strcatprintf(std::string &str, const char *format, ...)
-{
- va_list ap;
- va_start(ap, format);
- int retVal = strcatvprintf(str, format, ap);
- va_end(ap);
- return retVal;
-}
-
void strdelchr(std::string& str, char chr)
{
for (size_t i = 0; i < str.length(); i++)
diff --git a/src/lib/util/corestr.h b/src/lib/util/corestr.h
index 94f13c4061b..9d06b30c9f7 100644
--- a/src/lib/util/corestr.h
+++ b/src/lib/util/corestr.h
@@ -14,6 +14,7 @@
#define __CORESTR_H__
#include "osdcore.h"
+#include "strformat.h"
#include <string.h>
@@ -66,9 +67,6 @@ char *core_i64_oct_format(UINT64 value, UINT8 mindigits);
int strvprintf(std::string &str, const char *format, va_list args);
int strcatvprintf(std::string &str, const char *format, va_list args);
-int strprintf(std::string &str, const char *format, ...) ATTR_PRINTF(2, 3);
-int strcatprintf(std::string &str, const char *format, ...) ATTR_PRINTF(2, 3);
-std::string strformat(const char *format, ...) ATTR_PRINTF(1, 2);
void strdelchr(std::string& str, char chr);
void strreplacechr(std::string& str, char ch, char newch);
diff --git a/src/lib/util/hashing.cpp b/src/lib/util/hashing.cpp
index 8e85e4a42d2..240e64af9ad 100644
--- a/src/lib/util/hashing.cpp
+++ b/src/lib/util/hashing.cpp
@@ -10,6 +10,8 @@
#include "hashing.h"
#include <zlib.h>
+#include <iomanip>
+#include <sstream>
//**************************************************************************
@@ -81,10 +83,12 @@ bool sha1_t::from_string(const char *string, int length)
std::string sha1_t::as_string() const
{
- std::string buffer;
+ std::ostringstream buffer;
+ buffer.fill('0');
+ buffer << std::hex;
for (auto & elem : m_raw)
- strcatprintf(buffer, "%02x", elem);
- return buffer;
+ buffer << std::setw(2) << unsigned(elem);
+ return buffer.str();
}
@@ -124,10 +128,12 @@ bool md5_t::from_string(const char *string, int length)
std::string md5_t::as_string() const
{
- std::string buffer;
+ std::ostringstream buffer;
+ buffer.fill('0');
+ buffer << std::hex;
for (auto & elem : m_raw)
- strcatprintf(buffer, "%02x", elem);
- return buffer;
+ buffer << std::setw(2) << unsigned(elem);
+ return buffer.str();
}
@@ -168,7 +174,7 @@ bool crc32_t::from_string(const char *string, int length)
std::string crc32_t::as_string() const
{
- return strformat("%08x", m_raw);
+ return string_format("%08x", m_raw);
}
@@ -225,7 +231,7 @@ bool crc16_t::from_string(const char *string, int length)
std::string crc16_t::as_string() const
{
- return strformat("%04x", m_raw);
+ return string_format("%04x", m_raw);
}
/**
diff --git a/src/lib/util/options.cpp b/src/lib/util/options.cpp
index 830721127ac..ccc6024c9f9 100644
--- a/src/lib/util/options.cpp
+++ b/src/lib/util/options.cpp
@@ -355,7 +355,7 @@ bool core_options::parse_command_line(int argc, char **argv, int priority, std::
auto curentry = m_entrymap.find(optionname);
if (curentry == m_entrymap.end())
{
- strcatprintf(error_string, "Error: unknown option: %s\n", curarg);
+ error_string.append(string_format("Error: unknown option: %s\n", curarg));
retval = false;
if (!is_unadorned) arg++;
continue;
@@ -367,7 +367,7 @@ bool core_options::parse_command_line(int argc, char **argv, int priority, std::
// can only have one command
if (!m_command.empty())
{
- strcatprintf(error_string,"Error: multiple commands specified -%s and %s\n", m_command.c_str(), curarg);
+ error_string.append(string_format("Error: multiple commands specified -%s and %s\n", m_command, curarg));
return false;
}
m_command = curentry->second->name();
@@ -384,7 +384,7 @@ bool core_options::parse_command_line(int argc, char **argv, int priority, std::
newdata = argv[++arg];
else
{
- strcatprintf(error_string, "Error: option %s expected a parameter\n", curarg);
+ error_string.append(string_format("Error: option %s expected a parameter\n", curarg));
return false;
}
@@ -425,7 +425,7 @@ bool core_options::parse_ini_file(core_file &inifile, int priority, int ignore_p
// if we hit the end early, print a warning and continue
if (*temp == 0)
{
- strcatprintf(error_string,"Warning: invalid line in INI: %s", buffer);
+ error_string.append(string_format("Warning: invalid line in INI: %s", buffer));
continue;
}
@@ -449,7 +449,7 @@ bool core_options::parse_ini_file(core_file &inifile, int priority, int ignore_p
if (curentry == m_entrymap.end())
{
if (priority >= ignore_priority)
- strcatprintf(error_string, "Warning: unknown option in INI: %s\n", optionname);
+ error_string.append(string_format("Warning: unknown option in INI: %s\n", optionname));
continue;
}
@@ -482,7 +482,7 @@ void core_options::revert(int priority)
std::string core_options::output_ini(const core_options *diff) const
{
// INI files are complete, so always start with a blank buffer
- std::string buffer;
+ std::ostringstream buffer;
int num_valid_headers = 0;
int unadorned_index = 0;
@@ -518,8 +518,8 @@ std::string core_options::output_ini(const core_options *diff) const
if (last_header != nullptr)
{
if (num_valid_headers++)
- strcatprintf(buffer,"\n");
- strcatprintf(buffer, "#\n# %s\n#\n", last_header);
+ buffer << '\n';
+ stream_format(buffer, "#\n# %s\n#\n", last_header);
last_header = nullptr;
}
@@ -527,15 +527,15 @@ std::string core_options::output_ini(const core_options *diff) const
if (!is_unadorned)
{
if (strchr(value, ' ') != nullptr)
- strcatprintf(buffer,"%-25s \"%s\"\n", name, value);
+ stream_format(buffer, "%-25s \"%s\"\n", name, value);
else
- strcatprintf(buffer,"%-25s %s\n", name, value);
+ stream_format(buffer, "%-25s %s\n", name, value);
}
}
}
}
}
- return buffer;
+ return buffer.str();
}
@@ -546,20 +546,20 @@ std::string core_options::output_ini(const core_options *diff) const
std::string core_options::output_help() const
{
// start empty
- std::string buffer;
+ std::ostringstream buffer;
// loop over all items
for (entry *curentry = m_entrylist.first(); curentry != nullptr; curentry = curentry->next())
{
// header: just print
if (curentry->is_header())
- strcatprintf(buffer,"\n#\n# %s\n#\n", curentry->description());
+ stream_format(buffer, "\n#\n# %s\n#\n", curentry->description());
// otherwise, output entries for all non-deprecated items
else if (curentry->description() != nullptr)
- strcatprintf(buffer,"-%-20s%s\n", curentry->name(), curentry->description());
+ stream_format(buffer, "-%-20s%s\n", curentry->name(), curentry->description());
}
- return buffer;
+ return buffer.str();
}
@@ -635,7 +635,7 @@ bool core_options::set_value(const char *name, const char *value, int priority,
auto curentry = m_entrymap.find(name);
if (curentry == m_entrymap.end())
{
- strcatprintf(error_string, "Attempted to set unknown option %s\n", name);
+ error_string.append(string_format("Attempted to set unknown option %s\n", name));
return false;
}
@@ -645,14 +645,12 @@ bool core_options::set_value(const char *name, const char *value, int priority,
bool core_options::set_value(const char *name, int value, int priority, std::string &error_string)
{
- std::string tempstr = strformat("%d", value);
- return set_value(name, tempstr.c_str(), priority, error_string);
+ return set_value(name, string_format("%d", value).c_str(), priority, error_string);
}
bool core_options::set_value(const char *name, float value, int priority, std::string &error_string)
{
- std::string tempstr = strformat("%f", (double)value);
- return set_value(name, tempstr.c_str(), priority, error_string);
+ return set_value(name, string_format("%f", value).c_str(), priority, error_string);
}
@@ -785,53 +783,53 @@ bool core_options::validate_and_set_data(core_options::entry &curentry, const ch
int ival;
switch (curentry.type())
{
- // booleans must be 0 or 1
- case OPTION_BOOLEAN:
- if (sscanf(data.c_str(), "%d", &ival) != 1 || ival < 0 || ival > 1)
- {
- strcatprintf(error_string, "Illegal boolean value for %s: \"%s\"; reverting to %s\n", curentry.name(), data.c_str(), curentry.value());
- return false;
- }
- break;
+ // booleans must be 0 or 1
+ case OPTION_BOOLEAN:
+ if (sscanf(data.c_str(), "%d", &ival) != 1 || ival < 0 || ival > 1)
+ {
+ error_string.append(string_format("Illegal boolean value for %s: \"%s\"; reverting to %s\n", curentry.name(), data.c_str(), curentry.value()));
+ return false;
+ }
+ break;
- // integers must be integral
- case OPTION_INTEGER:
- if (sscanf(data.c_str(), "%d", &ival) != 1)
- {
- strcatprintf(error_string, "Illegal integer value for %s: \"%s\"; reverting to %s\n", curentry.name(), data.c_str(), curentry.value());
- return false;
- }
- if (curentry.has_range() && (ival < atoi(curentry.minimum()) || ival > atoi(curentry.maximum())))
- {
- strcatprintf(error_string, "Out-of-range integer value for %s: \"%s\" (must be between %s and %s); reverting to %s\n", curentry.name(), data.c_str(), curentry.minimum(), curentry.maximum(), curentry.value());
- return false;
- }
- break;
+ // integers must be integral
+ case OPTION_INTEGER:
+ if (sscanf(data.c_str(), "%d", &ival) != 1)
+ {
+ error_string.append(string_format("Illegal integer value for %s: \"%s\"; reverting to %s\n", curentry.name(), data.c_str(), curentry.value()));
+ return false;
+ }
+ if (curentry.has_range() && (ival < atoi(curentry.minimum()) || ival > atoi(curentry.maximum())))
+ {
+ error_string.append(string_format("Out-of-range integer value for %s: \"%s\" (must be between %s and %s); reverting to %s\n", curentry.name(), data.c_str(), curentry.minimum(), curentry.maximum(), curentry.value()));
+ return false;
+ }
+ break;
- // floating-point values must be numeric
- case OPTION_FLOAT:
- if (sscanf(data.c_str(), "%f", &fval) != 1)
- {
- strcatprintf(error_string, "Illegal float value for %s: \"%s\"; reverting to %s\n", curentry.name(), data.c_str(), curentry.value());
- return false;
- }
- if (curentry.has_range() && ((double) fval < atof(curentry.minimum()) || (double) fval > atof(curentry.maximum())))
- {
- strcatprintf(error_string, "Out-of-range float value for %s: \"%s\" (must be between %s and %s); reverting to %s\n", curentry.name(), data.c_str(), curentry.minimum(), curentry.maximum(), curentry.value());
- return false;
- }
- break;
+ // floating-point values must be numeric
+ case OPTION_FLOAT:
+ if (sscanf(data.c_str(), "%f", &fval) != 1)
+ {
+ error_string.append(string_format("Illegal float value for %s: \"%s\"; reverting to %s\n", curentry.name(), data.c_str(), curentry.value()));
+ return false;
+ }
+ if (curentry.has_range() && ((double) fval < atof(curentry.minimum()) || (double) fval > atof(curentry.maximum())))
+ {
+ error_string.append(string_format("Out-of-range float value for %s: \"%s\" (must be between %s and %s); reverting to %s\n", curentry.name(), data.c_str(), curentry.minimum(), curentry.maximum(), curentry.value()));
+ return false;
+ }
+ break;
- // strings can be anything
- case OPTION_STRING:
- break;
+ // strings can be anything
+ case OPTION_STRING:
+ break;
- // anything else is invalid
- case OPTION_INVALID:
- case OPTION_HEADER:
- default:
- strcatprintf(error_string, "Attempted to set invalid option %s\n", curentry.name());
- return false;
+ // anything else is invalid
+ case OPTION_INVALID:
+ case OPTION_HEADER:
+ default:
+ error_string.append(string_format("Attempted to set invalid option %s\n", curentry.name()));
+ return false;
}
// set the data
diff --git a/src/lib/util/strformat.h b/src/lib/util/strformat.h
new file mode 100644
index 00000000000..4e0f4974c7d
--- /dev/null
+++ b/src/lib/util/strformat.h
@@ -0,0 +1,1453 @@
+// license:BSD-3-Clause
+// copyright-holders:Vas Crabb
+/***************************************************************************
+
+ strformat.h
+
+ type-safe printf substitutes
+
+ This header provides type-safe printf substitutes that output to
+ std::ostream- or std::string-like objects. Most format strings
+ supported by C99, SUS, glibc and MSVCRT are accepted. Not all
+ features are implemented, and semantics differ in some cases. Any
+ object with an appropriate stream output operator can be used as
+ a format argument with the %s conversion.
+
+ Since the funcitons are implemented using C++ iostream, some
+ behaviour more closely resembles iostream output operator behaviour
+ than printf behaviour. You are also exposed to bugs in your C++
+ iostream implementation (e.g. hexadecimal scientific format doesn't
+ work properly on MinGW).
+
+ These functions are designed to be forgiving - using an
+ inappropriate conversion for an argument's type just results in the
+ default conversion for the type being used. Inappropriate types or
+ out-of-range positions for parameterised field width and precision
+ are treated as if no width/precision was specified. Out-of-range
+ argument positions result in the format specification being printed.
+
+ Position specifiers for arguments (%123$), field width (*456$) and
+ precision (.*789$) are supported. Mixing explicit and implied
+ positions for arugments/widths/precisions is discouraged, although
+ it does produce deterministic behaviour.
+
+ The following format flags are recognised:
+ - "#": alternate format - sets showbase/showpoint, and also
+ boolalpha for bool with s conversion
+ - "0": pad with zeroes rather than spaces, ignored if '-' flag is
+ specified or if precision is specified for d/i/u/o/x/X
+ conversion
+ - "-": left-align output, overrides '0'
+ - " ": recognised but not implemented, ignored for u/o/x/X
+ conversion
+ - "+": show sign for positive numbers, overrides ' ', ignored for
+ u/o/x/X conversions
+ - "'": recognised for SUS compatibility but ignored (digit grouping
+ is controlled by stream locale)
+ - "I": recognised for glibc compatibility but ignored (digits are
+ controlled by stream locale)
+
+ Precision is supported for conversions by setting precision on the
+ stream. This works as expected for a/A/e/E/f/F/g/G conversions on
+ floating-point types, and may work for objects with user-defined
+ stream output operators. Precision for d/i/u/o/x/X conversions
+ (minimum digits to print) is not supported. Precision for s
+ conversions (maximum characters to print) is only honoured for
+ string-like types (output character pointer/array and
+ std::basic_string).
+
+ Length specifiers are supported but not required for d/i/u/o/x/X
+ conversions with integer/char/bool arguments. They result in the
+ value being cast to the desired type before being printed. Length
+ specifiers are ignored for other conversions.
+
+ The following length specifiers are recognised:
+ - hh: cast to char/unsigned char for d/i/u/o/x/X
+ - h: cast to short/unsigned short for d/i/u/o/x/X
+ - l: cast to long/unsigned long for d/i/u/o/x/X
+ - ll: cast to long long/unsigned long long for d/i/u/o/x/X
+ - L: always ignored
+ - j: cast to intmax_t/uintmax_t for d/i/u/o/x/X
+ - z: cast to ssize_t/size_t for d/i/u/o/x/X
+ - t: cast to ptrdiff_t for d/i/u/o/x/X
+ - I: cast to ssize_t/size_t for d/i/u/o/x/X
+ - I32: cast to int32_t/uint32_t for d/i/u/o/x/X
+ - I64: cast to int64_t/uint64_t for d/i/u/o/x/X
+ - w: always ignored
+
+ The following conversions are recognised:
+ - d/i: signed decimal for integer/char/bool types
+ - u: unsigned decimal for integer/char/bool types
+ - o: unsigned octal for integer/char/bool types
+ - x/X: lower/upppercase unsigned hexadecimal for integer/char/bool
+ types or scientific hexadecimal for floating-point types
+ - e/E: lower/uppercase scientific decimal for floating-point types
+ - f/F: lower/uppercase fixed-point decimal for floating-point types
+ - g/G: default stream output format for floating-point types (may
+ differ from printf behaviour)
+ - a/A: lower/upppercase scientific hexadecimal for floating-point
+ types or hexadecimal for integer types
+ - c/C: cast integer types to stream's character type, no automatic
+ widening or narrowing
+ - s/S: default stream output behaviour for argument
+ - p/P: cast any integer/char/bool/pointer/array to void const *
+ - m: output of std::strerror(errno), no automatic widening or
+ narrowing, does not consume an argument
+ - %: literal %, field width applied, does not consume an argument
+
+ The output stream type for stream_format must be equivalent to a
+ std::basic_ostream for duck-typing purposes. The output string for
+ string type for string_format must provide value_type, traits_type
+ and allocator_type declarations, and must be constructible from a
+ std::basic_string using the same value, traits and allocator types.
+
+ The format string type can be a pointer to a NUL-terminated string,
+ an array containing a NUL-terminated or non-terminated string, or a
+ STL contiguous container holding a string (e.g. std::string,
+ std::vector or std::array). Note that NUL characters characters are
+ only treated as terminators for pointers and arrays, they are
+ treated as normal characters for other containers. A non-contiguous
+ container (e.g. std::list or std::deque) will result in undesirable
+ behaviour likely culminating in a crash.
+
+ The value type of the format string and the character type of the
+ output stream/string need to match. You can't use a wchar_t format
+ to format char output and vice versa.
+
+ The format string encoding must have contiguous decimal digits. The
+ character encoding must not use shift states or multi-byte sequences
+ that could result in a format character codepoint appearing as part
+ of a multi-byte sequence or being interpreted differently. ASCII,
+ ISO Latin, KOI-8, UTF-8, EUC, EBCDIC, and UTF-EBCDIC encodings meet
+ these requirements, while ISO-2022, UTF-7, KOI-7 and Shift-JIS
+ encodings do not. For character types other than char and wchar_t,
+ the encoding must be a strict superset of the char encoding.
+
+ The following conditions cause assertion failures in debug builds:
+ - Unsupported conversion specifier
+ - Out-of-range argument/width/precision position
+ - Inappropriate type for parameterised width/precision
+ - Positional width/precision specifier not terminated with $
+
+ Some limitations have been described in passing. Major limitations
+ and bugs include:
+ - No automatic widening/narrowing support, so no simple way to
+ output wide characters/strings to narrow streams/strings and vice
+ versa.
+ - No support for n conversion (store characters printed so far)
+ - Precision ignored for d/i/u/o/x/X conversions (should set minimum
+ digits to print).
+ - Precisoin for s/S conversion is only honoured for string-like
+ types (output character pointer/array and std::basic_string).
+ - If the output character type is not char, signed char or unsgined
+ char, printing the a value of this type with d/i/u/o/x/X
+ conversion and no length specifier causes it to be printed as a
+ character. Can be worked around by casting to another integer
+ type or using length specifier.
+ - Printing with d/i/u/o/x/X conversions may not behave as expected
+ if the output character type is an integer type other than char,
+ signed char, unsigned char, or wchar_t.
+ - Only output character pointer/array is treated as a C string, any
+ other pointer/array will be printed as a pointer value. The
+ signed/unsigned/default char are not handled equivalently.
+ - There is no length specifier to force cast to int/unsigned. Can
+ be worked around by casting the argument.
+ - MSVCRT length specifiers I/I32/I64 will not be recognised if no
+ width or precision is specified, as they will be mistaken for
+ glibc alternate digits flag.
+ - The " " flag to prefix positive numbers with a space is not
+ implemented.
+ - The "'" and "I" flags are not implemented, as digit grouping and
+ characters are controlled by the output stream's locale.
+ - The characters used for space- and zero-padding are not locale-
+ aware.
+
+***************************************************************************/
+
+#pragma once
+
+#ifndef __MAME_UTIL_STRFORMAT_H__
+#define __MAME_UTIL_STRFORMAT_H__
+
+#include <algorithm>
+#include <array>
+#include <cassert>
+#include <cstddef>
+#include <cstdint>
+#include <cstring>
+#include <iterator>
+#include <limits>
+#include <locale>
+#include <sstream>
+#include <string>
+#include <type_traits>
+#include <utility>
+
+
+namespace detail {
+template <typename Character>
+class format_chars
+{
+public:
+ typedef Character char_type;
+ enum : Character {
+ nul = Character('\0'),
+ space = Character(' '),
+ point = Character('.'),
+ percent = Character('%'),
+ dollar = Character('$'),
+ hash = Character('#'),
+ minus = Character('-'),
+ plus = Character('+'),
+ asterisk = Character('*'),
+ quote = Character('\''),
+ zero = Character('0'),
+ nine = Character('9'),
+ a = Character('a'),
+ A = Character('A'),
+ c = Character('c'),
+ C = Character('C'),
+ d = Character('d'),
+ e = Character('e'),
+ E = Character('E'),
+ f = Character('f'),
+ F = Character('F'),
+ g = Character('g'),
+ G = Character('G'),
+ h = Character('h'),
+ i = Character('i'),
+ I = Character('I'),
+ j = Character('j'),
+ l = Character('l'),
+ L = Character('L'),
+ m = Character('m'),
+ o = Character('o'),
+ p = Character('p'),
+ s = Character('s'),
+ S = Character('S'),
+ t = Character('t'),
+ u = Character('u'),
+ w = Character('w'),
+ x = Character('x'),
+ X = Character('X'),
+ z = Character('z')
+ };
+};
+
+template <>
+class format_chars<wchar_t>
+{
+public:
+ typedef wchar_t char_type;
+ enum : wchar_t {
+ nul = L'\0',
+ space = L' ',
+ point = L'.',
+ percent = L'%',
+ dollar = L'$',
+ hash = L'#',
+ minus = L'-',
+ plus = L'+',
+ asterisk = L'*',
+ quote = L'\'',
+ zero = L'0',
+ nine = L'9',
+ a = L'a',
+ A = L'A',
+ c = L'c',
+ C = L'C',
+ d = L'd',
+ e = L'e',
+ E = L'E',
+ f = L'f',
+ F = L'F',
+ g = L'g',
+ G = L'G',
+ h = L'h',
+ i = L'i',
+ I = L'I',
+ j = L'j',
+ l = L'l',
+ L = L'L',
+ m = L'm',
+ o = L'o',
+ p = L'p',
+ s = L's',
+ S = L'S',
+ t = L't',
+ u = L'u',
+ w = L'w',
+ x = L'x',
+ X = L'X',
+ z = L'z'
+ };
+};
+
+class format_flags
+{
+public:
+ enum class positive_sign {
+ none,
+ space, // ' '
+ plus // +
+ };
+
+ enum class length {
+ unspecified,
+ character, // hh
+ short_integer, // h
+ long_integer, // l
+ long_long_integer, // ll
+ long_double, // L
+ integer_maximum, // j
+ size_type, // z, I
+ pointer_difference, // t
+ integer_32, // I32
+ integer_64, // I64
+ wide_character // w
+ };
+
+ enum class conversion {
+ unspecified,
+ signed_decimal, // i, d
+ unsigned_decimal, // u
+ octal, // o
+ hexadecimal, // x, X
+ scientific_decimal, // e, E
+ fixed_decimal, // f, F
+ floating_decimal, // g, G
+ scientific_hexadecimal, // a, A
+ character, // c, C
+ string, // s, S
+ pointer, // p
+ strerror, // m
+ percent // %
+ };
+
+ format_flags()
+ : m_alternate_format(false)
+ , m_zero_pad(false)
+ , m_left_align(false)
+ , m_positive_sign(positive_sign::none)
+ , m_digit_grouping(false)
+ , m_alternate_digits(false)
+ , m_field_width(0)
+ , m_precision(-1)
+ , m_length(length::unspecified)
+ , m_uppercase(false)
+ , m_conversion(conversion::unspecified)
+ {
+ }
+
+ template <typename Stream> void apply(Stream &stream) const
+ {
+ typedef format_chars<typename Stream::char_type> chars;
+
+ stream.unsetf(
+ Stream::basefield |
+ Stream::adjustfield |
+ Stream::floatfield |
+ Stream::boolalpha |
+ Stream::showbase |
+ Stream::showpoint |
+ Stream::showpos |
+ Stream::uppercase);
+
+ if (get_alternate_format()) stream.setf(Stream::showbase | Stream::showpoint);
+ stream.fill(get_zero_pad() ? chars::zero : chars::space);
+ stream.setf(get_left_align() ? Stream::left : get_zero_pad() ? Stream::internal : Stream::right);
+ if (positive_sign::plus == get_positive_sign()) stream.setf(Stream::showpos);
+ stream.precision((get_precision() < 0) ? 6 : get_precision());
+ stream.width(get_field_width());
+ if (get_uppercase()) stream.setf(Stream::uppercase);
+ switch (get_conversion())
+ {
+ case conversion::unspecified:
+ break;
+ case conversion::signed_decimal:
+ case conversion::unsigned_decimal:
+ stream.setf(Stream::dec);
+ break;
+ case conversion::octal:
+ stream.setf(Stream::oct);
+ break;
+ case conversion::hexadecimal:
+ stream.setf(Stream::hex | Stream::scientific | Stream::fixed);
+ break;
+ case conversion::scientific_decimal:
+ stream.setf(Stream::dec | Stream::scientific);
+ break;
+ case conversion::fixed_decimal:
+ stream.setf(Stream::dec | Stream::fixed);
+ break;
+ case conversion::floating_decimal:
+ stream.setf(Stream::dec);
+ break;
+ case conversion::scientific_hexadecimal:
+ stream.setf(Stream::hex | Stream::scientific | Stream::fixed);
+ break;
+ case conversion::character:
+ case conversion::string:
+ case conversion::pointer:
+ case conversion::strerror:
+ case conversion::percent:
+ break;
+ }
+ }
+
+ bool get_alternate_format() const { return m_alternate_format; }
+ bool get_zero_pad() const { return m_zero_pad; }
+ bool get_left_align() const { return m_left_align; }
+ positive_sign get_positive_sign() const { return m_positive_sign; }
+ bool get_digit_grouping() const { return m_digit_grouping; }
+ bool get_alternate_digits() const { return m_alternate_digits; }
+ unsigned get_field_width() const { return m_field_width; }
+ int get_precision() const { return m_precision; }
+ length get_length() const { return m_length; }
+ bool get_uppercase() const { return m_uppercase; }
+ conversion get_conversion() const { return m_conversion; }
+
+ void set_alternate_format()
+ {
+ m_alternate_format = true;
+ }
+
+ void set_zero_pad()
+ {
+ if (!m_left_align)
+ {
+ switch (m_conversion)
+ {
+ case conversion::signed_decimal:
+ case conversion::unsigned_decimal:
+ case conversion::octal:
+ case conversion::hexadecimal:
+ m_zero_pad = (0 > m_precision);
+ break;
+ default:
+ m_zero_pad = true;
+ }
+ }
+ }
+
+ void set_left_align()
+ {
+ m_zero_pad = false;
+ m_left_align = true;
+ }
+
+ void set_positive_sign_space()
+ {
+ switch (m_conversion)
+ {
+ case conversion::unsigned_decimal:
+ case conversion::octal:
+ case conversion::hexadecimal:
+ break;
+ default:
+ if (positive_sign::plus != m_positive_sign)
+ m_positive_sign = positive_sign::space;
+ }
+ }
+
+ void set_positive_sign_plus()
+ {
+ switch (m_conversion)
+ {
+ case conversion::unsigned_decimal:
+ case conversion::octal:
+ case conversion::hexadecimal:
+ break;
+ default:
+ m_positive_sign = positive_sign::plus;
+ }
+ }
+
+ void set_digit_grouping()
+ {
+ m_digit_grouping = true;
+ }
+
+ void set_alternate_digits()
+ {
+ m_alternate_digits = true;
+ }
+
+ void set_field_width(int value)
+ {
+ if (0 > value)
+ {
+ set_left_align();
+ m_field_width = unsigned(-value);
+ }
+ else
+ {
+ m_field_width = unsigned(value);
+ }
+ }
+
+ void set_precision(int value)
+ {
+ m_precision = value;
+ if (0 <= value)
+ {
+ switch (m_conversion)
+ {
+ case conversion::signed_decimal:
+ case conversion::unsigned_decimal:
+ case conversion::octal:
+ case conversion::hexadecimal:
+ m_zero_pad = false;
+ break;
+ default:
+ break;
+ }
+ }
+ }
+
+ void set_length(length value)
+ {
+ m_length = value;
+ }
+
+ void set_uppercase()
+ {
+ m_uppercase = true;
+ }
+
+ void set_conversion(conversion value)
+ {
+ m_conversion = value;
+ switch (value)
+ {
+ case conversion::unsigned_decimal:
+ case conversion::octal:
+ case conversion::hexadecimal:
+ m_positive_sign = positive_sign::none;
+ case conversion::signed_decimal:
+ if (0 <= m_precision)
+ m_zero_pad = false;
+ break;
+ default:
+ break;
+ }
+ }
+
+private:
+ bool m_alternate_format; // #
+ bool m_zero_pad; // 0
+ bool m_left_align; // -
+ positive_sign m_positive_sign; // ' ', +
+ bool m_digit_grouping; // '
+ bool m_alternate_digits; // I
+ unsigned m_field_width;
+ int m_precision; // .
+ length m_length; // hh, h, l, ll, L, j, z, I, t, w
+ bool m_uppercase; // X, E, F, G, A
+ conversion m_conversion; // i, d, u, o, x, X, e, E, f, F, g, G, a, A, c, C, s, S, p, m, %
+};
+
+template <typename Format>
+class format_helper_base : public format_chars<std::remove_cv_t<std::remove_reference_t<decltype(*std::cbegin(std::declval<Format>()))> > >
+{
+public:
+ typedef std::remove_reference_t<decltype(std::cbegin(std::declval<Format>()))> iterator;
+ static iterator begin(Format const &fmt) { return std::cbegin(fmt); }
+ static bool at_end(Format const &fmt, iterator const &it) { return std::cend(fmt) == it; }
+};
+
+template <typename Character>
+class format_helper_base<Character *> : public format_chars<std::remove_cv_t<Character> >
+{
+public:
+ typedef Character const *iterator;
+ static iterator begin(Character const *fmt) { return fmt; }
+ static bool at_end(Character const *fmt, iterator const &it) { return format_helper_base::nul == *it; }
+};
+
+template <typename Character, std::size_t Length>
+class format_helper_base<Character [Length]> : public format_chars<std::remove_cv_t<Character> >
+{
+public:
+ typedef Character const *iterator;
+ static iterator begin(Character (&fmt)[Length]) { return std::cbegin(fmt); }
+ static iterator begin(Character const (&fmt)[Length]) { return std::cbegin(fmt); }
+ static bool at_end(Character (&fmt)[Length], iterator const &it) { return (std::cend(fmt) == it) || (format_chars<Character>::nul == *it); }
+ static bool at_end(Character const (&fmt)[Length], iterator const &it) { return (std::cend(fmt) == it) || (format_helper_base::nul == *it); }
+};
+
+template <typename Format>
+class format_helper : public format_helper_base<Format>
+{
+public:
+ static bool parse_format(
+ Format const &fmt,
+ typename format_helper::iterator &it,
+ format_flags &flags,
+ int &next_position,
+ int &argument_position,
+ int &width_position,
+ int &precision_position)
+ {
+ static_assert((format_helper::nine - format_helper::zero) == 9, "Digits must be contiguous");
+ assert(!format_helper::at_end(fmt, it));
+ assert(format_helper::percent == *it);
+
+ int num;
+ int nxt(next_position);
+ ++it;
+ flags = format_flags();
+ argument_position = -1;
+ width_position = -1;
+ precision_position = -1;
+
+ // Leading zeroes are tricky - they could be a zero-pad flag or part of a position specifier
+ bool const leading_zero(!format_helper::at_end(fmt, it) && (format_helper::zero == *it));
+ while (!format_helper::at_end(fmt, it) && (format_helper::zero == *it)) ++it;
+
+ // Digits encountered at this point could be a field width or a position specifier
+ num = 0;
+ bool leading_num(have_digit(fmt, it));
+ while (have_digit(fmt, it)) add_digit(num, *it++);
+ if (leading_num && !have_dollar(fmt, it))
+ {
+ // No dollar sign, leading number is field width
+ if (leading_zero) flags.set_zero_pad();
+ flags.set_field_width(num);
+ }
+ else
+ {
+ // If we hit a dollar sign after a number, that's a position specifier
+ if ((leading_zero || leading_num) && have_dollar(fmt, it))
+ {
+ argument_position = num;
+ ++it;
+ }
+ else if (leading_zero)
+ {
+ flags.set_zero_pad();
+ }
+
+ // Parse flag characters
+ while (!format_helper::at_end(fmt, it))
+ {
+ switch (*it)
+ {
+ case format_helper::hash: ++it; flags.set_alternate_format(); continue;
+ case format_helper::zero: ++it; flags.set_zero_pad(); continue;
+ case format_helper::minus: ++it; flags.set_left_align(); continue;
+ case format_helper::space: ++it; flags.set_positive_sign_space(); continue;
+ case format_helper::plus: ++it; flags.set_positive_sign_plus(); continue;
+ case format_helper::quote: ++it; flags.set_digit_grouping(); continue;
+ case format_helper::I: ++it; flags.set_alternate_digits(); continue;
+ default: break;
+ }
+ break;
+ }
+
+ // Check for literal or parameterised field width
+ if (!format_helper::at_end(fmt, it))
+ {
+ if (is_digit(*it))
+ {
+ flags.set_field_width(read_number(fmt, it));
+ }
+ else if (format_helper::asterisk == *it)
+ {
+ ++it;
+ if (have_digit(fmt, it))
+ {
+ num = read_number(fmt, it);
+ assert(have_dollar(fmt, it)); // invalid positional width
+ if (!have_dollar(fmt, it)) return false;
+ width_position = num;
+ nxt = width_position + 1;
+ ++it;
+ }
+ else
+ {
+ width_position = nxt++;
+ }
+ }
+ }
+ }
+
+ // Check for literal or parameterised precision
+ if (!format_helper::at_end(fmt, it) && (*it == format_helper::point))
+ {
+ ++it;
+ if (have_digit(fmt, it))
+ {
+ flags.set_precision(read_number(fmt, it));
+ }
+ else if (!format_helper::at_end(fmt, it) && (format_helper::asterisk == *it))
+ {
+ ++it;
+ if (have_digit(fmt, it))
+ {
+ num = read_number(fmt, it);
+ assert(have_dollar(fmt, it)); // invalid positional precision
+ if (!have_dollar(fmt, it)) return false;
+ precision_position = num;
+ nxt = precision_position + 1;
+ ++it;
+ }
+ else
+ {
+ precision_position = nxt++;
+ }
+ }
+ else
+ {
+ flags.set_precision(0);
+ }
+ }
+
+ // Check for length modifiers
+ if (!format_helper::at_end(fmt, it)) switch (*it)
+ {
+ case format_helper::h:
+ ++it;
+ if (!format_helper::at_end(fmt, it) && (format_helper::h == *it))
+ {
+ ++it;
+ flags.set_length(format_flags::length::character);
+ }
+ else
+ {
+ flags.set_length(format_flags::length::short_integer);
+ }
+ break;
+ case format_helper::l:
+ ++it;
+ if (!format_helper::at_end(fmt, it) && (format_helper::l == *it))
+ {
+ ++it;
+ flags.set_length(format_flags::length::long_long_integer);
+ }
+ else
+ {
+ flags.set_length(format_flags::length::long_integer);
+ }
+ break;
+ case format_helper::L:
+ ++it;
+ flags.set_length(format_flags::length::long_double);
+ break;
+ case format_helper::j:
+ ++it;
+ flags.set_length(format_flags::length::integer_maximum);
+ break;
+ case format_helper::z:
+ ++it;
+ flags.set_length(format_flags::length::size_type);
+ break;
+ case format_helper::t:
+ ++it;
+ flags.set_length(format_flags::length::pointer_difference);
+ break;
+ case format_helper::I:
+ {
+ ++it;
+ format_flags::length length = format_flags::length::size_type;
+ if (!format_helper::at_end(fmt, it))
+ {
+ if ((typename format_helper::char_type(format_helper::zero) + 3) == *it)
+ {
+ typename format_helper::iterator tmp(it);
+ ++tmp;
+ if (!format_helper::at_end(fmt, tmp) && ((typename format_helper::char_type(format_helper::zero) + 2) == *tmp))
+ {
+ length = format_flags::length::integer_32;
+ it = ++tmp;
+ }
+ }
+ else if ((typename format_helper::char_type(format_helper::zero) + 6) == *it)
+ {
+ typename format_helper::iterator tmp(it);
+ ++tmp;
+ if (!format_helper::at_end(fmt, tmp) && ((typename format_helper::char_type(format_helper::zero) + 4) == *tmp))
+ {
+ length = format_flags::length::integer_64;
+ it = ++tmp;
+ }
+ }
+ }
+ flags.set_length(length);
+ }
+ break;
+ case format_helper::w:
+ ++it;
+ flags.set_length(format_flags::length::wide_character);
+ break;
+ default:
+ break;
+ }
+
+ // Now we should find a conversion specifier
+ assert(!format_helper::at_end(fmt, it)); // missing conversion
+ if (format_helper::at_end(fmt, it)) return false;
+ switch (*it)
+ {
+ case format_helper::d:
+ case format_helper::i:
+ flags.set_conversion(format_flags::conversion::signed_decimal);
+ break;
+ case format_helper::o:
+ flags.set_conversion(format_flags::conversion::octal);
+ break;
+ case format_helper::u:
+ flags.set_conversion(format_flags::conversion::unsigned_decimal);
+ break;
+ case format_helper::X:
+ flags.set_uppercase();
+ case format_helper::x:
+ flags.set_conversion(format_flags::conversion::hexadecimal);
+ break;
+ case format_helper::E:
+ flags.set_uppercase();
+ case format_helper::e:
+ flags.set_conversion(format_flags::conversion::scientific_decimal);
+ break;
+ case format_helper::F:
+ flags.set_uppercase();
+ case format_helper::f:
+ flags.set_conversion(format_flags::conversion::fixed_decimal);
+ break;
+ case format_helper::G:
+ flags.set_uppercase();
+ case format_helper::g:
+ flags.set_conversion(format_flags::conversion::floating_decimal);
+ break;
+ case format_helper::A:
+ flags.set_uppercase();
+ case format_helper::a:
+ flags.set_conversion(format_flags::conversion::scientific_hexadecimal);
+ break;
+ case format_helper::C:
+ if (format_flags::length::unspecified == flags.get_length())
+ flags.set_length(format_flags::length::long_integer);
+ case format_helper::c:
+ flags.set_conversion(format_flags::conversion::character);
+ break;
+ case format_helper::S:
+ if (format_flags::length::unspecified == flags.get_length())
+ flags.set_length(format_flags::length::long_integer);
+ case format_helper::s:
+ flags.set_conversion(format_flags::conversion::string);
+ break;
+ case format_helper::p:
+ flags.set_conversion(format_flags::conversion::pointer);
+ break;
+ case format_helper::m:
+ flags.set_conversion(format_flags::conversion::strerror);
+ break;
+ case format_helper::percent:
+ flags.set_conversion(format_flags::conversion::percent);
+ break;
+ default:
+ assert(false); // unsupported conversion
+ return false;
+ }
+ ++it;
+
+ // Finalise argument position
+ if (argument_position < 0) argument_position = nxt;
+ next_position = argument_position;
+ switch (flags.get_conversion())
+ {
+ case format_flags::conversion::strerror:
+ case format_flags::conversion::percent:
+ break;
+ default:
+ ++next_position;
+ }
+ return true;
+ }
+
+private:
+ static bool have_dollar(Format const &fmt, typename format_helper::iterator const &it)
+ {
+ return !format_helper::at_end(fmt, it) && (*it == format_helper::dollar);
+ }
+
+ static bool have_digit(Format const &fmt, typename format_helper::iterator const &it)
+ {
+ return !format_helper::at_end(fmt, it) && is_digit(*it);
+ }
+
+ static bool is_digit(typename format_helper::char_type value)
+ {
+ return (format_helper::zero <= value) && (format_helper::nine >= value);
+ }
+
+ static int digit_value(typename format_helper::char_type value)
+ {
+ assert(is_digit(value));
+ return int(std::make_signed_t<decltype(value)>(value - format_helper::zero));
+ }
+
+ static void add_digit(int &num, typename format_helper::char_type digit)
+ {
+ num = (num * 10) + digit_value(digit);
+ }
+
+ static int read_number(Format const &fmt, typename format_helper::iterator &it)
+ {
+ assert(have_digit(fmt, it));
+ int value = 0;
+ do add_digit(value, *it++); while (have_digit(fmt, it));
+ return value;
+ }
+};
+
+template <typename Stream, typename T>
+class format_output
+{
+private:
+ template <typename U> struct signed_integer_semantics
+ { static constexpr bool value = std::is_integral<U>::value && std::is_signed<U>::value; };
+ template <typename U> struct unsigned_integer_semantics
+ { static constexpr bool value = std::is_integral<U>::value && !std::is_signed<U>::value; };
+ template <typename U> struct default_semantics
+ { static constexpr bool value = !signed_integer_semantics<U>::value && !unsigned_integer_semantics<U>::value; };
+
+public:
+ template <typename U>
+ static void apply(std::enable_if_t<signed_integer_semantics<U>::value, Stream> &str, format_flags const &flags, U const &value)
+ {
+ switch (flags.get_conversion())
+ {
+ case format_flags::conversion::signed_decimal:
+ switch (flags.get_length())
+ {
+ case format_flags::length::character:
+ str << int(static_cast<signed char>(value));
+ break;
+ case format_flags::length::short_integer:
+ str << short(value);
+ break;
+ case format_flags::length::long_integer:
+ str << long(value);
+ break;
+ case format_flags::length::long_long_integer:
+ str << static_cast<long long>(value);
+ break;
+ case format_flags::length::integer_maximum:
+ str << std::intmax_t(value);
+ break;
+ case format_flags::length::size_type:
+ str << std::make_signed_t<std::size_t>(value);
+ break;
+ case format_flags::length::pointer_difference:
+ str << std::make_signed_t<std::ptrdiff_t>(value);
+ break;
+ case format_flags::length::integer_32:
+ str << std::uint32_t(std::int32_t(value));
+ break;
+ case format_flags::length::integer_64:
+ str << std::int64_t(value);
+ break;
+ default:
+ if (std::is_same<std::make_signed_t<U>, std::make_signed_t<char> >::value)
+ str << int(value);
+ else
+ str << value;
+ }
+ break;
+ case format_flags::conversion::unsigned_decimal:
+ case format_flags::conversion::octal:
+ case format_flags::conversion::hexadecimal:
+ switch (flags.get_length())
+ {
+ case format_flags::length::character:
+ str << unsigned(static_cast<unsigned char>(static_cast<signed char>(value)));
+ break;
+ case format_flags::length::short_integer:
+ str << static_cast<unsigned short>(short(value));
+ break;
+ case format_flags::length::long_integer:
+ str << static_cast<unsigned long>(long(value));
+ break;
+ case format_flags::length::long_long_integer:
+ str << static_cast<unsigned long long>(static_cast<long long>(value));
+ break;
+ case format_flags::length::integer_maximum:
+ str << std::uintmax_t(std::intmax_t(value));
+ break;
+ case format_flags::length::size_type:
+ str << std::make_unsigned_t<std::size_t>(std::make_signed_t<std::size_t>(value));
+ break;
+ case format_flags::length::pointer_difference:
+ str << std::make_unsigned_t<std::ptrdiff_t>(std::make_signed_t<std::ptrdiff_t>(value));
+ break;
+ case format_flags::length::integer_32:
+ str << std::uint32_t(std::int32_t(value));
+ break;
+ case format_flags::length::integer_64:
+ str << std::uint64_t(std::int64_t(value));
+ break;
+ default:
+ if (std::is_same<std::make_unsigned_t<U>, std::make_unsigned_t<char> >::value)
+ str << unsigned(std::make_unsigned_t<U>(value));
+ else
+ str << std::make_unsigned_t<U>(value);
+ }
+ break;
+ case format_flags::conversion::character:
+ if (std::is_signed<typename Stream::char_type>::value)
+ str << typename Stream::char_type(value);
+ else
+ str << typename Stream::char_type(std::make_signed_t<typename Stream::char_type>(value));
+ break;
+ case format_flags::conversion::pointer:
+ str << reinterpret_cast<void const *>(std::uintptr_t(std::intptr_t(value)));
+ break;
+ default:
+ str << value;
+ }
+ }
+ template <typename U>
+ static void apply(std::enable_if_t<unsigned_integer_semantics<U>::value, Stream> &str, format_flags const &flags, U const &value)
+ {
+ switch (flags.get_conversion())
+ {
+ case format_flags::conversion::signed_decimal:
+ switch (flags.get_length())
+ {
+ case format_flags::length::character:
+ str << int(static_cast<signed char>(static_cast<unsigned char>(value)));
+ break;
+ case format_flags::length::short_integer:
+ str << short(static_cast<unsigned short>(value));
+ break;
+ case format_flags::length::long_integer:
+ str << long(static_cast<unsigned long>(value));
+ break;
+ case format_flags::length::long_long_integer:
+ str << static_cast<long long>(static_cast<unsigned long long>(value));
+ break;
+ case format_flags::length::integer_maximum:
+ str << std::intmax_t(std::uintmax_t(value));
+ break;
+ case format_flags::length::size_type:
+ str << std::make_signed_t<std::size_t>(std::make_unsigned_t<std::size_t>(value));
+ break;
+ case format_flags::length::pointer_difference:
+ str << std::make_signed_t<std::ptrdiff_t>(std::make_unsigned_t<std::ptrdiff_t>(value));
+ break;
+ case format_flags::length::integer_32:
+ str << std::int32_t(std::uint32_t(value));
+ break;
+ case format_flags::length::integer_64:
+ str << std::int64_t(std::uint64_t(value));
+ break;
+ default:
+ if (std::is_same<std::make_signed_t<U>, std::make_signed_t<char> >::value)
+ str << int(std::make_signed_t<U>(value));
+ else
+ str << std::make_signed_t<U>(value);
+ }
+ break;
+ case format_flags::conversion::unsigned_decimal:
+ case format_flags::conversion::octal:
+ case format_flags::conversion::hexadecimal:
+ switch (flags.get_length())
+ {
+ case format_flags::length::character:
+ str << unsigned(static_cast<unsigned char>(value));
+ break;
+ case format_flags::length::short_integer:
+ str << static_cast<unsigned short>(value);
+ break;
+ case format_flags::length::long_integer:
+ str << static_cast<unsigned long>(value);
+ break;
+ case format_flags::length::long_long_integer:
+ str << static_cast<unsigned long long>(value);
+ break;
+ case format_flags::length::integer_maximum:
+ str << std::uintmax_t(value);
+ break;
+ case format_flags::length::size_type:
+ str << std::make_unsigned_t<std::size_t>(value);
+ break;
+ case format_flags::length::pointer_difference:
+ str << std::make_unsigned_t<std::ptrdiff_t>(value);
+ break;
+ case format_flags::length::integer_32:
+ str << std::uint32_t(std::int32_t(value));
+ break;
+ case format_flags::length::integer_64:
+ str << std::int64_t(value);
+ break;
+ default:
+ if (std::is_same<std::make_unsigned_t<U>, std::make_unsigned_t<char> >::value)
+ str << unsigned(value);
+ else
+ str << value;
+ }
+ break;
+ case format_flags::conversion::character:
+ if (std::is_signed<typename Stream::char_type>::value)
+ str << typename Stream::char_type(value);
+ else
+ str << typename Stream::char_type(std::make_signed_t<typename Stream::char_type>(value));
+ break;
+ case format_flags::conversion::pointer:
+ str << reinterpret_cast<void const *>(std::uintptr_t(value));
+ break;
+ default:
+ str << value;
+ }
+ }
+ template <typename U>
+ static void apply(std::enable_if_t<default_semantics<U>::value, Stream> &str, format_flags const &flags, U const &value)
+ {
+ str << value;
+ }
+ static void apply(Stream &str, format_flags const &flags, bool value)
+ {
+ switch (flags.get_conversion())
+ {
+ case format_flags::conversion::signed_decimal:
+ case format_flags::conversion::unsigned_decimal:
+ case format_flags::conversion::octal:
+ case format_flags::conversion::hexadecimal:
+ case format_flags::conversion::scientific_decimal:
+ case format_flags::conversion::fixed_decimal:
+ case format_flags::conversion::floating_decimal:
+ case format_flags::conversion::scientific_hexadecimal:
+ case format_flags::conversion::character:
+ case format_flags::conversion::pointer:
+ apply(str, flags, unsigned(value));
+ break;
+ default:
+ if (flags.get_alternate_format()) str.setf(Stream::boolalpha);
+ str << value;
+ }
+ }
+ template <typename CharT, typename Traits, typename Allocator>
+ static void apply(std::enable_if_t<std::is_same<CharT, typename Stream::char_type>::value, Stream> &str, format_flags const &flags, std::basic_string<CharT, Traits, Allocator> const &value)
+ {
+ int const precision(flags.get_precision());
+ if ((0 <= precision) && (value.size() > unsigned(precision)))
+ {
+ unsigned width(flags.get_field_width());
+ bool const pad(unsigned(precision) < width);
+ typename Stream::fmtflags const adjust(str.flags() & Stream::adjustfield);
+ if (!pad || (Stream::left == adjust)) str.write(&*value.begin(), unsigned(precision));
+ if (pad)
+ {
+ for (width -= precision; 0U < width; --width) str.put(str.fill());
+ if (Stream::left != adjust) str.write(&*value.begin(), unsigned(precision));
+ }
+ str.width(0);
+ }
+ else
+ {
+ str << value;
+ }
+ }
+ template <typename CharT, typename Traits, typename Allocator>
+ static void apply(std::enable_if_t<!std::is_same<CharT, typename Stream::char_type>::value, Stream> &str, format_flags const &flags, std::basic_string<CharT, Traits, Allocator> const &value)
+ {
+ int const precision(flags.get_precision());
+ if ((0 <= precision) && (value.size() > unsigned(precision)))
+ str << value.substr(0, unsigned(precision));
+ else
+ str << value;
+ }
+};
+
+template <typename Stream, typename T>
+class format_output<Stream, T *>
+{
+protected:
+ template <typename U> struct string_semantics
+ { static constexpr bool value = std::is_same<std::remove_const_t<U>, typename Stream::char_type>::value; };
+
+public:
+ template <typename U>
+ static void apply(std::enable_if_t<string_semantics<U>::value, Stream> &str, format_flags const &flags, U const *value)
+ {
+ switch (flags.get_conversion())
+ {
+ case format_flags::conversion::string:
+ {
+ int precision(flags.get_precision());
+ if (0 <= flags.get_precision())
+ {
+ std::streamsize cnt(0);
+ for ( ; (0 < precision) && (U(format_chars<U>::nul) != value[cnt]); --precision, ++cnt) { }
+ unsigned width(flags.get_field_width());
+ bool const pad(std::make_unsigned_t<std::streamsize>(cnt) < width);
+ typename Stream::fmtflags const adjust(str.flags() & Stream::adjustfield);
+ if (!pad || (Stream::left == adjust)) str.write(value, cnt);
+ if (pad)
+ {
+ for (width -= cnt; 0U < width; --width) str.put(str.fill());
+ if (Stream::left != adjust) str.write(value, cnt);
+ }
+ str.width(0);
+ }
+ else
+ {
+ str << value;
+ }
+ }
+ break;
+ case format_flags::conversion::pointer:
+ str << reinterpret_cast<void const *>(const_cast<std::remove_volatile_t<U> *>(value));
+ break;
+ default:
+ str << value;
+ }
+ }
+ template <typename U>
+ static void apply(std::enable_if_t<!string_semantics<U>::value, Stream> &str, format_flags const &flags, U const *value)
+ {
+ str << reinterpret_cast<void const *>(const_cast<std::remove_volatile_t<U> *>(value));
+ }
+};
+
+template <typename Stream, typename T, std::size_t N>
+class format_output<Stream, T[N]> : protected format_output<Stream, T *>
+{
+public:
+ template <typename U>
+ static void apply(Stream &str, format_flags const &flags, U const *value)
+ {
+ static_assert(
+ !format_output::template string_semantics<U>::value || (N <= size_t(unsigned(std::numeric_limits<int>::max()))),
+ "C string array length must not exceed maximum integer value");
+ format_flags f(flags);
+ if (format_output::template string_semantics<U>::value && ((0 > f.get_precision()) || (N < unsigned(f.get_precision()))))
+ f.set_precision(int(unsigned(N)));
+ format_output<Stream, T *>::apply(str, f, value);
+ }
+};
+
+template <typename T>
+class format_make_integer
+{
+private:
+ template <typename U> struct use_unsigned_cast
+ { static constexpr bool value = std::is_convertible<U const, unsigned>::value && std::is_unsigned<U>::value; };
+ template <typename U> struct use_signed_cast
+ { static constexpr bool value = !use_unsigned_cast<U>::value && std::is_convertible<U const, int>::value; };
+ template <typename U> struct disable
+ { static constexpr bool value = !use_unsigned_cast<U>::value && !use_signed_cast<U>::value; };
+
+public:
+ template <typename U> static std::enable_if_t<use_unsigned_cast<U>::value, bool> apply(U const &value, int &result)
+ {
+ result = int(unsigned(value));
+ return true;
+ }
+ template <typename U> static std::enable_if_t<use_signed_cast<U>::value, bool> apply(U const &value, int &result)
+ {
+ result = int(value);
+ return true;
+ }
+ template <typename U> static std::enable_if_t<disable<U>::value, bool> apply(U const &value, int &result)
+ {
+ return false;
+ }
+};
+
+template <typename Stream>
+class format_argument
+{
+public:
+ format_argument()
+ : m_value(nullptr)
+ , m_output_function(nullptr)
+ , m_make_integer_function(nullptr)
+ {
+ }
+
+ template <typename T>
+ format_argument(T const &value)
+ : m_value(reinterpret_cast<void const *>(&value))
+ , m_output_function(&static_output<T>)
+ , m_make_integer_function(&static_make_integer<T>)
+ {
+ }
+
+ void output(Stream &str, format_flags const &flags) const { m_output_function(str, flags, m_value); }
+ bool make_integer(int &result) const { return m_make_integer_function(m_value, result); }
+
+private:
+ typedef void (*output_function)(Stream &str, format_flags const &flags, void const *value);
+ typedef bool (*make_integer_function)(void const *value, int &result);
+
+ template <typename T> static void static_output(Stream &str, format_flags const &flags, void const *value)
+ {
+ format_output<Stream, T>::apply(str, flags, *reinterpret_cast<T const *>(value));
+ }
+
+ template <typename T> static bool static_make_integer(void const *value, int &result)
+ {
+ return format_make_integer<T>::apply(*reinterpret_cast<T const *>(value), result);
+ }
+
+ void const *m_value;
+ output_function m_output_function;
+ make_integer_function m_make_integer_function;
+};
+
+template <typename Stream, typename... Params>
+inline std::array<format_argument<Stream>, sizeof...(Params)> make_format_arguments(Params &&... args)
+{
+ return std::array<format_argument<Stream>, sizeof...(Params)>({ { format_argument<Stream>(std::forward<Params>(args))... } });
+}
+
+template <typename Stream, typename Format, std::size_t Count>
+void stream_format(Stream &str, Format const &fmt, std::array<format_argument<Stream>, Count> const &args)
+{
+ typedef format_helper<std::remove_reference_t<Format> > format_helper;
+ typedef typename format_helper::iterator iterator;
+ class stream_preserver
+ {
+ public:
+ stream_preserver(Stream &stream)
+ : m_stream(stream)
+ , m_fill(stream.fill())
+ , m_flags(stream.flags())
+ , m_precision(stream.precision())
+ , m_width(stream.width())
+ {
+ }
+ ~stream_preserver()
+ {
+ m_stream.width(m_width);
+ m_stream.precision(m_precision);
+ m_stream.flags(m_flags);
+ m_stream.fill(m_fill);
+ }
+ private:
+ Stream &m_stream;
+ typename Stream::char_type m_fill;
+ typename Stream::fmtflags m_flags;
+ std::streamsize m_precision;
+ std::streamsize m_width;
+ };
+
+ stream_preserver preserver(str);
+ int next_pos(1);
+ iterator start = format_helper::begin(fmt);
+ for (iterator it = start; !format_helper::at_end(fmt, start); )
+ {
+ while (!format_helper::at_end(fmt, it) && (format_helper::percent != *it)) ++it;
+ if (start != it)
+ {
+ str.write(&*start, it - start);
+ start = it;
+ }
+ if (!format_helper::at_end(fmt, it))
+ {
+ // Try to parse a percent format specification
+ format_flags flags;
+ int arg_pos, width_pos, prec_pos;
+ if (!format_helper::parse_format(fmt, it, flags, next_pos, arg_pos, width_pos, prec_pos))
+ continue;
+
+ // Handle parameterised width
+ if (0 <= width_pos)
+ {
+ assert(flags.get_field_width() == 0U);
+ assert(0 < width_pos);
+ assert(args.size() >= unsigned(width_pos));
+ if ((0 < width_pos) && (args.size() >= unsigned(width_pos)))
+ {
+ int width;
+ if (args[width_pos - 1].make_integer(width))
+ {
+ if (0 > width)
+ {
+ flags.set_left_align();
+ flags.set_field_width(unsigned(-width));
+ }
+ else
+ {
+ flags.set_field_width(unsigned(width));
+ }
+ }
+ else
+ {
+ assert(false); // inappropriate type passed as width argument
+ }
+ }
+ }
+
+ // Handle parameterised precision
+ if (0 <= prec_pos)
+ {
+ assert(flags.get_precision() < 0);
+ assert(0 < prec_pos);
+ assert(args.size() >= unsigned(prec_pos));
+ if ((0 < prec_pos) && (args.size() >= unsigned(prec_pos)))
+ {
+ int precision;
+ if (args[prec_pos - 1].make_integer(precision))
+ flags.set_precision(precision);
+ else
+ assert(false); // inappropriate type passed as precision argument
+ }
+ }
+
+ // Some conversions don't actually take an argument - get them out of the way
+ flags.apply(str);
+ if (format_flags::conversion::strerror == flags.get_conversion())
+ {
+ str << std::strerror(errno);
+ start = it;
+ }
+ else if (format_flags::conversion::percent == flags.get_conversion())
+ {
+ str << typename Stream::char_type(format_chars<typename Stream::char_type>::percent);
+ start = it;
+ }
+ else
+ {
+ assert(0 < arg_pos);
+ assert(args.size() >= unsigned(arg_pos));
+ if ((0 >= arg_pos) || (args.size() < unsigned(arg_pos)))
+ continue;
+ args[arg_pos - 1].output(str, flags);
+ start = it;
+ }
+ }
+ }
+}
+
+} // namespace detail
+
+template <typename Stream, typename Format, typename... Params>
+inline void stream_format(Stream &str, Format const &fmt, Params &&... args)
+{
+ auto const arg_pack(detail::make_format_arguments<Stream>(std::forward<Params>(args)...));
+ detail::stream_format(str, fmt, arg_pack);
+}
+
+template <typename String = std::string, typename Format, typename... Params>
+inline String string_format(Format const &fmt, Params &&... args)
+{
+ typedef std::basic_ostringstream<typename String::value_type, typename String::traits_type, typename String::allocator_type> ostream;
+ ostream str;
+ stream_format(str, fmt, std::forward<Params>(args)...);
+ return str.str();
+};
+
+template <typename String = std::string, typename Format, typename... Params>
+inline String string_format(std::locale const &locale, Format const &fmt, Params &&... args)
+{
+ typedef std::basic_ostringstream<typename String::value_type, typename String::traits_type, typename String::allocator_type> ostream;
+ ostream str;
+ str.imbue(locale);
+ stream_format(str, fmt, std::forward<Params>(args)...);
+ return str.str();
+};
+
+#endif // __MAME_UTIL_STRFORMAT_H__
diff --git a/src/mame/drivers/aim65.cpp b/src/mame/drivers/aim65.cpp
index 7bf47669d60..15240d13cfb 100644
--- a/src/mame/drivers/aim65.cpp
+++ b/src/mame/drivers/aim65.cpp
@@ -157,9 +157,9 @@ int aim65_state::load_cart(device_image_interface &image, generic_slot_device *s
if (image.software_entry() != nullptr && image.get_software_region(slot_tag) == nullptr)
{
- std::string errmsg;
- strprintf(errmsg,"Attempted to load file with wrong extension\nSocket '%s' only accepts files with '.%s' extension",
- slot_tag, slot_tag);
+ std::string errmsg = string_format(
+ "Attempted to load file with wrong extension\nSocket '%s' only accepts files with '.%s' extension",
+ slot_tag, slot_tag);
image.seterror(IMAGE_ERROR_UNSPECIFIED, errmsg.c_str());
return IMAGE_INIT_FAIL;
}
diff --git a/src/mame/drivers/bfm_sc45_helper.cpp b/src/mame/drivers/bfm_sc45_helper.cpp
index d49c449a230..4c269798ba9 100644
--- a/src/mame/drivers/bfm_sc45_helper.cpp
+++ b/src/mame/drivers/bfm_sc45_helper.cpp
@@ -155,7 +155,7 @@ int find_input_strings(running_machine &machine)
{
for (int j = 0; j < 16; j++)
{
- sc4inputs[i][j].name = strformat("IN%d-%d", i, j);
+ sc4inputs[i][j].name = string_format("IN%d-%d", i, j);
sc4inputs[i][j].used = false;
}
}
diff --git a/src/mame/drivers/cps3.cpp b/src/mame/drivers/cps3.cpp
index 8ec2c17c68a..56097b63472 100644
--- a/src/mame/drivers/cps3.cpp
+++ b/src/mame/drivers/cps3.cpp
@@ -774,7 +774,7 @@ void cps3_state::init_common(void)
// flash roms
for (int simmnum = 0; simmnum < 7; simmnum++)
for (int chipnum = 0; chipnum < 8; chipnum++)
- m_simm[simmnum][chipnum] = machine().device<fujitsu_29f016a_device>(strformat("simm%d.%d", simmnum + 1, chipnum).c_str());
+ m_simm[simmnum][chipnum] = machine().device<fujitsu_29f016a_device>(string_format("simm%d.%d", simmnum + 1, chipnum).c_str());
m_eeprom = std::make_unique<UINT32[]>(0x400/4);
machine().device<nvram_device>("eeprom")->set_base(m_eeprom.get(), 0x400);
diff --git a/src/mame/drivers/pegasus.cpp b/src/mame/drivers/pegasus.cpp
index 858c4b8249f..bb7d157b3b7 100644
--- a/src/mame/drivers/pegasus.cpp
+++ b/src/mame/drivers/pegasus.cpp
@@ -433,8 +433,9 @@ int pegasus_state::load_cart(device_image_interface &image, generic_slot_device
if (size == 0)
{
- std::string errmsg;
- strprintf(errmsg,"Attempted to load a file that does not work in this socket.\nPlease check \"Usage\" field in the software list for the correct socket(s) to use.");
+ std::string errmsg = string_format(
+ "Attempted to load a file that does not work in this socket.\n"
+ "Please check \"Usage\" field in the software list for the correct socket(s) to use.");
image.seterror(IMAGE_ERROR_UNSPECIFIED, errmsg.c_str());
return IMAGE_INIT_FAIL;
}
diff --git a/src/mame/machine/spec_snqk.cpp b/src/mame/machine/spec_snqk.cpp
index 5af12945676..da0099b1d64 100644
--- a/src/mame/machine/spec_snqk.cpp
+++ b/src/mame/machine/spec_snqk.cpp
@@ -48,26 +48,26 @@
static void log_quickload(running_machine &machine, const char *type, UINT32 start, UINT32 length, UINT32 exec, const char *exec_format)
{
- std::string tempstring;
+ std::ostringstream tempstring;
spectrum_state *state = machine.driver_data<spectrum_state>();
state->logerror("Loading %04X bytes of RAM at %04X\n", length, start);
- strcatprintf(tempstring,"Quickload type: %s Length: %d bytes\n", type, length);
- strcatprintf(tempstring,"Start: 0x%04X End: 0x%04X Exec: ", start, start + length - 1);
+ stream_format(tempstring,"Quickload type: %s Length: %d bytes\n", type, length);
+ stream_format(tempstring,"Start: 0x%04X End: 0x%04X Exec: ", start, start + length - 1);
state->logerror("Quickload loaded.\n");
if (!core_stricmp(exec_format, EXEC_NA))
- tempstring.append("N/A");
+ tempstring << "N/A";
else
{
state->logerror("Execution can resume with ");
state->logerror(exec_format, exec);
state->logerror("\n");
- strcatprintf(tempstring,exec_format, exec);
+ stream_format(tempstring,exec_format, exec);
}
- machine.ui().popup_time(10, "%s", tempstring.c_str());
+ machine.ui().popup_time(10, "%s", tempstring.str().c_str());
}
/*******************************************************************
diff --git a/src/mame/machine/thomson.cpp b/src/mame/machine/thomson.cpp
index bda8cf14c80..2ff5d6b134e 100644
--- a/src/mame/machine/thomson.cpp
+++ b/src/mame/machine/thomson.cpp
@@ -377,9 +377,7 @@ DEVICE_IMAGE_LOAD_MEMBER( thomson_state, to7_cartridge )
m_thom_cart_nb_banks = 4;
else
{
- std::string errmsg;
- strprintf(errmsg,"Invalid cartridge size %u", size);
- image.seterror(IMAGE_ERROR_UNSUPPORTED, errmsg.c_str());
+ image.seterror(IMAGE_ERROR_UNSUPPORTED, string_format("Invalid cartridge size %u", size).c_str());
return IMAGE_INIT_FAIL;
}
@@ -1508,9 +1506,7 @@ DEVICE_IMAGE_LOAD_MEMBER( thomson_state, mo5_cartridge )
m_thom_cart_nb_banks = 4;
else
{
- std::string errmsg;
- strprintf(errmsg,"Invalid cartridge size %d", (int)size);
- image.seterror(IMAGE_ERROR_UNSUPPORTED, errmsg.c_str());
+ image.seterror(IMAGE_ERROR_UNSUPPORTED, string_format("Invalid cartridge size %d", size).c_str());
return IMAGE_INIT_FAIL;
}
diff --git a/src/osd/modules/debugger/debugint.cpp b/src/osd/modules/debugger/debugint.cpp
index 40a6e2a297b..205af4e1f15 100644
--- a/src/osd/modules/debugger/debugint.cpp
+++ b/src/osd/modules/debugger/debugint.cpp
@@ -1763,8 +1763,6 @@ static void handle_menus(running_machine &machine)
static void followers_set_cpu(device_t *device)
{
- std::string title;
-
for (DView *dv = list; dv != nullptr; dv = dv->next)
{
if (dview_is_state(dv, VIEW_STATE_FOLLOW_CPU))
@@ -1775,8 +1773,7 @@ static void followers_set_cpu(device_t *device)
case DVT_DISASSEMBLY:
case DVT_STATE:
dv->view->set_source(*source);
- strprintf(title, "%s", source->name());
- dview_set_title(dv, title);
+ dview_set_title(dv, string_format("%s", source->name()));
break;
}
}
diff --git a/src/osd/modules/debugger/qt/mainwindow.cpp b/src/osd/modules/debugger/qt/mainwindow.cpp
index ef4a3ea809c..3ec15065b46 100644
--- a/src/osd/modules/debugger/qt/mainwindow.cpp
+++ b/src/osd/modules/debugger/qt/mainwindow.cpp
@@ -144,9 +144,8 @@ void MainWindow::setProcessor(device_t* processor)
m_dasmFrame->view()->verticalScrollBar()->setValue(m_dasmFrame->view()->view()->visible_position().y);
// Window title
- std::string title;
- strprintf(title,"Debug: %s - %s '%s'", m_machine->system().name, processor->name(), processor->tag());
- setWindowTitle(title.c_str());
+ string_format("Debug: %s - %s '%s'", m_machine->system().name, processor->name(), processor->tag());
+ setWindowTitle(string_format("Debug: %s - %s '%s'", m_machine->system().name, processor->name(), processor->tag()).c_str());
}
@@ -236,11 +235,11 @@ void MainWindow::toggleBreakpointAtCursor(bool changedTo)
std::string command;
if (bpindex == -1)
{
- strprintf(command,"bpset 0x%X", address);
+ command = string_format("bpset 0x%X", address);
}
else
{
- strprintf(command,"bpclear 0x%X", bpindex);
+ command = string_format("bpclear 0x%X", bpindex);
}
debug_console_execute_command(*m_machine, command.c_str(), 1);
}
@@ -265,8 +264,7 @@ void MainWindow::enableBreakpointAtCursor(bool changedTo)
if (bp != NULL)
{
INT32 const bpindex = bp->index();
- std::string command;
- strprintf(command,bp->enabled() ? "bpdisable 0x%X" : "bpenable 0x%X", bpindex);
+ std::string command = string_format(bp->enabled() ? "bpdisable 0x%X" : "bpenable 0x%X", bpindex);
debug_console_execute_command(*m_machine, command.c_str(), 1);
}
}
@@ -281,8 +279,7 @@ void MainWindow::runToCursor(bool changedTo)
if (dasmView->cursor_visible() && (debug_cpu_get_visible_cpu(*m_machine) == dasmView->source()->device()))
{
offs_t address = downcast<debug_view_disasm*>(dasmView)->selected_address();
- std::string command;
- strprintf(command,"go 0x%X", address);
+ std::string command = string_format("go 0x%X", address);
debug_console_execute_command(*m_machine, command.c_str(), 1);
}
}
@@ -475,8 +472,7 @@ void MainWindow::createImagesMenu()
image_interface_iterator iter(m_machine->root_device());
for (device_image_interface *img = iter.first(); img != NULL; img = iter.next())
{
- std::string menuName;
- strprintf(menuName,"%s : %s", img->device().name(), img->exists() ? img->filename() : "[empty slot]");
+ std::string menuName = string_format("%s : %s", img->device().name(), img->exists() ? img->filename() : "[empty slot]");
QMenu* interfaceMenu = imagesMenu->addMenu(menuName.c_str());
interfaceMenu->setObjectName(img->device().name());
diff --git a/src/osd/modules/debugger/win/consolewininfo.cpp b/src/osd/modules/debugger/win/consolewininfo.cpp
index 50c0fced670..a5423631ce4 100644
--- a/src/osd/modules/debugger/win/consolewininfo.cpp
+++ b/src/osd/modules/debugger/win/consolewininfo.cpp
@@ -43,9 +43,7 @@ consolewin_info::consolewin_info(debugger_windows_interface &debugger) :
m_devices_menu = CreatePopupMenu();
for ( ; img != NULL; img = iter.next())
{
- std::string temp;
- strprintf(temp,"%s : %s", img->device().name(), img->exists() ? img->filename() : "[no image]");
- TCHAR *tc_buf = tstring_from_utf8(temp.c_str());
+ TCHAR *tc_buf = tstring_from_utf8(string_format("%s : %s", img->device().name(), img->exists() ? img->filename() : "[no image]").c_str());
if (tc_buf != NULL)
{
AppendMenu(m_devices_menu, MF_ENABLED, 0, tc_buf);
@@ -106,9 +104,8 @@ void consolewin_info::set_cpu(device_t &device)
// then update the caption
char curtitle[256];
- std::string title;
- strprintf(title, "Debug: %s - %s '%s'", device.machine().system().name, device.name(), device.tag());
+ std::string title = string_format("Debug: %s - %s '%s'", device.machine().system().name, device.name(), device.tag());
win_get_window_text_utf8(window(), curtitle, ARRAY_LENGTH(curtitle));
if (title.compare(curtitle) != 0)
win_set_window_text_utf8(window(), title.c_str());
@@ -200,9 +197,7 @@ void consolewin_info::update_menu()
AppendMenu(devicesubmenu, flags_for_exists, new_item + DEVOPTION_CASSETTE_FASTFORWARD, TEXT("Fast Forward"));
}
- std::string temp;
- strprintf(temp,"%s :%s", img->device().name(), img->exists() ? img->filename() : "[empty slot]");
- TCHAR *tc_buf = tstring_from_utf8(temp.c_str());
+ TCHAR *tc_buf = tstring_from_utf8(string_format("%s :%s", img->device().name(), img->exists() ? img->filename() : "[empty slot]").c_str());
if (tc_buf != NULL)
{
ModifyMenu(m_devices_menu, cnt, MF_BYPOSITION | MF_POPUP, (UINT_PTR)devicesubmenu, tc_buf);
diff --git a/src/osd/modules/debugger/win/disasmbasewininfo.cpp b/src/osd/modules/debugger/win/disasmbasewininfo.cpp
index 0cc9287bb0a..597e6b54b75 100644
--- a/src/osd/modules/debugger/win/disasmbasewininfo.cpp
+++ b/src/osd/modules/debugger/win/disasmbasewininfo.cpp
@@ -197,9 +197,9 @@ bool disasmbasewin_info::handle_command(WPARAM wparam, LPARAM lparam)
{
std::string command;
if (bpindex == -1)
- strprintf(command, "bpset 0x%X", address);
+ command = string_format("bpset 0x%X", address);
else
- strprintf(command, "bpclear 0x%X", bpindex);
+ command = string_format("bpclear 0x%X", bpindex);
debug_console_execute_command(machine(), command.c_str(), 1);
}
}
@@ -229,7 +229,7 @@ bool disasmbasewin_info::handle_command(WPARAM wparam, LPARAM lparam)
else if (dasmview->source_is_visible_cpu())
{
std::string command;
- strprintf(command, bp->enabled() ? "bpdisable 0x%X" : "bpenable 0x%X", (UINT32)bp->index());
+ command = string_format(bp->enabled() ? "bpdisable 0x%X" : "bpenable 0x%X", (UINT32)bp->index());
debug_console_execute_command(machine(), command.c_str(), 1);
}
}
@@ -243,7 +243,7 @@ bool disasmbasewin_info::handle_command(WPARAM wparam, LPARAM lparam)
if (dasmview->source_is_visible_cpu())
{
std::string command;
- strprintf(command, "go 0x%X", address);
+ command = string_format("go 0x%X", address);
debug_console_execute_command(machine(), command.c_str(), 1);
}
else
diff --git a/src/osd/modules/lib/osdobj_common.h b/src/osd/modules/lib/osdobj_common.h
index d4fba565964..8152c7bfea9 100644
--- a/src/osd/modules/lib/osdobj_common.h
+++ b/src/osd/modules/lib/osdobj_common.h
@@ -118,10 +118,10 @@ public:
const char *aspect() const { return value(OSDOPTION_ASPECT); }
const char *resolution() const { return value(OSDOPTION_RESOLUTION); }
const char *view() const { return value(OSDOPTION_VIEW); }
- const char *screen(int index) const { std::string temp; strprintf(temp, "%s%d", OSDOPTION_SCREEN, index); return value(temp.c_str()); }
- const char *aspect(int index) const { std::string temp; strprintf(temp, "%s%d", OSDOPTION_ASPECT, index); return value(temp.c_str()); }
- const char *resolution(int index) const { std::string temp; strprintf(temp, "%s%d", OSDOPTION_RESOLUTION, index); return value(temp.c_str()); }
- const char *view(int index) const { std::string temp; strprintf(temp, "%s%d", OSDOPTION_VIEW, index); return value(temp.c_str()); }
+ const char *screen(int index) const { return value(string_format("%s%d", OSDOPTION_SCREEN, index).c_str()); }
+ const char *aspect(int index) const { return value(string_format("%s%d", OSDOPTION_ASPECT, index).c_str()); }
+ const char *resolution(int index) const { return value(string_format("%s%d", OSDOPTION_RESOLUTION, index).c_str()); }
+ const char *view(int index) const { return value(string_format("%s%d", OSDOPTION_VIEW, index).c_str()); }
// full screen options
bool switch_res() const { return bool_value(OSDOPTION_SWITCHRES); }
@@ -137,8 +137,8 @@ public:
bool gl_pbo() const { return bool_value(OSDOPTION_GL_PBO); }
bool gl_glsl() const { return bool_value(OSDOPTION_GL_GLSL); }
bool glsl_filter() const { return bool_value(OSDOPTION_GLSL_FILTER); }
- const char *shader_mame(int index) const { std::string temp; strprintf(temp, "%s%d", OSDOPTION_SHADER_MAME, index); return value(temp.c_str()); }
- const char *shader_screen(int index) const { std::string temp; strprintf(temp, "%s%d", OSDOPTION_SHADER_SCREEN, index); return value(temp.c_str()); }
+ const char *shader_mame(int index) const { return value(string_format("%s%d", OSDOPTION_SHADER_MAME, index).c_str()); }
+ const char *shader_screen(int index) const { return value(string_format("%s%d", OSDOPTION_SHADER_SCREEN, index).c_str()); }
// sound options
const char *sound() const { return value(OSDOPTION_SOUND); }
@@ -146,7 +146,7 @@ public:
// CoreAudio specific options
const char *audio_output() const { return value(OSDOPTION_AUDIO_OUTPUT); }
- const char *audio_effect(int index) const { std::string temp; strprintf(temp, "%s%d", OSDOPTION_AUDIO_EFFECT, index); return value(temp.c_str()); }
+ const char *audio_effect(int index) const { return value(string_format("%s%d", OSDOPTION_AUDIO_EFFECT, index).c_str()); }
private:
static const options_entry s_option_entries[];
diff --git a/src/osd/modules/render/d3d/d3dhlsl.cpp b/src/osd/modules/render/d3d/d3dhlsl.cpp
index bfc21e3c39c..17b2f411336 100644
--- a/src/osd/modules/render/d3d/d3dhlsl.cpp
+++ b/src/osd/modules/render/d3d/d3dhlsl.cpp
@@ -2257,7 +2257,7 @@ INT32 slider::update(std::string *str, INT32 newval)
}
if (str != nullptr)
{
- strprintf(*str, m_desc->format, m_desc->strings[*val_ptr]);
+ *str = string_format(m_desc->format, m_desc->strings[*val_ptr]);
}
return *val_ptr;
}
@@ -2272,7 +2272,7 @@ INT32 slider::update(std::string *str, INT32 newval)
}
if (str != nullptr)
{
- strprintf(*str, m_desc->format, *val_ptr);
+ *str = string_format(m_desc->format, *val_ptr);
}
return *val_ptr;
}
@@ -2287,7 +2287,7 @@ INT32 slider::update(std::string *str, INT32 newval)
}
if (str != nullptr)
{
- strprintf(*str, m_desc->format, *val_ptr);
+ *str = string_format(m_desc->format, *val_ptr);
}
return (INT32)floor(*val_ptr / m_desc->scale + 0.5f);
}
@@ -3273,13 +3273,11 @@ static file_error open_next(renderer_d3d9 *d3d, emu_file &file, const char *temp
else
{
// try until we succeed
- std::string seqtext;
file.set_openflags(OPEN_FLAG_READ);
for (int seq = 0; ; seq++)
{
// build up the filename
- strprintf(seqtext, "%04d_%d", seq, idx);
- strreplace(fname.assign(snapstr), "%i", seqtext.c_str());
+ strreplace(fname.assign(snapstr), "%i", string_format("%04d_%d", seq, idx).c_str());
// try to open the file; stop when we fail
file_error filerr = file.open(fname.c_str());
diff --git a/src/osd/sdl/osdsdl.h b/src/osd/sdl/osdsdl.h
index bca299eb49d..7b3e83c3134 100644
--- a/src/osd/sdl/osdsdl.h
+++ b/src/osd/sdl/osdsdl.h
@@ -113,11 +113,11 @@ public:
const char *keymap_file() const { return value(SDLOPTION_KEYMAP_FILE); }
// joystick mapping
- const char *joy_index(int index) const { return value(strformat("%s%d", SDLOPTION_JOYINDEX, index).c_str()); }
+ const char *joy_index(int index) const { return value(string_format("%s%d", SDLOPTION_JOYINDEX, index).c_str()); }
bool sixaxis() const { return bool_value(SDLOPTION_SIXAXIS); }
- const char *mouse_index(int index) const { return value(strformat("%s%d", SDLOPTION_MOUSEINDEX, index).c_str()); }
- const char *keyboard_index(int index) const { return value(strformat("%s%d", SDLOPTION_KEYBINDEX, index).c_str()); }
+ const char *mouse_index(int index) const { return value(string_format("%s%d", SDLOPTION_MOUSEINDEX, index).c_str()); }
+ const char *keyboard_index(int index) const { return value(string_format("%s%d", SDLOPTION_KEYBINDEX, index).c_str()); }
const char *video_driver() const { return value(SDLOPTION_VIDEODRIVER); }
const char *render_driver() const { return value(SDLOPTION_RENDERDRIVER); }
diff --git a/src/osd/windows/winmain.cpp b/src/osd/windows/winmain.cpp
index bd2e9c4b11e..1171775d042 100644
--- a/src/osd/windows/winmain.cpp
+++ b/src/osd/windows/winmain.cpp
@@ -590,11 +590,9 @@ void windows_osd_interface::init(running_machine &machine)
osd_common_t::init_subsystems();
// notify listeners of screen configuration
- std::string tempstring;
for (win_window_info *info = win_window_list; info != nullptr; info = info->m_next)
{
- strprintf(tempstring, "Orientation(%s)", info->m_monitor->devicename());
- machine.output().set_value(tempstring.c_str(), info->m_targetorient);
+ machine.output().set_value(string_format("Orientation(%s)", info->m_monitor->devicename()).c_str(), info->m_targetorient);
}
// hook up the debugger log
@@ -1029,7 +1027,7 @@ symbol_manager::symbol_manager(const char *argv0)
#endif
// expand the buffer to be decently large up front
- strprintf(m_buffer,"%500s", "");
+ m_buffer = string_format("%500s", "");
}
@@ -1296,13 +1294,13 @@ bool symbol_manager::parse_map_line(const char *line, FPTR &address, std::string
void symbol_manager::format_symbol(const char *name, UINT32 displacement, const char *filename, int linenumber)
{
// start with the address and offset
- strprintf(m_buffer, " (%s", name);
+ m_buffer = string_format(" (%s", name);
if (displacement != 0)
- strcatprintf(m_buffer, "+0x%04x", (UINT32)displacement);
+ m_buffer.append(string_format("+0x%04x", (UINT32)displacement));
// append file/line if present
if (filename != nullptr)
- strcatprintf(m_buffer, ", %s:%d", filename, linenumber);
+ m_buffer.append(string_format(", %s:%d", filename, linenumber));
// close up the string
m_buffer.append(")");
diff --git a/src/tools/chdman.cpp b/src/tools/chdman.cpp
index 8a2f8bc5299..94ea358e825 100644
--- a/src/tools/chdman.cpp
+++ b/src/tools/chdman.cpp
@@ -840,8 +840,7 @@ const char *big_int_string(std::string &str, UINT64 intvalue)
int chunk = intvalue % 1000;
intvalue /= 1000;
- std::string insert;
- strprintf(insert, (intvalue != 0) ? "%03d" : "%d", chunk);
+ std::string insert = string_format((intvalue != 0) ? "%03d" : "%d", chunk);
if (!first)
str.insert(0, ",").c_str();
@@ -859,7 +858,7 @@ const char *big_int_string(std::string &str, UINT64 intvalue)
const char *msf_string_from_frames(std::string &str, UINT32 frames)
{
- strprintf(str, "%02d:%02d:%02d", frames / (75 * 60), (frames / 75) % 60, frames % 75);
+ str = string_format("%02d:%02d:%02d", frames / (75 * 60), (frames / 75) % 60, frames % 75);
return str.c_str();
}
@@ -1249,7 +1248,7 @@ void output_track_metadata(int mode, core_file *file, int tracknum, const cdrom_
{
case CD_TRACK_MODE1:
case CD_TRACK_MODE1_RAW:
- strprintf(tempstr,"MODE1/%04d", info.datasize);
+ tempstr = string_format("MODE1/%04d", info.datasize);
break;
case CD_TRACK_MODE2:
@@ -1257,7 +1256,7 @@ void output_track_metadata(int mode, core_file *file, int tracknum, const cdrom_
case CD_TRACK_MODE2_FORM2:
case CD_TRACK_MODE2_FORM_MIX:
case CD_TRACK_MODE2_RAW:
- strprintf(tempstr,"MODE2/%04d", info.datasize);
+ tempstr = string_format("MODE2/%04d", info.datasize);
break;
case CD_TRACK_AUDIO:
@@ -1301,9 +1300,9 @@ void output_track_metadata(int mode, core_file *file, int tracknum, const cdrom_
// write out the track type
std::string modesubmode;
if (info.subtype != CD_SUB_NONE)
- strprintf(modesubmode,"%s %s", cdrom_get_type_string(info.trktype), cdrom_get_subtype_string(info.subtype));
+ modesubmode = string_format("%s %s", cdrom_get_type_string(info.trktype), cdrom_get_subtype_string(info.subtype));
else
- strprintf(modesubmode,"%s", cdrom_get_type_string(info.trktype));
+ modesubmode = string_format("%s", cdrom_get_type_string(info.trktype));
core_fprintf(file, "TRACK %s\n", modesubmode.c_str());
// write out the attributes
@@ -1819,8 +1818,7 @@ static void do_create_hd(parameters_t &params)
report_error(1, "Error creating CHD file (%s): %s", output_chd_str->c_str(), chd_file::error_string(err));
// add the standard hard disk metadata
- std::string metadata;
- strprintf(metadata, HARD_DISK_METADATA_FORMAT, cylinders, heads, sectors, sector_size);
+ std::string metadata = string_format(HARD_DISK_METADATA_FORMAT, cylinders, heads, sectors, sector_size);
err = chd->write_metadata(HARD_DISK_METADATA_TAG, 0, metadata);
if (err != CHDERR_NONE)
report_error(1, "Error adding hard disk metadata: %s", chd_file::error_string(err));
@@ -2040,8 +2038,7 @@ static void do_create_ld(parameters_t &params)
report_error(1, "Error creating CHD file (%s): %s", output_chd_str->c_str(), chd_file::error_string(err));
// write the core A/V metadata
- std::string metadata;
- strprintf(metadata, AV_METADATA_FORMAT, info.fps_times_1million / 1000000, info.fps_times_1million % 1000000, info.width, info.height, info.interlaced, info.channels, info.rate);
+ std::string metadata = string_format(AV_METADATA_FORMAT, info.fps_times_1million / 1000000, info.fps_times_1million % 1000000, info.width, info.height, info.interlaced, info.channels, info.rate);
err = chd->write_metadata(AV_METADATA_TAG, 0, metadata);
if (err != CHDERR_NONE)
report_error(1, "Error adding AV metadata: %s\n", chd_file::error_string(err));
diff --git a/src/tools/imgtool/imghd.cpp b/src/tools/imgtool/imghd.cpp
index b3161ae2caf..715076b63b4 100644
--- a/src/tools/imgtool/imghd.cpp
+++ b/src/tools/imgtool/imghd.cpp
@@ -49,19 +49,15 @@ static imgtoolerr_t map_chd_error(chd_error chderr)
imgtoolerr_t imghd_create(imgtool_stream *stream, UINT32 hunksize, UINT32 cylinders, UINT32 heads, UINT32 sectors, UINT32 seclen)
{
imgtoolerr_t err = IMGTOOLERR_SUCCESS;
- dynamic_buffer cache;
chd_file chd;
chd_error rc;
- UINT64 logicalbytes;
- int hunknum, totalhunks;
- std::string metadata;
chd_codec_type compression[4] = { CHD_CODEC_NONE };
/* sanity check args */
if (hunksize >= 2048)
{
err = IMGTOOLERR_PARAMCORRUPT;
- goto done;
+ return err;
}
if (hunksize <= 0)
hunksize = 1024; /* default value */
@@ -70,18 +66,18 @@ imgtoolerr_t imghd_create(imgtool_stream *stream, UINT32 hunksize, UINT32 cylind
if (stream_isreadonly(stream))
{
err = IMGTOOLERR_READONLY;
- goto done;
+ return err;
}
/* calculations */
- logicalbytes = (UINT64)cylinders * heads * sectors * seclen;
+ const UINT64 logicalbytes = (UINT64)cylinders * heads * sectors * seclen;
/* create the new hard drive */
rc = chd.create(*stream_core_file(stream), logicalbytes, hunksize, seclen, compression);
if (rc != CHDERR_NONE)
{
err = map_chd_error(rc);
- goto done;
+ return err;
}
/* open the new hard drive */
@@ -90,35 +86,35 @@ imgtoolerr_t imghd_create(imgtool_stream *stream, UINT32 hunksize, UINT32 cylind
if (rc != CHDERR_NONE)
{
err = map_chd_error(rc);
- goto done;
+ return err;
}
/* write the metadata */
- strprintf(metadata,HARD_DISK_METADATA_FORMAT, cylinders, heads, sectors, seclen);
+ const std::string metadata = string_format(HARD_DISK_METADATA_FORMAT, cylinders, heads, sectors, seclen);
err = (imgtoolerr_t)chd.write_metadata(HARD_DISK_METADATA_TAG, 0, metadata);
if (rc != CHDERR_NONE)
{
err = map_chd_error(rc);
- goto done;
+ return err;
}
/* alloc and zero buffer */
+ dynamic_buffer cache;
cache.resize(hunksize);
memset(&cache[0], 0, hunksize);
/* zero out every hunk */
- totalhunks = (logicalbytes + hunksize - 1) / hunksize;
- for (hunknum = 0; hunknum < totalhunks; hunknum++)
+ const int totalhunks = (logicalbytes + hunksize - 1) / hunksize;
+ for (int hunknum = 0; hunknum < totalhunks; hunknum++)
{
rc = chd.write_units(hunknum, &cache[0]);
if (rc)
{
err = IMGTOOLERR_WRITEERROR;
- goto done;
+ return err;
}
}
-done:
return err;
}
diff --git a/src/tools/regrep.cpp b/src/tools/regrep.cpp
index d533121574a..16eaa21f7de 100644
--- a/src/tools/regrep.cpp
+++ b/src/tools/regrep.cpp
@@ -686,7 +686,7 @@ static void output_report(std::string &dirname, std::string &tempheader, std::st
*buckettailptr[bucknum] = nullptr;
/* output header */
- strprintf(tempname,"%s" PATH_SEPARATOR "%s", dirname.c_str(), "index.html");
+ tempname = string_format("%s" PATH_SEPARATOR "%s", dirname.c_str(), "index.html");
indexfile = create_file_and_output_header(tempname, tempheader, title);
if (indexfile == nullptr)
{
@@ -732,7 +732,7 @@ static int compare_screenshots(summary_file *curfile)
core_file *file;
/* get the filename for the image */
- strprintf(fullname,"%s" PATH_SEPARATOR "snap" PATH_SEPARATOR "%s" PATH_SEPARATOR "final.png", lists[listnum].dir, curfile->name);
+ fullname = string_format("%s" PATH_SEPARATOR "snap" PATH_SEPARATOR "%s" PATH_SEPARATOR "final.png", lists[listnum].dir, curfile->name);
/* open the file */
filerr = core_fopen(fullname.c_str(), OPEN_FLAG_READ, &file);
@@ -741,7 +741,7 @@ static int compare_screenshots(summary_file *curfile)
if (filerr != FILERR_NONE)
{
/* get the filename for the image */
- strprintf(fullname, "%s" PATH_SEPARATOR "snap" PATH_SEPARATOR "_%s.png", lists[listnum].dir, curfile->name);
+ fullname = string_format("%s" PATH_SEPARATOR "snap" PATH_SEPARATOR "_%s.png", lists[listnum].dir, curfile->name);
/* open the file */
filerr = core_fopen(fullname.c_str(), OPEN_FLAG_READ, &file);
@@ -843,14 +843,14 @@ static int generate_png_diff(const summary_file *curfile, std::string &destdir,
int starty;
/* generate the common source filename */
- strprintf(dstfilename,"%s" PATH_SEPARATOR "%s", destdir.c_str(), destname);
- strprintf(srcimgname,"snap" PATH_SEPARATOR "%s" PATH_SEPARATOR "final.png", curfile->name);
+ dstfilename = string_format("%s" PATH_SEPARATOR "%s", destdir.c_str(), destname);
+ srcimgname = string_format("snap" PATH_SEPARATOR "%s" PATH_SEPARATOR "final.png", curfile->name);
/* open and load all unique bitmaps */
for (listnum = 0; listnum < list_count; listnum++)
if (curfile->matchbitmap[listnum] == listnum)
{
- strprintf(tempname, "%s" PATH_SEPARATOR "%s", lists[listnum].dir, srcimgname.c_str());
+ tempname = string_format("%s" PATH_SEPARATOR "%s", lists[listnum].dir, srcimgname.c_str());
/* open the source image */
filerr = core_fopen(tempname.c_str(), OPEN_FLAG_READ, &file);
@@ -957,11 +957,11 @@ static void create_linked_file(std::string &dirname, const summary_file *curfile
int listnum;
/* create the filename */
- strprintf(filename,"%s.html", curfile->name);
+ filename = string_format("%s.html", curfile->name);
/* output header */
- strprintf(title, "%s Regressions (%s)", curfile->name, curfile->source);
- strprintf(linkname,"%s" PATH_SEPARATOR "%s", dirname.c_str(), filename.c_str());
+ title = string_format("%s Regressions (%s)", curfile->name, curfile->source);
+ linkname = string_format("%s" PATH_SEPARATOR "%s", dirname.c_str(), filename.c_str());
linkfile = create_file_and_output_header(linkname, tempheader, title);
if (linkfile == nullptr)
{
diff --git a/src/tools/split.cpp b/src/tools/split.cpp
index 043d93b3a78..a6b97e7175d 100644
--- a/src/tools/split.cpp
+++ b/src/tools/split.cpp
@@ -152,7 +152,7 @@ static int split_file(const char *filename, const char *basename, UINT32 splitsi
core_fprintf(splitfile, "hash=%s file=%s.%03d\n", computedhash.c_str(), basefilename.c_str(), partnum);
// compute the full filename for this guy
- strprintf(outfilename,"%s.%03d", basename, partnum);
+ outfilename = string_format("%s.%03d", basename, partnum);
// create it
filerr = core_fopen(outfilename.c_str(), OPEN_FLAG_WRITE | OPEN_FLAG_CREATE, &outfile);
diff --git a/src/tools/src2html.cpp b/src/tools/src2html.cpp
index e5d2f8f496c..a93d7de73b8 100644
--- a/src/tools/src2html.cpp
+++ b/src/tools/src2html.cpp
@@ -332,7 +332,7 @@ static int recurse_dir(int srcrootlen, int dstrootlen, std::string &srcdir, std:
// create an index file
std::string indexname;
- strprintf(indexname,"%s%c%s", dstdir.c_str(), PATH_SEPARATOR[0], "index.html");
+ indexname = string_format("%s%c%s", dstdir.c_str(), PATH_SEPARATOR[0], "index.html");
core_file *indexfile = create_file_and_output_header(indexname, tempheader, srcdir_subpath);
// output the directory navigation
@@ -402,7 +402,7 @@ static int recurse_dir(int srcrootlen, int dstrootlen, std::string &srcdir, std:
// build the source filename
std::string srcfile;
- strprintf(srcfile, "%s%c%s", srcdir.c_str(), PATH_SEPARATOR[0], curlist->name.c_str());
+ srcfile = string_format("%s%c%s", srcdir.c_str(), PATH_SEPARATOR[0], curlist->name.c_str());
// if we have a file, output it
std::string dstfile;
@@ -420,7 +420,7 @@ static int recurse_dir(int srcrootlen, int dstrootlen, std::string &srcdir, std:
// if we got a valid file, process it
if (type != FILE_TYPE_INVALID)
{
- strprintf(dstfile, "%s%c%s.html", dstdir.c_str(), PATH_SEPARATOR[0], curlist->name.c_str());
+ dstfile = string_format("%s%c%s.html", dstdir.c_str(), PATH_SEPARATOR[0], curlist->name.c_str());
if (indexfile != nullptr)
core_fprintf(indexfile, "\t<li><a href=\"%s.html\">%s</a></li>\n", curlist->name.c_str(), curlist->name.c_str());
result = output_file(type, srcrootlen, dstrootlen, srcfile, dstfile, srcdir.compare(dstdir) == 0, tempheader, tempfooter);
@@ -430,7 +430,7 @@ static int recurse_dir(int srcrootlen, int dstrootlen, std::string &srcdir, std:
// if we have a directory, recurse
else
{
- strprintf(dstfile, "%s%c%s", dstdir.c_str(), PATH_SEPARATOR[0], curlist->name.c_str());
+ dstfile = string_format("%s%c%s", dstdir.c_str(), PATH_SEPARATOR[0], curlist->name.c_str());
if (indexfile != nullptr)
core_fprintf(indexfile, "\t<li><a href=\"%s/index.html\">%s/</a></li>\n", curlist->name.c_str(), curlist->name.c_str());
result = recurse_dir(srcrootlen, dstrootlen, srcfile, dstfile, tempheader, tempfooter);
@@ -544,11 +544,12 @@ static int output_file(file_type type, int srcrootlen, int dstrootlen, std::stri
int linenum = 1;
bool in_comment = false;
char srcline[4096];
+ std::ostringstream dstline;
while (core_fgets(srcline, ARRAY_LENGTH(srcline), src) != nullptr)
{
// start with the line number
- std::string dstline;
- strcatprintf(dstline, "<span class=\"linenum\">%5d</span>&nbsp;&nbsp;", linenum++);
+ dstline.str("");
+ stream_format(dstline, "<span class=\"linenum\">%5d</span>&nbsp;&nbsp;", linenum++);
// iterate over characters in the source line
bool escape = false;
@@ -568,7 +569,7 @@ static int output_file(file_type type, int srcrootlen, int dstrootlen, std::stri
{
if (!in_comment && ch == comment_start[0] && strncmp(srcptr - 1, comment_start, strlen(comment_start)) == 0)
{
- strcatprintf(dstline, "<span class=\"comment\">%s", comment_start_esc);
+ stream_format(dstline, "<span class=\"comment\">%s", comment_start_esc);
curcol += strlen(comment_start);
srcptr += strlen(comment_start) - 1;
ch = 0;
@@ -576,7 +577,7 @@ static int output_file(file_type type, int srcrootlen, int dstrootlen, std::stri
}
else if (in_comment && ch == comment_end[0] && strncmp(srcptr - 1, comment_end, strlen(comment_end)) == 0)
{
- strcatprintf(dstline, "%s</span>", comment_end_esc);
+ stream_format(dstline, "%s</span>", comment_end_esc);
curcol += strlen(comment_end);
srcptr += strlen(comment_end) - 1;
ch = 0;
@@ -587,7 +588,7 @@ static int output_file(file_type type, int srcrootlen, int dstrootlen, std::stri
// track whether or not we are within an inline (C++-style) comment
if (!in_quotes && !in_comment && !in_inline_comment && ch == comment_inline[0] && strncmp(srcptr - 1, comment_inline, strlen(comment_inline)) == 0)
{
- strcatprintf(dstline, "<span class=\"comment\">%s", comment_inline_esc);
+ stream_format(dstline, "<span class=\"comment\">%s", comment_inline_esc);
curcol += strlen(comment_inline);
srcptr += strlen(comment_inline) - 1;
ch = 0;
@@ -611,7 +612,7 @@ static int output_file(file_type type, int srcrootlen, int dstrootlen, std::stri
for (curtoken = token_table; curtoken->token != nullptr; curtoken++)
if (strncmp(srcptr - 1, curtoken->token, toklength) == 0 && strlen(curtoken->token) == toklength)
{
- strcatprintf(dstline, "<span class=\"%s\">%s</span>", curtoken->color, curtoken->token);
+ stream_format(dstline, "<span class=\"%s\">%s</span>", curtoken->color, curtoken->token);
curcol += strlen(curtoken->token);
srcptr += strlen(curtoken->token) - 1;
ch = 0;
@@ -631,7 +632,7 @@ static int output_file(file_type type, int srcrootlen, int dstrootlen, std::stri
int spaces = 4 - curcol % 4;
while (spaces--)
{
- dstline.push_back(' ');
+ dstline.put(' ');
curcol++;
}
}
@@ -643,9 +644,9 @@ static int output_file(file_type type, int srcrootlen, int dstrootlen, std::stri
if (!in_comment && !in_inline_comment && !in_quotes && (ch == '"' || ch == '\''))
{
if (color_quotes)
- strcatprintf(dstline, "<span class=\"string\">%c", ch);
+ stream_format(dstline, "<span class=\"string\">%c", ch);
else
- dstline.push_back(ch);
+ dstline.put(ch);
in_quotes = true;
curquote = ch;
@@ -659,7 +660,7 @@ static int output_file(file_type type, int srcrootlen, int dstrootlen, std::stri
std::string target;
if (find_include_file(target, srcrootlen, dstrootlen, srcfile, dstfile, filename))
{
- strcatprintf(dstline, "<a href=\"%s\">", target.c_str());
+ stream_format(dstline, "<a href=\"%s\">", target.c_str());
quotes_are_linked = true;
}
}
@@ -670,11 +671,11 @@ static int output_file(file_type type, int srcrootlen, int dstrootlen, std::stri
else if (!in_comment && !in_inline_comment && in_quotes && (ch == curquote) && !escape)
{
if (quotes_are_linked)
- dstline.append("</a>");
+ dstline << "</a>";
if (color_quotes)
- strcatprintf(dstline, "%c</span>", ch);
+ stream_format(dstline, "%c</span>", ch);
else
- dstline.push_back(ch);
+ dstline.put(ch);
in_quotes = false;
curquote = 0;
quotes_are_linked = false;
@@ -682,13 +683,13 @@ static int output_file(file_type type, int srcrootlen, int dstrootlen, std::stri
// else just output the current character
else if (ch == '&')
- dstline.append("&amp;");
+ dstline << "&amp;";
else if (ch == '<')
- dstline.append("&lt;");
+ dstline << "&lt;";
else if (ch == '>')
- dstline.append("&gt;");
+ dstline << "&gt;";
else
- dstline.push_back(ch);
+ dstline.put(ch);
curcol++;
}
@@ -700,13 +701,13 @@ static int output_file(file_type type, int srcrootlen, int dstrootlen, std::stri
// finish inline comments
if (in_inline_comment)
{
- dstline.append("</span>");
+ dstline << "</span>";
in_inline_comment = false;
}
// append a break and move on
- dstline.append("\n");
- core_fputs(dst, dstline.c_str());
+ dstline.put('\n');
+ core_fputs(dst, dstline.str().c_str());
}
// close tags