From 4cf33cfe0a427d24d754c134eb94b9d1a67da637 Mon Sep 17 00:00:00 2001 From: Vas Crabb Date: Sun, 26 Mar 2023 01:32:50 +1100 Subject: Various optimisations to code generaton. util/bitmap.cpp, util/palette.cpp: Marked lots of things constexpr. Bitmaps don't throw exceptions on allocation failure, they just become invalid. Almost nothing in MAME actually checks for this. emu/profiler.cpp: Abort if the profile stack overflows rather than throwing an exception. This is a developer feature and if it overflows, the code is broken. Calling a noreturn noexcept function generates less code than throwing an exception, which adds up. util/strformat.cpp: Traded away some unnecessary flexibility for more compact code. The stream objects must derive from std::basic_ostream now - they can't just be any old objects with the expected operators. --- scripts/src/bus.lua | 226 +++---- src/devices/bus/isa/hpblp.cpp | 3 +- src/devices/bus/isa/hpblp.h | 1 + src/devices/cpu/drcuml.cpp | 2 +- src/devices/cpu/drcuml.h | 2 +- src/emu/debug/debugcon.cpp | 8 +- src/emu/debug/debugcon.h | 8 +- src/emu/debug/debugcpu.cpp | 6 +- src/emu/debug/debugcpu.h | 6 +- src/emu/devcpu.cpp | 11 +- src/emu/devcpu.h | 2 +- src/emu/emucore.cpp | 4 +- src/emu/emucore.h | 8 +- src/emu/fileio.cpp | 2 +- src/emu/fileio.h | 2 +- src/emu/machine.cpp | 2 +- src/emu/machine.h | 2 +- src/emu/profiler.cpp | 2 +- src/emu/profiler.h | 58 +- src/emu/validity.cpp | 2 +- src/emu/validity.h | 2 +- src/frontend/mame/luaengine.cpp | 2 +- src/lib/util/bitmap.cpp | 30 +- src/lib/util/bitmap.h | 198 +++--- src/lib/util/corefile.cpp | 8 +- src/lib/util/corefile.h | 2 +- src/lib/util/palette.cpp | 40 +- src/lib/util/palette.h | 56 +- src/lib/util/strformat.cpp | 747 ++++------------------ src/lib/util/strformat.h | 941 +++++++--------------------- src/osd/eminline.h | 2 +- src/osd/modules/lib/osdobj_common.cpp | 2 +- src/osd/modules/lib/osdobj_common.h | 2 +- src/osd/modules/render/bgfx/statereader.cpp | 4 +- src/osd/modules/render/bgfx/statereader.h | 4 +- src/osd/osdcore.cpp | 16 +- src/osd/osdcore.h | 20 +- src/osd/windows/winmain.cpp | 2 +- 38 files changed, 709 insertions(+), 1726 deletions(-) diff --git a/scripts/src/bus.lua b/scripts/src/bus.lua index d5658030f0b..a06a1a43aea 100644 --- a/scripts/src/bus.lua +++ b/scripts/src/bus.lua @@ -1625,104 +1625,105 @@ if (BUSES["ISA"]~=null) then MAME_DIR .. "src/devices/bus/isa/isa.h", MAME_DIR .. "src/devices/bus/isa/isa_cards.cpp", MAME_DIR .. "src/devices/bus/isa/isa_cards.h", - MAME_DIR .. "src/devices/bus/isa/mda.cpp", - MAME_DIR .. "src/devices/bus/isa/mda.h", - MAME_DIR .. "src/devices/bus/isa/wdxt_gen.cpp", - MAME_DIR .. "src/devices/bus/isa/wdxt_gen.h", + MAME_DIR .. "src/devices/bus/isa/3c503.cpp", + MAME_DIR .. "src/devices/bus/isa/3c503.h", + MAME_DIR .. "src/devices/bus/isa/3c505.cpp", + MAME_DIR .. "src/devices/bus/isa/3c505.h", + MAME_DIR .. "src/devices/bus/isa/3xtwin.cpp", + MAME_DIR .. "src/devices/bus/isa/3xtwin.h", + MAME_DIR .. "src/devices/bus/isa/acb2072.cpp", + MAME_DIR .. "src/devices/bus/isa/acb2072.h", MAME_DIR .. "src/devices/bus/isa/adlib.cpp", MAME_DIR .. "src/devices/bus/isa/adlib.h", + MAME_DIR .. "src/devices/bus/isa/aga.cpp", + MAME_DIR .. "src/devices/bus/isa/aga.h", + MAME_DIR .. "src/devices/bus/isa/aha1542b.cpp", + MAME_DIR .. "src/devices/bus/isa/aha1542b.h", + MAME_DIR .. "src/devices/bus/isa/aha1542c.cpp", + MAME_DIR .. "src/devices/bus/isa/aha1542c.h", + MAME_DIR .. "src/devices/bus/isa/aha174x.cpp", + MAME_DIR .. "src/devices/bus/isa/aha174x.h", + MAME_DIR .. "src/devices/bus/isa/asc88.cpp", + MAME_DIR .. "src/devices/bus/isa/asc88.h", + MAME_DIR .. "src/devices/bus/isa/bblue2.cpp", + MAME_DIR .. "src/devices/bus/isa/bblue2.h", + MAME_DIR .. "src/devices/bus/isa/bt54x.cpp", + MAME_DIR .. "src/devices/bus/isa/bt54x.h", + MAME_DIR .. "src/devices/bus/isa/cga.cpp", + MAME_DIR .. "src/devices/bus/isa/cga.h", MAME_DIR .. "src/devices/bus/isa/chessmdr.cpp", MAME_DIR .. "src/devices/bus/isa/chessmdr.h", MAME_DIR .. "src/devices/bus/isa/chessmsr.cpp", MAME_DIR .. "src/devices/bus/isa/chessmsr.h", + MAME_DIR .. "src/devices/bus/isa/cl_sh260.cpp", + MAME_DIR .. "src/devices/bus/isa/cl_sh260.h", MAME_DIR .. "src/devices/bus/isa/com.cpp", MAME_DIR .. "src/devices/bus/isa/com.h", + MAME_DIR .. "src/devices/bus/isa/dcb.cpp", + MAME_DIR .. "src/devices/bus/isa/dcb.h", + MAME_DIR .. "src/devices/bus/isa/dectalk.cpp", + MAME_DIR .. "src/devices/bus/isa/dectalk.h", + MAME_DIR .. "src/devices/bus/isa/ega.cpp", + MAME_DIR .. "src/devices/bus/isa/ega.h", + MAME_DIR .. "src/devices/bus/isa/eis_hgb107x.cpp", + MAME_DIR .. "src/devices/bus/isa/eis_hgb107x.h", + MAME_DIR .. "src/devices/bus/isa/eis_sad8852.cpp", + MAME_DIR .. "src/devices/bus/isa/eis_sad8852.h", + MAME_DIR .. "src/devices/bus/isa/eis_twib.cpp", + MAME_DIR .. "src/devices/bus/isa/eis_twib.h", + MAME_DIR .. "src/devices/bus/isa/ex1280.cpp", + MAME_DIR .. "src/devices/bus/isa/ex1280.h", MAME_DIR .. "src/devices/bus/isa/fdc.cpp", MAME_DIR .. "src/devices/bus/isa/fdc.h", - MAME_DIR .. "src/devices/bus/isa/mufdc.cpp", - MAME_DIR .. "src/devices/bus/isa/mufdc.h", MAME_DIR .. "src/devices/bus/isa/finalchs.cpp", MAME_DIR .. "src/devices/bus/isa/finalchs.h", MAME_DIR .. "src/devices/bus/isa/gblaster.cpp", MAME_DIR .. "src/devices/bus/isa/gblaster.h", MAME_DIR .. "src/devices/bus/isa/gus.cpp", MAME_DIR .. "src/devices/bus/isa/gus.h", - MAME_DIR .. "src/devices/bus/isa/sb16.cpp", - MAME_DIR .. "src/devices/bus/isa/sb16.h", MAME_DIR .. "src/devices/bus/isa/hdc.cpp", MAME_DIR .. "src/devices/bus/isa/hdc.h", + MAME_DIR .. "src/devices/bus/isa/hpblp.cpp", MAME_DIR .. "src/devices/bus/isa/ibm_mfc.cpp", MAME_DIR .. "src/devices/bus/isa/ibm_mfc.h", - MAME_DIR .. "src/devices/bus/isa/cl_sh260.cpp", - MAME_DIR .. "src/devices/bus/isa/cl_sh260.h", - MAME_DIR .. "src/devices/bus/isa/mpu401.cpp", - MAME_DIR .. "src/devices/bus/isa/mpu401.h", - MAME_DIR .. "src/devices/bus/isa/pcmidi.cpp", - MAME_DIR .. "src/devices/bus/isa/pcmidi.h", - MAME_DIR .. "src/devices/bus/isa/sblaster.cpp", - MAME_DIR .. "src/devices/bus/isa/sblaster.h", - MAME_DIR .. "src/devices/bus/isa/stereo_fx.cpp", - MAME_DIR .. "src/devices/bus/isa/stereo_fx.h", - MAME_DIR .. "src/devices/bus/isa/ssi2001.cpp", - MAME_DIR .. "src/devices/bus/isa/ssi2001.h", MAME_DIR .. "src/devices/bus/isa/ide.cpp", MAME_DIR .. "src/devices/bus/isa/ide.h", - MAME_DIR .. "src/devices/bus/isa/xtide.cpp", - MAME_DIR .. "src/devices/bus/isa/xtide.h", - MAME_DIR .. "src/devices/bus/isa/side116.cpp", - MAME_DIR .. "src/devices/bus/isa/side116.h", - MAME_DIR .. "src/devices/bus/isa/acb2072.cpp", - MAME_DIR .. "src/devices/bus/isa/acb2072.h", - MAME_DIR .. "src/devices/bus/isa/aha1542b.cpp", - MAME_DIR .. "src/devices/bus/isa/aha1542b.h", - MAME_DIR .. "src/devices/bus/isa/aha1542c.cpp", - MAME_DIR .. "src/devices/bus/isa/aha1542c.h", - MAME_DIR .. "src/devices/bus/isa/aha174x.cpp", - MAME_DIR .. "src/devices/bus/isa/aha174x.h", - MAME_DIR .. "src/devices/bus/isa/wd1002a_wx1.cpp", - MAME_DIR .. "src/devices/bus/isa/wd1002a_wx1.h", - MAME_DIR .. "src/devices/bus/isa/wd1007a.cpp", - MAME_DIR .. "src/devices/bus/isa/wd1007a.h", - MAME_DIR .. "src/devices/bus/isa/dectalk.cpp", - MAME_DIR .. "src/devices/bus/isa/dectalk.h", - MAME_DIR .. "src/devices/bus/isa/pds.cpp", - MAME_DIR .. "src/devices/bus/isa/pds.h", - MAME_DIR .. "src/devices/bus/isa/omti8621.cpp", - MAME_DIR .. "src/devices/bus/isa/omti8621.h", - MAME_DIR .. "src/devices/bus/isa/cga.cpp", - MAME_DIR .. "src/devices/bus/isa/cga.h", - MAME_DIR .. "src/devices/bus/isa/svga_cirrus.cpp", - MAME_DIR .. "src/devices/bus/isa/svga_cirrus.h", - MAME_DIR .. "src/devices/bus/isa/ega.cpp", - MAME_DIR .. "src/devices/bus/isa/ega.h", - MAME_DIR .. "src/devices/bus/isa/ex1280.cpp", - MAME_DIR .. "src/devices/bus/isa/ex1280.h", - MAME_DIR .. "src/devices/bus/isa/pgc.cpp", - MAME_DIR .. "src/devices/bus/isa/pgc.h", - MAME_DIR .. "src/devices/bus/isa/vga.cpp", - MAME_DIR .. "src/devices/bus/isa/vga.h", - MAME_DIR .. "src/devices/bus/isa/vga_ati.cpp", - MAME_DIR .. "src/devices/bus/isa/vga_ati.h", + MAME_DIR .. "src/devices/bus/isa/lbaenhancer.cpp", + MAME_DIR .. "src/devices/bus/isa/lbaenhancer.h", + MAME_DIR .. "src/devices/bus/isa/lpt.cpp", + MAME_DIR .. "src/devices/bus/isa/lpt.h", + MAME_DIR .. "src/devices/bus/isa/lrk330.cpp", + MAME_DIR .. "src/devices/bus/isa/lrk330.h", MAME_DIR .. "src/devices/bus/isa/mach32.cpp", MAME_DIR .. "src/devices/bus/isa/mach32.h", - MAME_DIR .. "src/devices/bus/isa/svga_tseng.cpp", - MAME_DIR .. "src/devices/bus/isa/svga_tseng.h", - MAME_DIR .. "src/devices/bus/isa/svga_s3.cpp", - MAME_DIR .. "src/devices/bus/isa/svga_s3.h", - MAME_DIR .. "src/devices/bus/isa/s3virge.cpp", - MAME_DIR .. "src/devices/bus/isa/s3virge.h", - MAME_DIR .. "src/devices/bus/isa/pc1640_iga.cpp", - MAME_DIR .. "src/devices/bus/isa/pc1640_iga.h", - MAME_DIR .. "src/devices/bus/isa/3c503.cpp", - MAME_DIR .. "src/devices/bus/isa/3c503.h", + MAME_DIR .. "src/devices/bus/isa/mc1502_fdc.cpp", + MAME_DIR .. "src/devices/bus/isa/mc1502_fdc.h", + MAME_DIR .. "src/devices/bus/isa/mc1502_rom.cpp", + MAME_DIR .. "src/devices/bus/isa/mc1502_rom.h", + MAME_DIR .. "src/devices/bus/isa/mcd.cpp", + MAME_DIR .. "src/devices/bus/isa/mcd.h", + MAME_DIR .. "src/devices/bus/isa/mda.cpp", + MAME_DIR .. "src/devices/bus/isa/mda.h", + MAME_DIR .. "src/devices/bus/isa/mpu401.cpp", + MAME_DIR .. "src/devices/bus/isa/mpu401.h", + MAME_DIR .. "src/devices/bus/isa/mufdc.cpp", + MAME_DIR .. "src/devices/bus/isa/mufdc.h", + MAME_DIR .. "src/devices/bus/isa/myb3k_com.cpp", + MAME_DIR .. "src/devices/bus/isa/myb3k_com.h", + MAME_DIR .. "src/devices/bus/isa/myb3k_fdc.cpp", + MAME_DIR .. "src/devices/bus/isa/myb3k_fdc.h", MAME_DIR .. "src/devices/bus/isa/ne1000.cpp", MAME_DIR .. "src/devices/bus/isa/ne1000.h", MAME_DIR .. "src/devices/bus/isa/ne2000.cpp", MAME_DIR .. "src/devices/bus/isa/ne2000.h", - MAME_DIR .. "src/devices/bus/isa/3c505.cpp", - MAME_DIR .. "src/devices/bus/isa/3c505.h", - MAME_DIR .. "src/devices/bus/isa/lpt.cpp", - MAME_DIR .. "src/devices/bus/isa/lpt.h", + MAME_DIR .. "src/devices/bus/isa/np600.cpp", + MAME_DIR .. "src/devices/bus/isa/np600.h", + MAME_DIR .. "src/devices/bus/isa/num9rev.cpp", + MAME_DIR .. "src/devices/bus/isa/num9rev.h", + MAME_DIR .. "src/devices/bus/isa/omti8621.cpp", + MAME_DIR .. "src/devices/bus/isa/omti8621.h", + MAME_DIR .. "src/devices/bus/isa/opus100pm.cpp", + MAME_DIR .. "src/devices/bus/isa/opus100pm.h", MAME_DIR .. "src/devices/bus/isa/p1_fdc.cpp", MAME_DIR .. "src/devices/bus/isa/p1_fdc.h", MAME_DIR .. "src/devices/bus/isa/p1_hdc.cpp", @@ -1731,59 +1732,58 @@ if (BUSES["ISA"]~=null) then MAME_DIR .. "src/devices/bus/isa/p1_rom.h", MAME_DIR .. "src/devices/bus/isa/p1_sound.cpp", MAME_DIR .. "src/devices/bus/isa/p1_sound.h", - MAME_DIR .. "src/devices/bus/isa/mc1502_fdc.cpp", - MAME_DIR .. "src/devices/bus/isa/mc1502_fdc.h", - MAME_DIR .. "src/devices/bus/isa/mc1502_rom.cpp", - MAME_DIR .. "src/devices/bus/isa/mc1502_rom.h", - MAME_DIR .. "src/devices/bus/isa/xsu_cards.cpp", - MAME_DIR .. "src/devices/bus/isa/xsu_cards.h", + MAME_DIR .. "src/devices/bus/isa/pc1640_iga.cpp", + MAME_DIR .. "src/devices/bus/isa/pc1640_iga.h", + MAME_DIR .. "src/devices/bus/isa/pcmidi.cpp", + MAME_DIR .. "src/devices/bus/isa/pcmidi.h", + MAME_DIR .. "src/devices/bus/isa/pds.cpp", + MAME_DIR .. "src/devices/bus/isa/pds.h", + MAME_DIR .. "src/devices/bus/isa/pgc.cpp", + MAME_DIR .. "src/devices/bus/isa/pgc.h", + MAME_DIR .. "src/devices/bus/isa/s3virge.cpp", + MAME_DIR .. "src/devices/bus/isa/s3virge.h", + MAME_DIR .. "src/devices/bus/isa/sb16.cpp", + MAME_DIR .. "src/devices/bus/isa/sb16.h", + MAME_DIR .. "src/devices/bus/isa/sblaster.cpp", + MAME_DIR .. "src/devices/bus/isa/sblaster.h", MAME_DIR .. "src/devices/bus/isa/sc499.cpp", MAME_DIR .. "src/devices/bus/isa/sc499.h", - MAME_DIR .. "src/devices/bus/isa/aga.cpp", - MAME_DIR .. "src/devices/bus/isa/aga.h", + MAME_DIR .. "src/devices/bus/isa/side116.cpp", + MAME_DIR .. "src/devices/bus/isa/side116.h", + MAME_DIR .. "src/devices/bus/isa/ssi2001.cpp", + MAME_DIR .. "src/devices/bus/isa/ssi2001.h", + MAME_DIR .. "src/devices/bus/isa/stereo_fx.cpp", + MAME_DIR .. "src/devices/bus/isa/stereo_fx.h", + MAME_DIR .. "src/devices/bus/isa/svga_cirrus.cpp", + MAME_DIR .. "src/devices/bus/isa/svga_cirrus.h", + MAME_DIR .. "src/devices/bus/isa/svga_s3.cpp", + MAME_DIR .. "src/devices/bus/isa/svga_s3.h", MAME_DIR .. "src/devices/bus/isa/svga_trident.cpp", MAME_DIR .. "src/devices/bus/isa/svga_trident.h", - MAME_DIR .. "src/devices/bus/isa/num9rev.cpp", - MAME_DIR .. "src/devices/bus/isa/num9rev.h", - MAME_DIR .. "src/devices/bus/isa/mcd.cpp", - MAME_DIR .. "src/devices/bus/isa/mcd.h", - MAME_DIR .. "src/devices/bus/isa/myb3k_com.cpp", - MAME_DIR .. "src/devices/bus/isa/myb3k_com.h", - MAME_DIR .. "src/devices/bus/isa/myb3k_fdc.cpp", - MAME_DIR .. "src/devices/bus/isa/myb3k_fdc.h", - MAME_DIR .. "src/devices/bus/isa/eis_sad8852.cpp", - MAME_DIR .. "src/devices/bus/isa/eis_sad8852.h", - MAME_DIR .. "src/devices/bus/isa/eis_twib.cpp", - MAME_DIR .. "src/devices/bus/isa/eis_twib.h", - MAME_DIR .. "src/devices/bus/isa/eis_hgb107x.cpp", - MAME_DIR .. "src/devices/bus/isa/eis_hgb107x.h", - MAME_DIR .. "src/devices/bus/isa/lbaenhancer.cpp", - MAME_DIR .. "src/devices/bus/isa/lbaenhancer.h", - MAME_DIR .. "src/devices/bus/isa/np600.cpp", - MAME_DIR .. "src/devices/bus/isa/np600.h", - MAME_DIR .. "src/devices/bus/isa/bt54x.cpp", - MAME_DIR .. "src/devices/bus/isa/bt54x.h", - MAME_DIR .. "src/devices/bus/isa/dcb.cpp", - MAME_DIR .. "src/devices/bus/isa/dcb.h", + MAME_DIR .. "src/devices/bus/isa/svga_tseng.cpp", + MAME_DIR .. "src/devices/bus/isa/svga_tseng.h", + MAME_DIR .. "src/devices/bus/isa/tekram_dc820.cpp", + MAME_DIR .. "src/devices/bus/isa/tekram_dc820.h", MAME_DIR .. "src/devices/bus/isa/ultra12f.cpp", MAME_DIR .. "src/devices/bus/isa/ultra12f.h", MAME_DIR .. "src/devices/bus/isa/ultra14f.cpp", MAME_DIR .. "src/devices/bus/isa/ultra14f.h", MAME_DIR .. "src/devices/bus/isa/ultra24f.cpp", MAME_DIR .. "src/devices/bus/isa/ultra24f.h", - MAME_DIR .. "src/devices/bus/isa/tekram_dc820.cpp", - MAME_DIR .. "src/devices/bus/isa/tekram_dc820.h", - MAME_DIR .. "src/devices/bus/isa/asc88.cpp", - MAME_DIR .. "src/devices/bus/isa/asc88.h", - MAME_DIR .. "src/devices/bus/isa/bblue2.cpp", - MAME_DIR .. "src/devices/bus/isa/bblue2.h", - MAME_DIR .. "src/devices/bus/isa/3xtwin.cpp", - MAME_DIR .. "src/devices/bus/isa/3xtwin.h", - MAME_DIR .. "src/devices/bus/isa/lrk330.cpp", - MAME_DIR .. "src/devices/bus/isa/lrk330.h", - MAME_DIR .. "src/devices/bus/isa/opus100pm.cpp", - MAME_DIR .. "src/devices/bus/isa/opus100pm.h", - MAME_DIR .. "src/devices/bus/isa/hpblp.cpp", + MAME_DIR .. "src/devices/bus/isa/vga.cpp", + MAME_DIR .. "src/devices/bus/isa/vga.h", + MAME_DIR .. "src/devices/bus/isa/vga_ati.cpp", + MAME_DIR .. "src/devices/bus/isa/vga_ati.h", + MAME_DIR .. "src/devices/bus/isa/wd1002a_wx1.cpp", + MAME_DIR .. "src/devices/bus/isa/wd1002a_wx1.h", + MAME_DIR .. "src/devices/bus/isa/wd1007a.cpp", + MAME_DIR .. "src/devices/bus/isa/wd1007a.h", + MAME_DIR .. "src/devices/bus/isa/wdxt_gen.cpp", + MAME_DIR .. "src/devices/bus/isa/wdxt_gen.h", + MAME_DIR .. "src/devices/bus/isa/xsu_cards.cpp", + MAME_DIR .. "src/devices/bus/isa/xsu_cards.h", + MAME_DIR .. "src/devices/bus/isa/xtide.cpp", + MAME_DIR .. "src/devices/bus/isa/xtide.h", } end diff --git a/src/devices/bus/isa/hpblp.cpp b/src/devices/bus/isa/hpblp.cpp index c798dc7c87a..1caa07c9b08 100644 --- a/src/devices/bus/isa/hpblp.cpp +++ b/src/devices/bus/isa/hpblp.cpp @@ -8,7 +8,8 @@ #include "emu.h" #include "hpblp.h" -#include "bus/isa/isa.h" + +//#define VERBOSE 1 #include "logmacro.h" #define BLP_TAG "blpcpu" diff --git a/src/devices/bus/isa/hpblp.h b/src/devices/bus/isa/hpblp.h index 5cc7f37eadc..debd3f4f4bc 100644 --- a/src/devices/bus/isa/hpblp.h +++ b/src/devices/bus/isa/hpblp.h @@ -6,6 +6,7 @@ #pragma once #include "isa.h" + #include "bus/hp_dio/hp_dio.h" #include "bus/ieee488/ieee488.h" #include "cpu/m68000/m68000.h" diff --git a/src/devices/cpu/drcuml.cpp b/src/devices/cpu/drcuml.cpp index 771ea230c03..897e0dc498c 100644 --- a/src/devices/cpu/drcuml.cpp +++ b/src/devices/cpu/drcuml.cpp @@ -280,7 +280,7 @@ const char *drcuml_state::symbol_find(void *base, u32 *offset) // if generated //------------------------------------------------- -void drcuml_state::log_vprintf(util::format_argument_pack const &args) +void drcuml_state::log_vprintf(util::format_argument_pack const &args) { // if we have a file, print to it if (m_umllog) diff --git a/src/devices/cpu/drcuml.h b/src/devices/cpu/drcuml.h index 5bb4bb04ae4..81ef59d0f4d 100644 --- a/src/devices/cpu/drcuml.h +++ b/src/devices/cpu/drcuml.h @@ -192,7 +192,7 @@ public: { log_vprintf(util::make_format_argument_pack(std::forward(fmt), std::forward(args)...)); } - void log_vprintf(util::format_argument_pack const &args); + void log_vprintf(util::format_argument_pack const &args); void log_flush() { if (logging()) m_umllog->flush(); } bool logging_native() const { return m_beintf->logging(); } diff --git a/src/emu/debug/debugcon.cpp b/src/emu/debug/debugcon.cpp index a88b8bb8a35..ec5bc154751 100644 --- a/src/emu/debug/debugcon.cpp +++ b/src/emu/debug/debugcon.cpp @@ -1086,7 +1086,7 @@ void debugger_console::print_core_wrap(std::string_view text, int wrapcol) // the format to the debug console //------------------------------------------------- -void debugger_console::vprintf(util::format_argument_pack const &args) +void debugger_console::vprintf(util::format_argument_pack const &args) { print_core(util::string_format(args)); @@ -1094,7 +1094,7 @@ void debugger_console::vprintf(util::format_argument_pack const &a m_machine.debug_view().update_all(DVT_CONSOLE); } -void debugger_console::vprintf(util::format_argument_pack &&args) +void debugger_console::vprintf(util::format_argument_pack &&args) { print_core(util::string_format(std::move(args))); @@ -1108,7 +1108,7 @@ void debugger_console::vprintf(util::format_argument_pack &&args) // using the format to the debug console //------------------------------------------------- -void debugger_console::vprintf_wrap(int wrapcol, util::format_argument_pack const &args) +void debugger_console::vprintf_wrap(int wrapcol, util::format_argument_pack const &args) { print_core_wrap(util::string_format(args), wrapcol); @@ -1116,7 +1116,7 @@ void debugger_console::vprintf_wrap(int wrapcol, util::format_argument_pack &&args) +void debugger_console::vprintf_wrap(int wrapcol, util::format_argument_pack &&args) { print_core_wrap(util::string_format(std::move(args)), wrapcol); diff --git a/src/emu/debug/debugcon.h b/src/emu/debug/debugcon.h index a5e9950ae78..37b2e235348 100644 --- a/src/emu/debug/debugcon.h +++ b/src/emu/debug/debugcon.h @@ -84,10 +84,10 @@ public: void process_source_file(); // console management - void vprintf(util::format_argument_pack const &args); - void vprintf(util::format_argument_pack &&args); - void vprintf_wrap(int wrapcol, util::format_argument_pack const &args); - void vprintf_wrap(int wrapcol, util::format_argument_pack &&args); + void vprintf(util::format_argument_pack const &args); + void vprintf(util::format_argument_pack &&args); + void vprintf_wrap(int wrapcol, util::format_argument_pack const &args); + void vprintf_wrap(int wrapcol, util::format_argument_pack &&args); text_buffer &get_console_textbuf() const { return *m_console_textbuf; } // errorlog management diff --git a/src/emu/debug/debugcpu.cpp b/src/emu/debug/debugcpu.cpp index 87d6484d37d..a24cf555aee 100644 --- a/src/emu/debug/debugcpu.cpp +++ b/src/emu/debug/debugcpu.cpp @@ -388,7 +388,7 @@ void debugger_cpu::go_vblank() m_execution_state = exec_state::RUNNING; } -void debugger_cpu::halt_on_next_instruction(device_t *device, util::format_argument_pack &&args) +void debugger_cpu::halt_on_next_instruction(device_t *device, util::format_argument_pack &&args) { // if something is pending on this CPU already, ignore this request if (device == m_breakcpu) @@ -1176,7 +1176,7 @@ void device_debug::go_branch(bool sense, const char *condition) // to templates in C++ being janky as all get out //------------------------------------------------- -void device_debug::halt_on_next_instruction_impl(util::format_argument_pack &&args) +void device_debug::halt_on_next_instruction_impl(util::format_argument_pack &&args) { assert(m_exec != nullptr); m_device.machine().debugger().cpu().halt_on_next_instruction(&m_device, std::move(args)); @@ -2079,7 +2079,7 @@ void device_debug::tracer::interrupt_update(int irqline, offs_t pc) // vprintf - generic print to the trace file //------------------------------------------------- -void device_debug::tracer::vprintf(util::format_argument_pack const &args) +void device_debug::tracer::vprintf(util::format_argument_pack const &args) { // pass through to the file util::stream_format(*m_file, args); diff --git a/src/emu/debug/debugcpu.h b/src/emu/debug/debugcpu.h index e0470e9a16a..9a9f6e69f70 100644 --- a/src/emu/debug/debugcpu.h +++ b/src/emu/debug/debugcpu.h @@ -165,7 +165,7 @@ public: void compute_debug_flags(); private: - void halt_on_next_instruction_impl(util::format_argument_pack &&args); + void halt_on_next_instruction_impl(util::format_argument_pack &&args); // internal helpers void prepare_for_step_overout(offs_t pc); @@ -228,7 +228,7 @@ private: void update(offs_t pc); void interrupt_update(int irqline, offs_t pc); - void vprintf(util::format_argument_pack const &args); + void vprintf(util::format_argument_pack const &args); void flush(); bool logerror() const { return m_logerror; } @@ -406,7 +406,7 @@ public: void stop_hook(device_t *device); void go_next_device(device_t *device); void go_vblank(); - void halt_on_next_instruction(device_t *device, util::format_argument_pack &&args); + void halt_on_next_instruction(device_t *device, util::format_argument_pack &&args); void ensure_comments_loaded(); void reset_transient_flags(); diff --git a/src/emu/devcpu.cpp b/src/emu/devcpu.cpp index 9af42909f58..e5f85812601 100644 --- a/src/emu/devcpu.cpp +++ b/src/emu/devcpu.cpp @@ -59,12 +59,6 @@ bool cpu_device::cpu_is_interruptible() const return false; } -void cpu_device::defer_access(void) -{ - m_access_to_be_redone = true; - *m_icountptr = 0; -} - bool cpu_device::access_before_time(u64 access_time, u64 current_time) { s32 delta = access_time - current_time; @@ -104,3 +98,8 @@ void cpu_device::access_after_delay(u32 cycles) *m_icountptr -= cycles; } +void cpu_device::defer_access() +{ + m_access_to_be_redone = true; + *m_icountptr = 0; +} diff --git a/src/emu/devcpu.h b/src/emu/devcpu.h index 8c95fdeb58c..1dcf58c65f6 100644 --- a/src/emu/devcpu.h +++ b/src/emu/devcpu.h @@ -48,7 +48,7 @@ public: // The access has already happened, nothing to abort void access_after_delay(u32 cycles); - void defer_access(void); + void defer_access(); protected: // construction/destruction diff --git a/src/emu/emucore.cpp b/src/emu/emucore.cpp index bc6139fe3cf..d9a314cfaa2 100644 --- a/src/emu/emucore.cpp +++ b/src/emu/emucore.cpp @@ -13,13 +13,13 @@ #include "emucore.h" #include "osdcore.h" -emu_fatalerror::emu_fatalerror(util::format_argument_pack const &args) +emu_fatalerror::emu_fatalerror(util::format_argument_pack const &args) : emu_fatalerror(0, args) { osd_break_into_debugger(m_text.c_str()); } -emu_fatalerror::emu_fatalerror(int _exitcode, util::format_argument_pack const &args) +emu_fatalerror::emu_fatalerror(int _exitcode, util::format_argument_pack const &args) : m_text(util::string_format(args)) , m_code(_exitcode) { diff --git a/src/emu/emucore.h b/src/emu/emucore.h index af78cb98565..24942975a29 100644 --- a/src/emu/emucore.h +++ b/src/emu/emucore.h @@ -228,17 +228,17 @@ class emu_exception : public std::exception { }; class emu_fatalerror : public emu_exception { public: - emu_fatalerror(util::format_argument_pack const &args); - emu_fatalerror(int _exitcode, util::format_argument_pack const &args); + emu_fatalerror(util::format_argument_pack const &args); + emu_fatalerror(int _exitcode, util::format_argument_pack const &args); template emu_fatalerror(Format const &fmt, Params &&... args) - : emu_fatalerror(static_cast const &>(util::make_format_argument_pack(fmt, std::forward(args)...))) + : emu_fatalerror(static_cast const &>(util::make_format_argument_pack(fmt, std::forward(args)...))) { } template emu_fatalerror(int _exitcode, Format const &fmt, Params &&... args) - : emu_fatalerror(_exitcode, static_cast const &>(util::make_format_argument_pack(fmt, std::forward(args)...))) + : emu_fatalerror(_exitcode, static_cast const &>(util::make_format_argument_pack(fmt, std::forward(args)...))) { } diff --git a/src/emu/fileio.cpp b/src/emu/fileio.cpp index a1bf4adbcb4..23426cb61fa 100644 --- a/src/emu/fileio.cpp +++ b/src/emu/fileio.cpp @@ -627,7 +627,7 @@ int emu_file::puts(std::string_view s) // vfprintf - vfprintf to a text file //------------------------------------------------- -int emu_file::vprintf(util::format_argument_pack const &args) +int emu_file::vprintf(util::format_argument_pack const &args) { // write the data if we can return m_file ? m_file->vprintf(args) : 0; diff --git a/src/emu/fileio.h b/src/emu/fileio.h index 7398e649c6e..225cebd0a81 100644 --- a/src/emu/fileio.h +++ b/src/emu/fileio.h @@ -182,7 +182,7 @@ public: // writing u32 write(const void *buffer, u32 length); int puts(std::string_view s); - int vprintf(util::format_argument_pack const &args); + int vprintf(util::format_argument_pack const &args); template int printf(Format &&fmt, Params &&...args) { return vprintf(util::make_format_argument_pack(std::forward(fmt), std::forward(args)...)); diff --git a/src/emu/machine.cpp b/src/emu/machine.cpp index 0c3df3ad0ec..fa42c9ec6e2 100644 --- a/src/emu/machine.cpp +++ b/src/emu/machine.cpp @@ -1175,7 +1175,7 @@ void running_machine::popup_clear() const ui().popup_time(0, " "); } -void running_machine::popup_message(util::format_argument_pack const &args) const +void running_machine::popup_message(util::format_argument_pack const &args) const { std::string const temp(string_format(args)); ui().popup_time(temp.length() / 40 + 2, "%s", temp); diff --git a/src/emu/machine.h b/src/emu/machine.h index c821a43ee3a..7b4efec70da 100644 --- a/src/emu/machine.h +++ b/src/emu/machine.h @@ -251,7 +251,7 @@ private: void nvram_load(); void nvram_save(); void popup_clear() const; - void popup_message(util::format_argument_pack const &args) const; + void popup_message(util::format_argument_pack const &args) const; // internal callbacks void logfile_callback(const char *buffer); diff --git a/src/emu/profiler.cpp b/src/emu/profiler.cpp index 04a241f7c09..da310b851a4 100644 --- a/src/emu/profiler.cpp +++ b/src/emu/profiler.cpp @@ -89,7 +89,7 @@ real_profiler_state::real_profiler_state() // reset - initializes state //------------------------------------------------- -void real_profiler_state::reset(bool enabled) +void real_profiler_state::reset(bool enabled) noexcept { assert(!m_filoptr || (m_filoptr == m_filo)); diff --git a/src/emu/profiler.h b/src/emu/profiler.h index 9145f4fb5f8..8ea65ac7f07 100644 --- a/src/emu/profiler.h +++ b/src/emu/profiler.h @@ -30,8 +30,13 @@ #include "attotime.h" +#include "eminline.h" // for get_profile_ticks() #include "osdcore.h" +#include +#include +#include + //************************************************************************** // CONSTANTS @@ -99,12 +104,12 @@ public: scope(scope const &) = delete; scope &operator=(scope const &) = delete; - scope(scope &&that) : m_host(that.m_host), m_active(that.m_active) + scope(scope &&that) noexcept : m_host(that.m_host), m_active(that.m_active) { that.m_active = false; } - scope(real_profiler_state &host, profile_type type) : m_host(host), m_active(false) + scope(real_profiler_state &host, profile_type type) noexcept : m_host(host), m_active(false) { if (m_host.enabled()) { @@ -118,7 +123,7 @@ public: stop(); } - void stop() + void stop() noexcept { if (m_active) { @@ -132,14 +137,14 @@ public: real_profiler_state(); // getters - bool enabled() const + bool enabled() const noexcept { return m_filoptr != nullptr; } const char *text(running_machine &machine); // enable/disable - void enable(bool state = true) + void enable(bool state = true) noexcept { if (state != enabled()) { @@ -148,21 +153,31 @@ public: } // start/stop - [[nodiscard]] auto start(profile_type type) { return scope(*this, type); } + [[nodiscard]] auto start(profile_type type) noexcept { return scope(*this, type); } private: - void reset(bool enabled); + // an entry in the FILO + struct filo_entry + { + int type; // type of entry + osd_ticks_t start; // start time + }; + + void reset(bool enabled) noexcept; void update_text(running_machine &machine); //------------------------------------------------- // real_start - mark the beginning of a // profiler entry //------------------------------------------------- - ATTR_FORCE_INLINE void real_start(profile_type type) + ATTR_FORCE_INLINE void real_start(profile_type type) noexcept { // fail if we overflow - if (m_filoptr >= &m_filo[std::size(m_filo) - 1]) - throw emu_fatalerror("Profiler FILO overflow (type = %d)\n", type); + if (UNEXPECTED(m_filoptr >= &m_filo[std::size(m_filo) - 1])) + { + std::fprintf(stderr, "Profiler FILO overflow (type = %d)\n", int(type)); + std::abort(); + } // get current tick count osd_ticks_t curticks = get_profile_ticks(); @@ -181,7 +196,7 @@ private: //------------------------------------------------- // real_stop - mark the end of a profiler entry //------------------------------------------------- - ATTR_FORCE_INLINE void real_stop() + ATTR_FORCE_INLINE void real_stop() noexcept { // degenerate scenario if (UNEXPECTED(m_filoptr <= m_filo)) @@ -200,13 +215,6 @@ private: m_filoptr->start = curticks; } - // an entry in the FILO - struct filo_entry - { - int type; // type of entry - osd_ticks_t start; // start time - }; - // internal state filo_entry * m_filoptr; // current FILO index std::string m_text; // profiler text @@ -229,27 +237,27 @@ public: public: scope(scope const &) = delete; scope &operator=(scope const &) = delete; - scope(scope &&that) = default; - scope(dummy_profiler_state &host, profile_type type) : m_host(host) { } + scope(scope &&that) noexcept = default; + scope(dummy_profiler_state &host, profile_type type) noexcept : m_host(host) { } ~scope() { m_host.real_stop(); } - void stop() { } + void stop() noexcept { } }; // construction/destruction dummy_profiler_state(); // getters - bool enabled() const { return false; } + bool enabled() const noexcept { return false; } const char *text(running_machine &machine) { return ""; } // enable/disable - void enable(bool state = true) { } + void enable(bool state = true) noexcept { } // start/stop - [[nodiscard]] auto start(profile_type type) { return scope(*this, type); } + [[nodiscard]] auto start(profile_type type) noexcept { return scope(*this, type); } private: - void real_stop() { } + void real_stop() noexcept { } }; diff --git a/src/emu/validity.cpp b/src/emu/validity.cpp index 7665acedd13..9f1165efeb0 100644 --- a/src/emu/validity.cpp +++ b/src/emu/validity.cpp @@ -2895,7 +2895,7 @@ void validity_checker::build_output_prefix(std::ostream &str) const // error_output - error message output override //------------------------------------------------- -void validity_checker::output_callback(osd_output_channel channel, const util::format_argument_pack &args) +void validity_checker::output_callback(osd_output_channel channel, const util::format_argument_pack &args) { std::ostringstream output; switch (channel) diff --git a/src/emu/validity.h b/src/emu/validity.h index 54687716bd7..fbf5f239323 100644 --- a/src/emu/validity.h +++ b/src/emu/validity.h @@ -51,7 +51,7 @@ public: protected: // osd_output interface - virtual void output_callback(osd_output_channel channel, const util::format_argument_pack &args) override; + virtual void output_callback(osd_output_channel channel, const util::format_argument_pack &args) override; private: // internal map types diff --git a/src/frontend/mame/luaengine.cpp b/src/frontend/mame/luaengine.cpp index d2c5bfeb582..ebf2f701e15 100644 --- a/src/frontend/mame/luaengine.cpp +++ b/src/frontend/mame/luaengine.cpp @@ -818,7 +818,7 @@ void lua_engine::initialize() { mame_ui_manager &mui = mame_machine_manager::instance()->ui(); render_container &container = machine().render().ui_container(); - ui::menu_plugin::show_menu(mui, container, (char *)name); + ui::menu_plugin::show_menu(mui, container, name); }; emu["register_callback"] = [this] (sol::function cb, const std::string &name) diff --git a/src/lib/util/bitmap.cpp b/src/lib/util/bitmap.cpp index 76eb764e129..8287009311d 100644 --- a/src/lib/util/bitmap.cpp +++ b/src/lib/util/bitmap.cpp @@ -23,7 +23,7 @@ // compute_rowpixels - compute a rowpixels value //------------------------------------------------- -inline int32_t bitmap_t::compute_rowpixels(int width, int xslop) +inline int32_t bitmap_t::compute_rowpixels(int width, int xslop) noexcept { return width + 2 * xslop; } @@ -34,7 +34,7 @@ inline int32_t bitmap_t::compute_rowpixels(int width, int xslop) // with the given slop values //------------------------------------------------- -inline void bitmap_t::compute_base(int xslop, int yslop) +inline void bitmap_t::compute_base(int xslop, int yslop) noexcept { m_base = &m_alloc[(m_rowpixels * yslop + xslop) * (m_bpp / 8)]; } @@ -45,7 +45,7 @@ inline void bitmap_t::compute_base(int xslop, int yslop) // is valid and agrees with the BPP //------------------------------------------------- -inline bool bitmap_t::valid_format() const +inline bool bitmap_t::valid_format() const noexcept { switch (m_format) { @@ -81,7 +81,7 @@ inline bool bitmap_t::valid_format() const // BITMAP ALLOCATION/CONFIGURATION //************************************************************************** -bitmap_t::bitmap_t(bitmap_t &&that) +bitmap_t::bitmap_t(bitmap_t &&that) noexcept : m_alloc(std::move(that.m_alloc)) , m_allocbytes(that.m_allocbytes) , m_base(that.m_base) @@ -112,7 +112,7 @@ bitmap_t::bitmap_t(bitmap_t &&that) * @param yslop The yslop. */ -bitmap_t::bitmap_t(bitmap_format format, uint8_t bpp, int width, int height, int xslop, int yslop) +bitmap_t::bitmap_t(bitmap_format format, uint8_t bpp, int width, int height, int xslop, int yslop) noexcept : m_alloc() , m_allocbytes(0) , m_format(format) @@ -138,7 +138,7 @@ bitmap_t::bitmap_t(bitmap_format format, uint8_t bpp, int width, int height, int * @param rowpixels The rowpixels. */ -bitmap_t::bitmap_t(bitmap_format format, uint8_t bpp, void *base, int width, int height, int rowpixels) +bitmap_t::bitmap_t(bitmap_format format, uint8_t bpp, void *base, int width, int height, int rowpixels) noexcept : m_alloc() , m_allocbytes(0) , m_base(base) @@ -164,7 +164,7 @@ bitmap_t::bitmap_t(bitmap_format format, uint8_t bpp, void *base, int width, int * @param subrect The subrect. */ -bitmap_t::bitmap_t(bitmap_format format, uint8_t bpp, bitmap_t &source, const rectangle &subrect) +bitmap_t::bitmap_t(bitmap_format format, uint8_t bpp, bitmap_t &source, const rectangle &subrect) noexcept : m_alloc() , m_allocbytes(0) , m_base(source.raw_pixptr(subrect.top(), subrect.left())) @@ -195,7 +195,7 @@ bitmap_t::~bitmap_t() reset(); } -bitmap_t &bitmap_t::operator=(bitmap_t &&that) +bitmap_t &bitmap_t::operator=(bitmap_t &&that) noexcept { m_alloc = std::move(that.m_alloc); m_allocbytes = that.m_allocbytes; @@ -225,7 +225,7 @@ bitmap_t &bitmap_t::operator=(bitmap_t &&that) * @param yslop The yslop. */ -void bitmap_t::allocate(int width, int height, int xslop, int yslop) +void bitmap_t::allocate(int width, int height, int xslop, int yslop) noexcept { assert(m_format != BITMAP_FORMAT_INVALID); assert(m_bpp == 8 || m_bpp == 16 || m_bpp == 32 || m_bpp == 64); @@ -272,7 +272,7 @@ void bitmap_t::allocate(int width, int height, int xslop, int yslop) * @param yslop The yslop. */ -void bitmap_t::resize(int width, int height, int xslop, int yslop) +void bitmap_t::resize(int width, int height, int xslop, int yslop) noexcept { assert(m_format != BITMAP_FORMAT_INVALID); assert(m_bpp == 8 || m_bpp == 16 || m_bpp == 32 || m_bpp == 64); @@ -317,7 +317,7 @@ void bitmap_t::resize(int width, int height, int xslop, int yslop) * -------------------------------------------------. */ -void bitmap_t::reset() +void bitmap_t::reset() noexcept { // delete any existing stuff set_palette(nullptr); @@ -345,7 +345,7 @@ void bitmap_t::reset() * @param rowpixels The rowpixels. */ -void bitmap_t::wrap(void *base, int width, int height, int rowpixels) +void bitmap_t::wrap(void *base, int width, int height, int rowpixels) noexcept { assert(base || (!width && !height)); assert(!m_alloc || (&m_alloc[0] > base) || (&m_alloc[m_allocbytes] <= base)); @@ -373,7 +373,7 @@ void bitmap_t::wrap(void *base, int width, int height, int rowpixels) * @param subrect The subrect. */ -void bitmap_t::wrap(bitmap_t &source, const rectangle &subrect) +void bitmap_t::wrap(bitmap_t &source, const rectangle &subrect) noexcept { assert(&source != this); assert(m_format == source.m_format); @@ -402,7 +402,7 @@ void bitmap_t::wrap(bitmap_t &source, const rectangle &subrect) * @param [in,out] palette If non-null, the palette. */ -void bitmap_t::set_palette(palette_t *palette) +void bitmap_t::set_palette(palette_t *palette) noexcept { // first reference the new palette if (palette) @@ -426,7 +426,7 @@ void bitmap_t::set_palette(palette_t *palette) * @param bounds The bounds. */ -void bitmap_t::fill(uint64_t color, const rectangle &bounds) +void bitmap_t::fill(uint64_t color, const rectangle &bounds) noexcept { // if we have a cliprect, intersect with that rectangle fill(bounds); diff --git a/src/lib/util/bitmap.h b/src/lib/util/bitmap.h index 6fe08c0b7d6..56c4328d5ed 100644 --- a/src/lib/util/bitmap.h +++ b/src/lib/util/bitmap.h @@ -136,60 +136,60 @@ class bitmap_t protected: // construction/destruction -- subclasses only to ensure type correctness bitmap_t(const bitmap_t &) = delete; - bitmap_t(bitmap_t &&that); - bitmap_t(bitmap_format format, uint8_t bpp, int width = 0, int height = 0, int xslop = 0, int yslop = 0); - bitmap_t(bitmap_format format, uint8_t bpp, void *base, int width, int height, int rowpixels); - bitmap_t(bitmap_format format, uint8_t bpp, bitmap_t &source, const rectangle &subrect); + bitmap_t(bitmap_t &&that) noexcept; + bitmap_t(bitmap_format format, uint8_t bpp, int width = 0, int height = 0, int xslop = 0, int yslop = 0) noexcept; + bitmap_t(bitmap_format format, uint8_t bpp, void *base, int width, int height, int rowpixels) noexcept; + bitmap_t(bitmap_format format, uint8_t bpp, bitmap_t &source, const rectangle &subrect) noexcept; virtual ~bitmap_t(); // prevent implicit copying bitmap_t &operator=(const bitmap_t &) = delete; - bitmap_t &operator=(bitmap_t &&that); + bitmap_t &operator=(bitmap_t &&that) noexcept; public: // allocation/deallocation - void reset(); + void reset() noexcept; // getters - int32_t width() const { return m_width; } - int32_t height() const { return m_height; } - int32_t rowpixels() const { return m_rowpixels; } - int32_t rowbytes() const { return m_rowpixels * m_bpp / 8; } - uint8_t bpp() const { return m_bpp; } - bitmap_format format() const { return m_format; } - bool valid() const { return (m_base != nullptr); } - palette_t *palette() const { return m_palette; } - const rectangle &cliprect() const { return m_cliprect; } - - // allocation/sizing - void allocate(int width, int height, int xslop = 0, int yslop = 0); - void resize(int width, int height, int xslop = 0, int yslop = 0); + int32_t width() const noexcept { return m_width; } + int32_t height() const noexcept { return m_height; } + int32_t rowpixels() const noexcept { return m_rowpixels; } + int32_t rowbytes() const noexcept { return m_rowpixels * m_bpp / 8; } + uint8_t bpp() const noexcept { return m_bpp; } + bitmap_format format() const noexcept { return m_format; } + bool valid() const noexcept { return (m_base != nullptr); } + palette_t *palette() const noexcept { return m_palette; } + const rectangle &cliprect() const noexcept { return m_cliprect; } + + // allocation/sizing (bitmap will become invalid if allocation fails) + void allocate(int width, int height, int xslop = 0, int yslop = 0) noexcept; + void resize(int width, int height, int xslop = 0, int yslop = 0) noexcept; // operations - void set_palette(palette_t *palette); - void fill(uint64_t color) { fill(color, m_cliprect); } - void fill(uint64_t color, const rectangle &bounds); - void plot_box(int32_t x, int32_t y, int32_t width, int32_t height, uint64_t color) + void set_palette(palette_t *palette) noexcept; + void fill(uint64_t color) noexcept { fill(color, m_cliprect); } + void fill(uint64_t color, const rectangle &bounds) noexcept; + void plot_box(int32_t x, int32_t y, int32_t width, int32_t height, uint64_t color) noexcept { fill(color, rectangle(x, x + width - 1, y, y + height - 1)); } // pixel access - void *raw_pixptr(int32_t y, int32_t x = 0) { return reinterpret_cast(m_base) + (y * m_rowpixels + x) * m_bpp / 8; } - void const *raw_pixptr(int32_t y, int32_t x = 0) const { return reinterpret_cast(m_base) + (y * m_rowpixels + x) * m_bpp / 8; } + void *raw_pixptr(int32_t y, int32_t x = 0) noexcept { return reinterpret_cast(m_base) + (y * m_rowpixels + x) * m_bpp / 8; } + void const *raw_pixptr(int32_t y, int32_t x = 0) const noexcept { return reinterpret_cast(m_base) + (y * m_rowpixels + x) * m_bpp / 8; } protected: // for use by subclasses only to ensure type correctness - template PixelType &pixt(int32_t y, int32_t x = 0) { return *(reinterpret_cast(m_base) + y * m_rowpixels + x); } - template PixelType const &pixt(int32_t y, int32_t x = 0) const { return *(reinterpret_cast(m_base) + y * m_rowpixels + x); } - void wrap(void *base, int width, int height, int rowpixels); - void wrap(bitmap_t &source, const rectangle &subrect); + template PixelType &pixt(int32_t y, int32_t x = 0) noexcept { return *(reinterpret_cast(m_base) + y * m_rowpixels + x); } + template PixelType const &pixt(int32_t y, int32_t x = 0) const noexcept { return *(reinterpret_cast(m_base) + y * m_rowpixels + x); } + void wrap(void *base, int width, int height, int rowpixels) noexcept; + void wrap(bitmap_t &source, const rectangle &subrect) noexcept; private: // internal helpers - int32_t compute_rowpixels(int width, int xslop); - void compute_base(int xslop, int yslop); - bool valid_format() const; + static int32_t compute_rowpixels(int width, int xslop) noexcept; + void compute_base(int xslop, int yslop) noexcept; + bool valid_format() const noexcept; // internal state std::unique_ptr m_alloc; // pointer to allocated pixel memory @@ -214,26 +214,26 @@ class bitmap_specific : public bitmap_t protected: // construction/destruction -- subclasses only - bitmap_specific(bitmap_specific &&) = default; - bitmap_specific(bitmap_format format, int width = 0, int height = 0, int xslop = 0, int yslop = 0) : bitmap_t(format, PIXEL_BITS, width, height, xslop, yslop) { } - bitmap_specific(bitmap_format format, PixelType *base, int width, int height, int rowpixels) : bitmap_t(format, PIXEL_BITS, base, width, height, rowpixels) { } - bitmap_specific(bitmap_format format, bitmap_specific &source, const rectangle &subrect) : bitmap_t(format, PIXEL_BITS, source, subrect) { } + bitmap_specific(bitmap_specific &&) noexcept = default; + bitmap_specific(bitmap_format format, int width = 0, int height = 0, int xslop = 0, int yslop = 0) noexcept : bitmap_t(format, PIXEL_BITS, width, height, xslop, yslop) { } + bitmap_specific(bitmap_format format, PixelType *base, int width, int height, int rowpixels) noexcept : bitmap_t(format, PIXEL_BITS, base, width, height, rowpixels) { } + bitmap_specific(bitmap_format format, bitmap_specific &source, const rectangle &subrect) noexcept : bitmap_t(format, PIXEL_BITS, source, subrect) { } - bitmap_specific &operator=(bitmap_specific &&) = default; + bitmap_specific &operator=(bitmap_specific &&) noexcept = default; public: using pixel_t = PixelType; // getters - uint8_t bpp() const { return PIXEL_BITS; } + uint8_t bpp() const noexcept { return PIXEL_BITS; } // pixel accessors - PixelType &pix(int32_t y, int32_t x = 0) { return pixt(y, x); } - PixelType const &pix(int32_t y, int32_t x = 0) const { return pixt(y, x); } + PixelType &pix(int32_t y, int32_t x = 0) noexcept { return pixt(y, x); } + PixelType const &pix(int32_t y, int32_t x = 0) const noexcept { return pixt(y, x); } // operations - void fill(PixelType color) { fill(color, cliprect()); } - void fill(PixelType color, const rectangle &bounds) + void fill(PixelType color) noexcept { fill(color, cliprect()); } + void fill(PixelType color, const rectangle &bounds) noexcept { // if we have a cliprect, intersect with that rectangle fill(bounds); @@ -244,7 +244,7 @@ public: std::fill_n(&pix(y, fill.left()), fill.width(), color); } } - void plot_box(int32_t x, int32_t y, int32_t width, int32_t height, PixelType color) + void plot_box(int32_t x, int32_t y, int32_t width, int32_t height, PixelType color) noexcept { fill(color, rectangle(x, x + width - 1, y, y + height - 1)); } @@ -276,17 +276,17 @@ class bitmap_ind8 : public bitmap8_t public: // construction/destruction - bitmap_ind8(bitmap_ind8 &&) = default; - bitmap_ind8(int width = 0, int height = 0, int xslop = 0, int yslop = 0) : bitmap8_t(k_bitmap_format, width, height, xslop, yslop) { } - bitmap_ind8(uint8_t *base, int width, int height, int rowpixels) : bitmap8_t(k_bitmap_format, base, width, height, rowpixels) { } - bitmap_ind8(bitmap_ind8 &source, const rectangle &subrect) : bitmap8_t(k_bitmap_format, source, subrect) { } - void wrap(uint8_t *base, int width, int height, int rowpixels) { bitmap_t::wrap(base, width, height, rowpixels); } - void wrap(bitmap_ind8 &source, const rectangle &subrect) { bitmap_t::wrap(static_cast(source), subrect); } + bitmap_ind8(bitmap_ind8 &&) noexcept = default; + bitmap_ind8(int width = 0, int height = 0, int xslop = 0, int yslop = 0) noexcept : bitmap8_t(k_bitmap_format, width, height, xslop, yslop) { } + bitmap_ind8(uint8_t *base, int width, int height, int rowpixels) noexcept : bitmap8_t(k_bitmap_format, base, width, height, rowpixels) { } + bitmap_ind8(bitmap_ind8 &source, const rectangle &subrect) noexcept : bitmap8_t(k_bitmap_format, source, subrect) { } + void wrap(uint8_t *base, int width, int height, int rowpixels) noexcept { bitmap_t::wrap(base, width, height, rowpixels); } + void wrap(bitmap_ind8 &source, const rectangle &subrect) noexcept { bitmap_t::wrap(static_cast(source), subrect); } // getters - bitmap_format format() const { return k_bitmap_format; } + bitmap_format format() const noexcept { return k_bitmap_format; } - bitmap_ind8 &operator=(bitmap_ind8 &&) = default; + bitmap_ind8 &operator=(bitmap_ind8 &&) noexcept = default; }; // BITMAP_FORMAT_IND16 bitmaps @@ -296,17 +296,17 @@ class bitmap_ind16 : public bitmap16_t public: // construction/destruction - bitmap_ind16(bitmap_ind16 &&) = default; - bitmap_ind16(int width = 0, int height = 0, int xslop = 0, int yslop = 0) : bitmap16_t(k_bitmap_format, width, height, xslop, yslop) { } - bitmap_ind16(uint16_t *base, int width, int height, int rowpixels) : bitmap16_t(k_bitmap_format, base, width, height, rowpixels) { } - bitmap_ind16(bitmap_ind16 &source, const rectangle &subrect) : bitmap16_t(k_bitmap_format, source, subrect) { } - void wrap(uint16_t *base, int width, int height, int rowpixels) { bitmap_t::wrap(base, width, height, rowpixels); } - void wrap(bitmap_ind16 &source, const rectangle &subrect) { bitmap_t::wrap(static_cast(source), subrect); } + bitmap_ind16(bitmap_ind16 &&) noexcept = default; + bitmap_ind16(int width = 0, int height = 0, int xslop = 0, int yslop = 0) noexcept : bitmap16_t(k_bitmap_format, width, height, xslop, yslop) { } + bitmap_ind16(uint16_t *base, int width, int height, int rowpixels) noexcept : bitmap16_t(k_bitmap_format, base, width, height, rowpixels) { } + bitmap_ind16(bitmap_ind16 &source, const rectangle &subrect) noexcept : bitmap16_t(k_bitmap_format, source, subrect) { } + void wrap(uint16_t *base, int width, int height, int rowpixels) noexcept { bitmap_t::wrap(base, width, height, rowpixels); } + void wrap(bitmap_ind16 &source, const rectangle &subrect) noexcept { bitmap_t::wrap(static_cast(source), subrect); } // getters - bitmap_format format() const { return k_bitmap_format; } + bitmap_format format() const noexcept { return k_bitmap_format; } - bitmap_ind16 &operator=(bitmap_ind16 &&) = default; + bitmap_ind16 &operator=(bitmap_ind16 &&) noexcept = default; }; // BITMAP_FORMAT_IND32 bitmaps @@ -316,17 +316,17 @@ class bitmap_ind32 : public bitmap32_t public: // construction/destruction - bitmap_ind32(bitmap_ind32 &&) = default; - bitmap_ind32(int width = 0, int height = 0, int xslop = 0, int yslop = 0) : bitmap32_t(k_bitmap_format, width, height, xslop, yslop) { } - bitmap_ind32(uint32_t *base, int width, int height, int rowpixels) : bitmap32_t(k_bitmap_format, base, width, height, rowpixels) { } - bitmap_ind32(bitmap_ind32 &source, const rectangle &subrect) : bitmap32_t(k_bitmap_format, source, subrect) { } - void wrap(uint32_t *base, int width, int height, int rowpixels) { bitmap_t::wrap(base, width, height, rowpixels); } - void wrap(bitmap_ind32 &source, const rectangle &subrect) { bitmap_t::wrap(static_cast(source), subrect); } + bitmap_ind32(bitmap_ind32 &&) noexcept = default; + bitmap_ind32(int width = 0, int height = 0, int xslop = 0, int yslop = 0) noexcept : bitmap32_t(k_bitmap_format, width, height, xslop, yslop) { } + bitmap_ind32(uint32_t *base, int width, int height, int rowpixels) noexcept : bitmap32_t(k_bitmap_format, base, width, height, rowpixels) { } + bitmap_ind32(bitmap_ind32 &source, const rectangle &subrect) noexcept : bitmap32_t(k_bitmap_format, source, subrect) { } + void wrap(uint32_t *base, int width, int height, int rowpixels) noexcept { bitmap_t::wrap(base, width, height, rowpixels); } + void wrap(bitmap_ind32 &source, const rectangle &subrect) noexcept { bitmap_t::wrap(static_cast(source), subrect); } // getters - bitmap_format format() const { return k_bitmap_format; } + bitmap_format format() const noexcept { return k_bitmap_format; } - bitmap_ind32 &operator=(bitmap_ind32 &&) = default; + bitmap_ind32 &operator=(bitmap_ind32 &&) noexcept = default; }; // BITMAP_FORMAT_IND64 bitmaps @@ -336,17 +336,17 @@ class bitmap_ind64 : public bitmap64_t public: // construction/destruction - bitmap_ind64(bitmap_ind64 &&) = default; - bitmap_ind64(int width = 0, int height = 0, int xslop = 0, int yslop = 0) : bitmap64_t(k_bitmap_format, width, height, xslop, yslop) { } - bitmap_ind64(uint64_t *base, int width, int height, int rowpixels) : bitmap64_t(k_bitmap_format, base, width, height, rowpixels) { } - bitmap_ind64(bitmap_ind64 &source, const rectangle &subrect) : bitmap64_t(k_bitmap_format, source, subrect) { } - void wrap(uint64_t *base, int width, int height, int rowpixels) { bitmap_t::wrap(base, width, height, rowpixels); } - void wrap(bitmap_ind64 &source, const rectangle &subrect) { bitmap_t::wrap(static_cast(source), subrect); } + bitmap_ind64(bitmap_ind64 &&) noexcept = default; + bitmap_ind64(int width = 0, int height = 0, int xslop = 0, int yslop = 0) noexcept : bitmap64_t(k_bitmap_format, width, height, xslop, yslop) { } + bitmap_ind64(uint64_t *base, int width, int height, int rowpixels) noexcept : bitmap64_t(k_bitmap_format, base, width, height, rowpixels) { } + bitmap_ind64(bitmap_ind64 &source, const rectangle &subrect) noexcept : bitmap64_t(k_bitmap_format, source, subrect) { } + void wrap(uint64_t *base, int width, int height, int rowpixels) noexcept { bitmap_t::wrap(base, width, height, rowpixels); } + void wrap(bitmap_ind64 &source, const rectangle &subrect) noexcept { bitmap_t::wrap(static_cast(source), subrect); } // getters - bitmap_format format() const { return k_bitmap_format; } + bitmap_format format() const noexcept { return k_bitmap_format; } - bitmap_ind64 &operator=(bitmap_ind64 &&) = default; + bitmap_ind64 &operator=(bitmap_ind64 &&) noexcept = default; }; @@ -359,17 +359,17 @@ class bitmap_yuy16 : public bitmap16_t public: // construction/destruction - bitmap_yuy16(bitmap_yuy16 &&) = default; - bitmap_yuy16(int width = 0, int height = 0, int xslop = 0, int yslop = 0) : bitmap16_t(k_bitmap_format, width, height, xslop, yslop) { } - bitmap_yuy16(uint16_t *base, int width, int height, int rowpixels) : bitmap16_t(k_bitmap_format, base, width, height, rowpixels) { } - bitmap_yuy16(bitmap_yuy16 &source, const rectangle &subrect) : bitmap16_t(k_bitmap_format, source, subrect) { } - void wrap(uint16_t *base, int width, int height, int rowpixels) { bitmap_t::wrap(base, width, height, rowpixels); } - void wrap(bitmap_yuy16 &source, const rectangle &subrect) { bitmap_t::wrap(static_cast(source), subrect); } + bitmap_yuy16(bitmap_yuy16 &&) noexcept = default; + bitmap_yuy16(int width = 0, int height = 0, int xslop = 0, int yslop = 0) noexcept : bitmap16_t(k_bitmap_format, width, height, xslop, yslop) { } + bitmap_yuy16(uint16_t *base, int width, int height, int rowpixels) noexcept : bitmap16_t(k_bitmap_format, base, width, height, rowpixels) { } + bitmap_yuy16(bitmap_yuy16 &source, const rectangle &subrect) noexcept : bitmap16_t(k_bitmap_format, source, subrect) { } + void wrap(uint16_t *base, int width, int height, int rowpixels) noexcept { bitmap_t::wrap(base, width, height, rowpixels); } + void wrap(bitmap_yuy16 &source, const rectangle &subrect) noexcept { bitmap_t::wrap(static_cast(source), subrect); } // getters - bitmap_format format() const { return k_bitmap_format; } + bitmap_format format() const noexcept { return k_bitmap_format; } - bitmap_yuy16 &operator=(bitmap_yuy16 &&) = default; + bitmap_yuy16 &operator=(bitmap_yuy16 &&) noexcept = default; }; // BITMAP_FORMAT_RGB32 bitmaps @@ -379,17 +379,17 @@ class bitmap_rgb32 : public bitmap32_t public: // construction/destruction - bitmap_rgb32(bitmap_rgb32 &&) = default; - bitmap_rgb32(int width = 0, int height = 0, int xslop = 0, int yslop = 0) : bitmap32_t(k_bitmap_format, width, height, xslop, yslop) { } - bitmap_rgb32(uint32_t *base, int width, int height, int rowpixels) : bitmap32_t(k_bitmap_format, base, width, height, rowpixels) { } - bitmap_rgb32(bitmap_rgb32 &source, const rectangle &subrect) : bitmap32_t(k_bitmap_format, source, subrect) { } - void wrap(uint32_t *base, int width, int height, int rowpixels) { bitmap_t::wrap(base, width, height, rowpixels); } - void wrap(bitmap_rgb32 &source, const rectangle &subrect) { bitmap_t::wrap(static_cast(source), subrect); } + bitmap_rgb32(bitmap_rgb32 &&) noexcept = default; + bitmap_rgb32(int width = 0, int height = 0, int xslop = 0, int yslop = 0) noexcept : bitmap32_t(k_bitmap_format, width, height, xslop, yslop) { } + bitmap_rgb32(uint32_t *base, int width, int height, int rowpixels) noexcept : bitmap32_t(k_bitmap_format, base, width, height, rowpixels) { } + bitmap_rgb32(bitmap_rgb32 &source, const rectangle &subrect) noexcept : bitmap32_t(k_bitmap_format, source, subrect) { } + void wrap(uint32_t *base, int width, int height, int rowpixels) noexcept { bitmap_t::wrap(base, width, height, rowpixels); } + void wrap(bitmap_rgb32 &source, const rectangle &subrect) noexcept { bitmap_t::wrap(static_cast(source), subrect); } // getters - bitmap_format format() const { return k_bitmap_format; } + bitmap_format format() const noexcept { return k_bitmap_format; } - bitmap_rgb32 &operator=(bitmap_rgb32 &&) = default; + bitmap_rgb32 &operator=(bitmap_rgb32 &&) noexcept = default; }; // BITMAP_FORMAT_ARGB32 bitmaps @@ -399,17 +399,17 @@ class bitmap_argb32 : public bitmap32_t public: // construction/destruction - bitmap_argb32(bitmap_argb32 &&) = default; - bitmap_argb32(int width = 0, int height = 0, int xslop = 0, int yslop = 0) : bitmap32_t(k_bitmap_format, width, height, xslop, yslop) { } - bitmap_argb32(uint32_t *base, int width, int height, int rowpixels) : bitmap32_t(k_bitmap_format, base, width, height, rowpixels) { } - bitmap_argb32(bitmap_argb32 &source, const rectangle &subrect) : bitmap32_t(k_bitmap_format, source, subrect) { } - void wrap(uint32_t *base, int width, int height, int rowpixels) { bitmap_t::wrap(base, width, height, rowpixels); } - void wrap(bitmap_argb32 &source, const rectangle &subrect) { bitmap_t::wrap(static_cast(source), subrect); } + bitmap_argb32(bitmap_argb32 &&) noexcept = default; + bitmap_argb32(int width = 0, int height = 0, int xslop = 0, int yslop = 0) noexcept : bitmap32_t(k_bitmap_format, width, height, xslop, yslop) { } + bitmap_argb32(uint32_t *base, int width, int height, int rowpixels) noexcept : bitmap32_t(k_bitmap_format, base, width, height, rowpixels) { } + bitmap_argb32(bitmap_argb32 &source, const rectangle &subrect) noexcept : bitmap32_t(k_bitmap_format, source, subrect) { } + void wrap(uint32_t *base, int width, int height, int rowpixels) noexcept { bitmap_t::wrap(base, width, height, rowpixels); } + void wrap(bitmap_argb32 &source, const rectangle &subrect) noexcept { bitmap_t::wrap(static_cast(source), subrect); } // getters - bitmap_format format() const { return k_bitmap_format; } + bitmap_format format() const noexcept { return k_bitmap_format; } - bitmap_argb32 &operator=(bitmap_argb32 &&) = default; + bitmap_argb32 &operator=(bitmap_argb32 &&) noexcept = default; }; #endif // MAME_UTIL_BITMAP_H diff --git a/src/lib/util/corefile.cpp b/src/lib/util/corefile.cpp index 4fed0e0a28b..3d5c705ab86 100644 --- a/src/lib/util/corefile.cpp +++ b/src/lib/util/corefile.cpp @@ -63,7 +63,7 @@ public: virtual char *gets(char *s, int n) override { return m_file.gets(s, n); } virtual int puts(std::string_view s) override { return m_file.puts(s); } - virtual int vprintf(util::format_argument_pack const &args) override { return m_file.vprintf(args); } + virtual int vprintf(util::format_argument_pack const &args) override { return m_file.vprintf(args); } virtual std::error_condition truncate(std::uint64_t offset) override { return m_file.truncate(offset); } private: @@ -88,7 +88,7 @@ public: virtual int ungetc(int c) override; virtual char *gets(char *s, int n) override; virtual int puts(std::string_view s) override; - virtual int vprintf(util::format_argument_pack const &args) override; + virtual int vprintf(util::format_argument_pack const &args) override; protected: core_text_file(std::uint32_t openflags) @@ -534,12 +534,12 @@ int core_text_file::puts(std::string_view s) // vprintf - vfprintf to a text file //------------------------------------------------- -int core_text_file::vprintf(util::format_argument_pack const &args) +int core_text_file::vprintf(util::format_argument_pack const &args) { m_printf_buffer.clear(); m_printf_buffer.reserve(1024); m_printf_buffer.seekp(0, ovectorstream::beg); - util::stream_format(m_printf_buffer, args); + util::stream_format(m_printf_buffer, args); return puts(buf_to_string_view(m_printf_buffer)); } diff --git a/src/lib/util/corefile.h b/src/lib/util/corefile.h index 6a7d14ea439..315645d4e2c 100644 --- a/src/lib/util/corefile.h +++ b/src/lib/util/corefile.h @@ -87,7 +87,7 @@ public: virtual int puts(std::string_view s) = 0; // printf-style text write to a file - virtual int vprintf(util::format_argument_pack const &args) = 0; + virtual int vprintf(util::format_argument_pack const &args) = 0; template int printf(Format &&fmt, Params &&...args) { return vprintf(util::make_format_argument_pack(std::forward(fmt), std::forward(args)...)); diff --git a/src/lib/util/palette.cpp b/src/lib/util/palette.cpp index 730800d5249..612dc9042be 100644 --- a/src/lib/util/palette.cpp +++ b/src/lib/util/palette.cpp @@ -8,12 +8,12 @@ ******************************************************************************/ -#include - #include "palette.h" -#include -#include + #include +#include +#include +#include //************************************************************************** @@ -44,9 +44,7 @@ inline rgb_t palette_t::adjust_palette_entry(rgb_t entry, float brightness, floa // dirty_state - constructor //------------------------------------------------- -palette_client::dirty_state::dirty_state() - : m_mindirty(0), - m_maxdirty(0) +palette_client::dirty_state::dirty_state() : m_mindirty(0), m_maxdirty(0) { } @@ -56,7 +54,7 @@ palette_client::dirty_state::dirty_state() // min/max values //------------------------------------------------- -const uint32_t *palette_client::dirty_state::dirty_list(uint32_t &mindirty, uint32_t &maxdirty) +const uint32_t *palette_client::dirty_state::dirty_list(uint32_t &mindirty, uint32_t &maxdirty) noexcept { // fill in the mindirty/maxdirty mindirty = m_mindirty; @@ -92,7 +90,7 @@ void palette_client::dirty_state::resize(uint32_t colors) // mark_dirty - mark a single entry dirty //------------------------------------------------- -void palette_client::dirty_state::mark_dirty(uint32_t index) +void palette_client::dirty_state::mark_dirty(uint32_t index) noexcept { m_dirty[index / 32] |= 1 << (index % 32); m_mindirty = std::min(m_mindirty, index); @@ -105,7 +103,7 @@ void palette_client::dirty_state::mark_dirty(uint32_t index) // entries as clean //------------------------------------------------- -void palette_client::dirty_state::reset() +void palette_client::dirty_state::reset() noexcept { // erase relevant entries in the new live one if (m_mindirty <= m_maxdirty) @@ -168,20 +166,18 @@ palette_client::~palette_client() // list for a client //------------------------------------------------- -const uint32_t *palette_client::dirty_list(uint32_t &mindirty, uint32_t &maxdirty) +const uint32_t *palette_client::dirty_list(uint32_t &mindirty, uint32_t &maxdirty) noexcept { // if nothing to report, report nothing and don't swap - const uint32_t *result = m_live->dirty_list(mindirty, maxdirty); - if (result == nullptr) - return nullptr; - - // swap the live and previous lists - dirty_state *temp = m_live; - m_live = m_previous; - m_previous = temp; + uint32_t const *const result = m_live->dirty_list(mindirty, maxdirty); + if (result) + { + // swap the live and previous lists + std::swap(m_live, m_previous); - // reset new live one and return the pointer to the previous - m_live->reset(); + // reset new live one and return the pointer to the previous + m_live->reset(); + } return result; } @@ -266,7 +262,7 @@ palette_t::~palette_t() // palette_t - destructor //------------------------------------------------- -void palette_t::deref() +void palette_t::deref() noexcept { if (--m_refcount == 0) delete this; diff --git a/src/lib/util/palette.h b/src/lib/util/palette.h index d21c8ca8125..269389b67d6 100644 --- a/src/lib/util/palette.h +++ b/src/lib/util/palette.h @@ -100,12 +100,12 @@ public: ~palette_client(); // getters - palette_client *next() const { return m_next; } - palette_t &palette() const { return m_palette; } - const uint32_t *dirty_list(uint32_t &mindirty, uint32_t &maxdirty); + palette_client *next() const noexcept { return m_next; } + palette_t &palette() const noexcept { return m_palette; } + const uint32_t *dirty_list(uint32_t &mindirty, uint32_t &maxdirty) noexcept; // dirty marking - void mark_dirty(uint32_t index) { m_live->mark_dirty(index); } + void mark_dirty(uint32_t index) noexcept { m_live->mark_dirty(index); } private: // internal object to track dirty states @@ -116,10 +116,10 @@ private: dirty_state(); // operations - const uint32_t *dirty_list(uint32_t &mindirty, uint32_t &maxdirty); + const uint32_t *dirty_list(uint32_t &mindirty, uint32_t &maxdirty) noexcept; void resize(uint32_t colors); - void mark_dirty(uint32_t index); - void reset(); + void mark_dirty(uint32_t index) noexcept; + void reset() noexcept; private: // internal state @@ -149,15 +149,15 @@ public: static palette_t *alloc(uint32_t numcolors, uint32_t numgroups = 1); // reference counting - void ref() { m_refcount++; } - void deref(); + void ref() noexcept { m_refcount++; } + void deref() noexcept; // getters - int num_colors() const { return m_numcolors; } - int num_groups() const { return m_numgroups; } - int max_index() const { return m_numcolors * m_numgroups + 2; } - uint32_t black_entry() const { return m_numcolors * m_numgroups + 0; } - uint32_t white_entry() const { return m_numcolors * m_numgroups + 1; } + int num_colors() const noexcept { return m_numcolors; } + int num_groups() const noexcept { return m_numgroups; } + int max_index() const noexcept { return m_numcolors * m_numgroups + 2; } + uint32_t black_entry() const noexcept { return m_numcolors * m_numgroups + 0; } + uint32_t white_entry() const noexcept { return m_numcolors * m_numgroups + 1; } // overall adjustments void set_brightness(float brightness); @@ -165,9 +165,9 @@ public: void set_gamma(float gamma); // entry getters - rgb_t entry_color(uint32_t index) const { return (index < m_numcolors) ? m_entry_color[index] : rgb_t::black(); } - rgb_t entry_adjusted_color(uint32_t index) const { return (index < m_numcolors * m_numgroups) ? m_adjusted_color[index] : rgb_t::black(); } - float entry_contrast(uint32_t index) const { return (index < m_numcolors) ? m_entry_contrast[index] : 1.0f; } + rgb_t entry_color(uint32_t index) const noexcept { return (index < m_numcolors) ? m_entry_color[index] : rgb_t::black(); } + rgb_t entry_adjusted_color(uint32_t index) const noexcept { return (index < m_numcolors * m_numgroups) ? m_adjusted_color[index] : rgb_t::black(); } + float entry_contrast(uint32_t index) const noexcept { return (index < m_numcolors) ? m_entry_contrast[index] : 1.0f; } // entry setters void entry_set_color(uint32_t index, rgb_t rgb); @@ -177,9 +177,9 @@ public: void entry_set_contrast(uint32_t index, float contrast); // entry list getters - const rgb_t *entry_list_raw() const { return &m_entry_color[0]; } - const rgb_t *entry_list_adjusted() const { return &m_adjusted_color[0]; } - const rgb_t *entry_list_adjusted_rgb15() const { return &m_adjusted_rgb15[0]; } + const rgb_t *entry_list_raw() const noexcept { return &m_entry_color[0]; } + const rgb_t *entry_list_adjusted() const noexcept { return &m_adjusted_color[0]; } + const rgb_t *entry_list_adjusted_rgb15() const noexcept { return &m_adjusted_rgb15[0]; } // group adjustments void group_set_brightness(uint32_t group, float brightness); @@ -198,14 +198,14 @@ private: void update_adjusted_color(uint32_t group, uint32_t index); // internal state - uint32_t m_refcount; // reference count on the palette - uint32_t m_numcolors; // number of colors in the palette - uint32_t m_numgroups; // number of groups in the palette - - float m_brightness; // overall brightness value - float m_contrast; // overall contrast value - float m_gamma; // overall gamma value - uint8_t m_gamma_map[256]; // gamma map + uint32_t m_refcount; // reference count on the palette + uint32_t m_numcolors; // number of colors in the palette + uint32_t m_numgroups; // number of groups in the palette + + float m_brightness; // overall brightness value + float m_contrast; // overall contrast value + float m_gamma; // overall gamma value + uint8_t m_gamma_map[256]; // gamma map std::vector m_entry_color; // array of raw colors std::vector m_entry_contrast; // contrast value for each entry diff --git a/src/lib/util/strformat.cpp b/src/lib/util/strformat.cpp index cec14635e16..47bfdde6715 100644 --- a/src/lib/util/strformat.cpp +++ b/src/lib/util/strformat.cpp @@ -23,639 +23,126 @@ template class format_chars; template void format_flags::apply(std::ostream &) const; template void format_flags::apply(std::wostream &) const; -template void format_flags::apply(std::iostream &) const; -template void format_flags::apply(std::wiostream &) const; -template void format_flags::apply(std::ostringstream &) const; -template void format_flags::apply(std::wostringstream &) const; -template void format_flags::apply(std::stringstream &) const; -template void format_flags::apply(std::wstringstream &) const; -template void format_flags::apply(ovectorstream &) const; -template void format_flags::apply(wovectorstream &) const; -template void format_flags::apply(vectorstream &) const; -template void format_flags::apply(wvectorstream &) const; -template class format_argument; -template void format_argument::static_output(std::ostream &, format_flags const &, void const *); -template void format_argument::static_output(std::ostream &, format_flags const &, void const *); -template void format_argument::static_output(std::ostream &, format_flags const &, void const *); -template void format_argument::static_output(std::ostream &, format_flags const &, void const *); -template void format_argument::static_output(std::ostream &, format_flags const &, void const *); -template void format_argument::static_output(std::ostream &, format_flags const &, void const *); -template void format_argument::static_output(std::ostream &, format_flags const &, void const *); -template void format_argument::static_output(std::ostream &, format_flags const &, void const *); -template void format_argument::static_output(std::ostream &, format_flags const &, void const *); -template void format_argument::static_output(std::ostream &, format_flags const &, void const *); -template void format_argument::static_output(std::ostream &, format_flags const &, void const *); -template void format_argument::static_output(std::ostream &, format_flags const &, void const *); -template void format_argument::static_output(std::ostream &, format_flags const &, void const *); -template void format_argument::static_output(std::ostream &, format_flags const &, void const *); -template void format_argument::static_output(std::ostream &, format_flags const &, void const *); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); +template class format_argument; +template void format_argument::static_output(std::ostream &, format_flags const &, void const *); +template void format_argument::static_output(std::ostream &, format_flags const &, void const *); +template void format_argument::static_output(std::ostream &, format_flags const &, void const *); +template void format_argument::static_output(std::ostream &, format_flags const &, void const *); +template void format_argument::static_output(std::ostream &, format_flags const &, void const *); +template void format_argument::static_output(std::ostream &, format_flags const &, void const *); +template void format_argument::static_output(std::ostream &, format_flags const &, void const *); +template void format_argument::static_output(std::ostream &, format_flags const &, void const *); +template void format_argument::static_output(std::ostream &, format_flags const &, void const *); +template void format_argument::static_output(std::ostream &, format_flags const &, void const *); +template void format_argument::static_output(std::ostream &, format_flags const &, void const *); +template void format_argument::static_output(std::ostream &, format_flags const &, void const *); +template void format_argument::static_output(std::ostream &, format_flags const &, void const *); +template void format_argument::static_output(std::ostream &, format_flags const &, void const *); +template void format_argument::static_output(std::ostream &, format_flags const &, void const *); +template void format_argument::static_output(std::ostream &, format_flags const &, void const *); +template bool format_argument::static_make_integer(void const *, int &); +template bool format_argument::static_make_integer(void const *, int &); +template bool format_argument::static_make_integer(void const *, int &); +template bool format_argument::static_make_integer(void const *, int &); +template bool format_argument::static_make_integer(void const *, int &); +template bool format_argument::static_make_integer(void const *, int &); +template bool format_argument::static_make_integer(void const *, int &); +template bool format_argument::static_make_integer(void const *, int &); +template bool format_argument::static_make_integer(void const *, int &); +template bool format_argument::static_make_integer(void const *, int &); +template bool format_argument::static_make_integer(void const *, int &); +template bool format_argument::static_make_integer(void const *, int &); +template bool format_argument::static_make_integer(void const *, int &); +template bool format_argument::static_make_integer(void const *, int &); +template bool format_argument::static_make_integer(void const *, int &); +template bool format_argument::static_make_integer(void const *, int &); +template void format_argument::static_store_integer(void const *, std::streamoff); +template void format_argument::static_store_integer(void const *, std::streamoff); +template void format_argument::static_store_integer(void const *, std::streamoff); +template void format_argument::static_store_integer(void const *, std::streamoff); +template void format_argument::static_store_integer(void const *, std::streamoff); +template void format_argument::static_store_integer(void const *, std::streamoff); +template void format_argument::static_store_integer(void const *, std::streamoff); +template void format_argument::static_store_integer(void const *, std::streamoff); +template void format_argument::static_store_integer(void const *, std::streamoff); +template void format_argument::static_store_integer(void const *, std::streamoff); +template void format_argument::static_store_integer(void const *, std::streamoff); +template void format_argument::static_store_integer(void const *, std::streamoff); +template void format_argument::static_store_integer(void const *, std::streamoff); +template void format_argument::static_store_integer(void const *, std::streamoff); +template void format_argument::static_store_integer(void const *, std::streamoff); +template void format_argument::static_store_integer(void const *, std::streamoff); + +template class format_argument; +template void format_argument::static_output(std::wostream &, format_flags const &, void const *); +template void format_argument::static_output(std::wostream &, format_flags const &, void const *); +template void format_argument::static_output(std::wostream &, format_flags const &, void const *); +template void format_argument::static_output(std::wostream &, format_flags const &, void const *); +template void format_argument::static_output(std::wostream &, format_flags const &, void const *); +template void format_argument::static_output(std::wostream &, format_flags const &, void const *); +template void format_argument::static_output(std::wostream &, format_flags const &, void const *); +template void format_argument::static_output(std::wostream &, format_flags const &, void const *); +template void format_argument::static_output(std::wostream &, format_flags const &, void const *); +template void format_argument::static_output(std::wostream &, format_flags const &, void const *); +template void format_argument::static_output(std::wostream &, format_flags const &, void const *); +template void format_argument::static_output(std::wostream &, format_flags const &, void const *); +template void format_argument::static_output(std::wostream &, format_flags const &, void const *); +template void format_argument::static_output(std::wostream &, format_flags const &, void const *); +template void format_argument::static_output(std::wostream &, format_flags const &, void const *); +template void format_argument::static_output(std::wostream &, format_flags const &, void const *); +template void format_argument::static_output(std::wostream &, format_flags const &, void const *); +template bool format_argument::static_make_integer(void const *, int &); +template bool format_argument::static_make_integer(void const *, int &); +template bool format_argument::static_make_integer(void const *, int &); +template bool format_argument::static_make_integer(void const *, int &); +template bool format_argument::static_make_integer(void const *, int &); +template bool format_argument::static_make_integer(void const *, int &); +template bool format_argument::static_make_integer(void const *, int &); +template bool format_argument::static_make_integer(void const *, int &); +template bool format_argument::static_make_integer(void const *, int &); +template bool format_argument::static_make_integer(void const *, int &); +template bool format_argument::static_make_integer(void const *, int &); +template bool format_argument::static_make_integer(void const *, int &); +template bool format_argument::static_make_integer(void const *, int &); +template bool format_argument::static_make_integer(void const *, int &); +template bool format_argument::static_make_integer(void const *, int &); +template bool format_argument::static_make_integer(void const *, int &); +template bool format_argument::static_make_integer(void const *, int &); +template void format_argument::static_store_integer(void const *, std::streamoff); +template void format_argument::static_store_integer(void const *, std::streamoff); +template void format_argument::static_store_integer(void const *, std::streamoff); +template void format_argument::static_store_integer(void const *, std::streamoff); +template void format_argument::static_store_integer(void const *, std::streamoff); +template void format_argument::static_store_integer(void const *, std::streamoff); +template void format_argument::static_store_integer(void const *, std::streamoff); +template void format_argument::static_store_integer(void const *, std::streamoff); +template void format_argument::static_store_integer(void const *, std::streamoff); +template void format_argument::static_store_integer(void const *, std::streamoff); +template void format_argument::static_store_integer(void const *, std::streamoff); +template void format_argument::static_store_integer(void const *, std::streamoff); +template void format_argument::static_store_integer(void const *, std::streamoff); +template void format_argument::static_store_integer(void const *, std::streamoff); +template void format_argument::static_store_integer(void const *, std::streamoff); +template void format_argument::static_store_integer(void const *, std::streamoff); +template void format_argument::static_store_integer(void const *, std::streamoff); + +template class format_argument_pack; +template class format_argument_pack; + +template std::ostream::off_type stream_format(std::ostream &, format_argument_pack const &); +template std::wostream::off_type stream_format(std::wostream &, format_argument_pack const &); -template class format_argument; -template void format_argument::static_output(std::wostream &, format_flags const &, void const *); -template void format_argument::static_output(std::wostream &, format_flags const &, void const *); -template void format_argument::static_output(std::wostream &, format_flags const &, void const *); -template void format_argument::static_output(std::wostream &, format_flags const &, void const *); -template void format_argument::static_output(std::wostream &, format_flags const &, void const *); -template void format_argument::static_output(std::wostream &, format_flags const &, void const *); -template void format_argument::static_output(std::wostream &, format_flags const &, void const *); -template void format_argument::static_output(std::wostream &, format_flags const &, void const *); -template void format_argument::static_output(std::wostream &, format_flags const &, void const *); -template void format_argument::static_output(std::wostream &, format_flags const &, void const *); -template void format_argument::static_output(std::wostream &, format_flags const &, void const *); -template void format_argument::static_output(std::wostream &, format_flags const &, void const *); -template void format_argument::static_output(std::wostream &, format_flags const &, void const *); -template void format_argument::static_output(std::wostream &, format_flags const &, void const *); -template void format_argument::static_output(std::wostream &, format_flags const &, void const *); -template void format_argument::static_output(std::wostream &, format_flags const &, void const *); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); - -template class format_argument; -template void format_argument::static_output(std::iostream &, format_flags const &, void const *); -template void format_argument::static_output(std::iostream &, format_flags const &, void const *); -template void format_argument::static_output(std::iostream &, format_flags const &, void const *); -template void format_argument::static_output(std::iostream &, format_flags const &, void const *); -template void format_argument::static_output(std::iostream &, format_flags const &, void const *); -template void format_argument::static_output(std::iostream &, format_flags const &, void const *); -template void format_argument::static_output(std::iostream &, format_flags const &, void const *); -template void format_argument::static_output(std::iostream &, format_flags const &, void const *); -template void format_argument::static_output(std::iostream &, format_flags const &, void const *); -template void format_argument::static_output(std::iostream &, format_flags const &, void const *); -template void format_argument::static_output(std::iostream &, format_flags const &, void const *); -template void format_argument::static_output(std::iostream &, format_flags const &, void const *); -template void format_argument::static_output(std::iostream &, format_flags const &, void const *); -template void format_argument::static_output(std::iostream &, format_flags const &, void const *); -template void format_argument::static_output(std::iostream &, format_flags const &, void const *); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); - -template class format_argument; -template void format_argument::static_output(std::wiostream &, format_flags const &, void const *); -template void format_argument::static_output(std::wiostream &, format_flags const &, void const *); -template void format_argument::static_output(std::wiostream &, format_flags const &, void const *); -template void format_argument::static_output(std::wiostream &, format_flags const &, void const *); -template void format_argument::static_output(std::wiostream &, format_flags const &, void const *); -template void format_argument::static_output(std::wiostream &, format_flags const &, void const *); -template void format_argument::static_output(std::wiostream &, format_flags const &, void const *); -template void format_argument::static_output(std::wiostream &, format_flags const &, void const *); -template void format_argument::static_output(std::wiostream &, format_flags const &, void const *); -template void format_argument::static_output(std::wiostream &, format_flags const &, void const *); -template void format_argument::static_output(std::wiostream &, format_flags const &, void const *); -template void format_argument::static_output(std::wiostream &, format_flags const &, void const *); -template void format_argument::static_output(std::wiostream &, format_flags const &, void const *); -template void format_argument::static_output(std::wiostream &, format_flags const &, void const *); -template void format_argument::static_output(std::wiostream &, format_flags const &, void const *); -template void format_argument::static_output(std::wiostream &, format_flags const &, void const *); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); - -template class format_argument; -template void format_argument::static_output(std::ostringstream &, format_flags const &, void const *); -template void format_argument::static_output(std::ostringstream &, format_flags const &, void const *); -template void format_argument::static_output(std::ostringstream &, format_flags const &, void const *); -template void format_argument::static_output(std::ostringstream &, format_flags const &, void const *); -template void format_argument::static_output(std::ostringstream &, format_flags const &, void const *); -template void format_argument::static_output(std::ostringstream &, format_flags const &, void const *); -template void format_argument::static_output(std::ostringstream &, format_flags const &, void const *); -template void format_argument::static_output(std::ostringstream &, format_flags const &, void const *); -template void format_argument::static_output(std::ostringstream &, format_flags const &, void const *); -template void format_argument::static_output(std::ostringstream &, format_flags const &, void const *); -template void format_argument::static_output(std::ostringstream &, format_flags const &, void const *); -template void format_argument::static_output(std::ostringstream &, format_flags const &, void const *); -template void format_argument::static_output(std::ostringstream &, format_flags const &, void const *); -template void format_argument::static_output(std::ostringstream &, format_flags const &, void const *); -template void format_argument::static_output(std::ostringstream &, format_flags const &, void const *); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); - -template class format_argument; -template void format_argument::static_output(std::wostringstream &, format_flags const &, void const *); -template void format_argument::static_output(std::wostringstream &, format_flags const &, void const *); -template void format_argument::static_output(std::wostringstream &, format_flags const &, void const *); -template void format_argument::static_output(std::wostringstream &, format_flags const &, void const *); -template void format_argument::static_output(std::wostringstream &, format_flags const &, void const *); -template void format_argument::static_output(std::wostringstream &, format_flags const &, void const *); -template void format_argument::static_output(std::wostringstream &, format_flags const &, void const *); -template void format_argument::static_output(std::wostringstream &, format_flags const &, void const *); -template void format_argument::static_output(std::wostringstream &, format_flags const &, void const *); -template void format_argument::static_output(std::wostringstream &, format_flags const &, void const *); -template void format_argument::static_output(std::wostringstream &, format_flags const &, void const *); -template void format_argument::static_output(std::wostringstream &, format_flags const &, void const *); -template void format_argument::static_output(std::wostringstream &, format_flags const &, void const *); -template void format_argument::static_output(std::wostringstream &, format_flags const &, void const *); -template void format_argument::static_output(std::wostringstream &, format_flags const &, void const *); -template void format_argument::static_output(std::wostringstream &, format_flags const &, void const *); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); - -template class format_argument; -template void format_argument::static_output(std::stringstream &, format_flags const &, void const *); -template void format_argument::static_output(std::stringstream &, format_flags const &, void const *); -template void format_argument::static_output(std::stringstream &, format_flags const &, void const *); -template void format_argument::static_output(std::stringstream &, format_flags const &, void const *); -template void format_argument::static_output(std::stringstream &, format_flags const &, void const *); -template void format_argument::static_output(std::stringstream &, format_flags const &, void const *); -template void format_argument::static_output(std::stringstream &, format_flags const &, void const *); -template void format_argument::static_output(std::stringstream &, format_flags const &, void const *); -template void format_argument::static_output(std::stringstream &, format_flags const &, void const *); -template void format_argument::static_output(std::stringstream &, format_flags const &, void const *); -template void format_argument::static_output(std::stringstream &, format_flags const &, void const *); -template void format_argument::static_output(std::stringstream &, format_flags const &, void const *); -template void format_argument::static_output(std::stringstream &, format_flags const &, void const *); -template void format_argument::static_output(std::stringstream &, format_flags const &, void const *); -template void format_argument::static_output(std::stringstream &, format_flags const &, void const *); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); - -template class format_argument; -template void format_argument::static_output(std::wstringstream &, format_flags const &, void const *); -template void format_argument::static_output(std::wstringstream &, format_flags const &, void const *); -template void format_argument::static_output(std::wstringstream &, format_flags const &, void const *); -template void format_argument::static_output(std::wstringstream &, format_flags const &, void const *); -template void format_argument::static_output(std::wstringstream &, format_flags const &, void const *); -template void format_argument::static_output(std::wstringstream &, format_flags const &, void const *); -template void format_argument::static_output(std::wstringstream &, format_flags const &, void const *); -template void format_argument::static_output(std::wstringstream &, format_flags const &, void const *); -template void format_argument::static_output(std::wstringstream &, format_flags const &, void const *); -template void format_argument::static_output(std::wstringstream &, format_flags const &, void const *); -template void format_argument::static_output(std::wstringstream &, format_flags const &, void const *); -template void format_argument::static_output(std::wstringstream &, format_flags const &, void const *); -template void format_argument::static_output(std::wstringstream &, format_flags const &, void const *); -template void format_argument::static_output(std::wstringstream &, format_flags const &, void const *); -template void format_argument::static_output(std::wstringstream &, format_flags const &, void const *); -template void format_argument::static_output(std::wstringstream &, format_flags const &, void const *); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); - -template class format_argument; -template void format_argument::static_output(ovectorstream &, format_flags const &, void const *); -template void format_argument::static_output(ovectorstream &, format_flags const &, void const *); -template void format_argument::static_output(ovectorstream &, format_flags const &, void const *); -template void format_argument::static_output(ovectorstream &, format_flags const &, void const *); -template void format_argument::static_output(ovectorstream &, format_flags const &, void const *); -template void format_argument::static_output(ovectorstream &, format_flags const &, void const *); -template void format_argument::static_output(ovectorstream &, format_flags const &, void const *); -template void format_argument::static_output(ovectorstream &, format_flags const &, void const *); -template void format_argument::static_output(ovectorstream &, format_flags const &, void const *); -template void format_argument::static_output(ovectorstream &, format_flags const &, void const *); -template void format_argument::static_output(ovectorstream &, format_flags const &, void const *); -template void format_argument::static_output(ovectorstream &, format_flags const &, void const *); -template void format_argument::static_output(ovectorstream &, format_flags const &, void const *); -template void format_argument::static_output(ovectorstream &, format_flags const &, void const *); -template void format_argument::static_output(ovectorstream &, format_flags const &, void const *); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); - -template class format_argument; -template void format_argument::static_output(wovectorstream &, format_flags const &, void const *); -template void format_argument::static_output(wovectorstream &, format_flags const &, void const *); -template void format_argument::static_output(wovectorstream &, format_flags const &, void const *); -template void format_argument::static_output(wovectorstream &, format_flags const &, void const *); -template void format_argument::static_output(wovectorstream &, format_flags const &, void const *); -template void format_argument::static_output(wovectorstream &, format_flags const &, void const *); -template void format_argument::static_output(wovectorstream &, format_flags const &, void const *); -template void format_argument::static_output(wovectorstream &, format_flags const &, void const *); -template void format_argument::static_output(wovectorstream &, format_flags const &, void const *); -template void format_argument::static_output(wovectorstream &, format_flags const &, void const *); -template void format_argument::static_output(wovectorstream &, format_flags const &, void const *); -template void format_argument::static_output(wovectorstream &, format_flags const &, void const *); -template void format_argument::static_output(wovectorstream &, format_flags const &, void const *); -template void format_argument::static_output(wovectorstream &, format_flags const &, void const *); -template void format_argument::static_output(wovectorstream &, format_flags const &, void const *); -template void format_argument::static_output(wovectorstream &, format_flags const &, void const *); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); - -template class format_argument; -template void format_argument::static_output(vectorstream &, format_flags const &, void const *); -template void format_argument::static_output(vectorstream &, format_flags const &, void const *); -template void format_argument::static_output(vectorstream &, format_flags const &, void const *); -template void format_argument::static_output(vectorstream &, format_flags const &, void const *); -template void format_argument::static_output(vectorstream &, format_flags const &, void const *); -template void format_argument::static_output(vectorstream &, format_flags const &, void const *); -template void format_argument::static_output(vectorstream &, format_flags const &, void const *); -template void format_argument::static_output(vectorstream &, format_flags const &, void const *); -template void format_argument::static_output(vectorstream &, format_flags const &, void const *); -template void format_argument::static_output(vectorstream &, format_flags const &, void const *); -template void format_argument::static_output(vectorstream &, format_flags const &, void const *); -template void format_argument::static_output(vectorstream &, format_flags const &, void const *); -template void format_argument::static_output(vectorstream &, format_flags const &, void const *); -template void format_argument::static_output(vectorstream &, format_flags const &, void const *); -template void format_argument::static_output(vectorstream &, format_flags const &, void const *); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); - -template class format_argument; -template void format_argument::static_output(wvectorstream &, format_flags const &, void const *); -template void format_argument::static_output(wvectorstream &, format_flags const &, void const *); -template void format_argument::static_output(wvectorstream &, format_flags const &, void const *); -template void format_argument::static_output(wvectorstream &, format_flags const &, void const *); -template void format_argument::static_output(wvectorstream &, format_flags const &, void const *); -template void format_argument::static_output(wvectorstream &, format_flags const &, void const *); -template void format_argument::static_output(wvectorstream &, format_flags const &, void const *); -template void format_argument::static_output(wvectorstream &, format_flags const &, void const *); -template void format_argument::static_output(wvectorstream &, format_flags const &, void const *); -template void format_argument::static_output(wvectorstream &, format_flags const &, void const *); -template void format_argument::static_output(wvectorstream &, format_flags const &, void const *); -template void format_argument::static_output(wvectorstream &, format_flags const &, void const *); -template void format_argument::static_output(wvectorstream &, format_flags const &, void const *); -template void format_argument::static_output(wvectorstream &, format_flags const &, void const *); -template void format_argument::static_output(wvectorstream &, format_flags const &, void const *); -template void format_argument::static_output(wvectorstream &, format_flags const &, void const *); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template bool format_argument::static_make_integer(void const *, int &); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); -template void format_argument::static_store_integer(void const *, std::streamoff); - -template class format_argument_pack; -template class format_argument_pack; -template class format_argument_pack; -template class format_argument_pack; -template class format_argument_pack; -template class format_argument_pack; -template class format_argument_pack; -template class format_argument_pack; -template class format_argument_pack; -template class format_argument_pack; -template class format_argument_pack; -template class format_argument_pack; +} // namespace detail -template std::ostream::off_type stream_format(std::ostream &, format_argument_pack const &); -template std::wostream::off_type stream_format(std::wostream &, format_argument_pack const &); -template std::iostream::off_type stream_format(std::iostream &, format_argument_pack const &); -template std::iostream::off_type stream_format(std::iostream &, format_argument_pack const &); -template std::wiostream::off_type stream_format(std::wiostream &, format_argument_pack const &); -template std::wiostream::off_type stream_format(std::wiostream &, format_argument_pack const &); -template std::ostringstream::off_type stream_format(std::ostringstream &, format_argument_pack const &); -template std::ostringstream::off_type stream_format(std::ostringstream &, format_argument_pack const &); -template std::wostringstream::off_type stream_format(std::wostringstream &, format_argument_pack const &); -template std::wostringstream::off_type stream_format(std::wostringstream &, format_argument_pack const &); -template std::stringstream::off_type stream_format(std::stringstream &, format_argument_pack const &); -template std::stringstream::off_type stream_format(std::stringstream &, format_argument_pack const &); -template std::stringstream::off_type stream_format(std::stringstream &, format_argument_pack const &); -template std::wstringstream::off_type stream_format(std::wstringstream &, format_argument_pack const &); -template std::wstringstream::off_type stream_format(std::wstringstream &, format_argument_pack const &); -template std::wstringstream::off_type stream_format(std::wstringstream &, format_argument_pack const &); -template ovectorstream::off_type stream_format(ovectorstream &, format_argument_pack const &); -template ovectorstream::off_type stream_format(ovectorstream &, format_argument_pack const &); -template wovectorstream::off_type stream_format(wovectorstream &, format_argument_pack const &); -template wovectorstream::off_type stream_format(wovectorstream &, format_argument_pack const &); -template vectorstream::off_type stream_format(vectorstream &, format_argument_pack const &); -template vectorstream::off_type stream_format(vectorstream &, format_argument_pack const &); -template vectorstream::off_type stream_format(vectorstream &, format_argument_pack const &); -template wvectorstream::off_type stream_format(wvectorstream &, format_argument_pack const &); -template wvectorstream::off_type stream_format(wvectorstream &, format_argument_pack const &); -template wvectorstream::off_type stream_format(wvectorstream &, format_argument_pack const &); +template std::string string_format(format_argument_pack const &); +template std::string string_format(format_argument_pack &&); +template std::string string_format(std::locale const &, format_argument_pack const &); +template std::string string_format(std::locale const &, format_argument_pack &&); -} // namespace detail +template std::wstring string_format(format_argument_pack const &); +template std::wstring string_format(format_argument_pack &&); +template std::wstring string_format(std::locale const &, format_argument_pack const &); +template std::wstring string_format(std::locale const &, format_argument_pack &&); } // namespace util diff --git a/src/lib/util/strformat.h b/src/lib/util/strformat.h index e6d2ee0a0fe..e68cacec529 100644 --- a/src/lib/util/strformat.h +++ b/src/lib/util/strformat.h @@ -173,8 +173,6 @@ #pragma once -#include "vecstream.h" - #include #include #include @@ -360,52 +358,54 @@ public: { } - template void apply(Stream &stream) const + template > + void apply(std::basic_ostream &stream) const { - typedef format_chars chars; + using stream_type = std::basic_ostream; + using chars = format_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_type::basefield | + stream_type::adjustfield | + stream_type::floatfield | + stream_type::boolalpha | + stream_type::showbase | + stream_type::showpoint | + stream_type::showpos | + stream_type::uppercase); + + if (get_alternate_format()) stream.setf(stream_type::showbase | stream_type::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.setf(get_left_align() ? stream_type::left : get_zero_pad() ? stream_type::internal : stream_type::right); + if (positive_sign::plus == get_positive_sign()) stream.setf(stream_type::showpos); stream.precision((get_precision() < 0) ? 6 : get_precision()); stream.width(get_field_width()); - if (get_uppercase()) stream.setf(Stream::uppercase); + if (get_uppercase()) stream.setf(stream_type::uppercase); switch (get_conversion()) { case conversion::unspecified: break; case conversion::signed_decimal: case conversion::unsigned_decimal: - stream.setf(Stream::dec); + stream.setf(stream_type::dec); break; case conversion::octal: - stream.setf(Stream::oct); + stream.setf(stream_type::oct); break; case conversion::hexadecimal: - stream.setf(Stream::hex | Stream::scientific | Stream::fixed); + stream.setf(stream_type::hex | stream_type::scientific | stream_type::fixed); break; case conversion::scientific_decimal: - stream.setf(Stream::dec | Stream::scientific); + stream.setf(stream_type::dec | stream_type::scientific); break; case conversion::fixed_decimal: - stream.setf(Stream::dec | Stream::fixed); + stream.setf(stream_type::dec | stream_type::fixed); break; case conversion::floating_decimal: - stream.setf(Stream::dec); + stream.setf(stream_type::dec); break; case conversion::scientific_hexadecimal: - stream.setf(Stream::hex | Stream::scientific | Stream::fixed); + stream.setf(stream_type::hex | stream_type::scientific | stream_type::fixed); break; case conversion::character: case conversion::string: @@ -1012,10 +1012,12 @@ public: // NON-POLYMORPHIC ARGUMENT WRAPPER //************************************************************************** -template +template > class format_argument { public: + using stream_type = std::basic_ostream; + format_argument() : m_value(nullptr) , m_output_function(nullptr) @@ -1033,18 +1035,18 @@ public: { } - void output(Stream &str, format_flags const &flags) const { m_output_function(str, flags, m_value); } + void output(stream_type &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); } void store_integer(std::streamoff data) const { m_store_integer_function(m_value, data); } private: - typedef void (*output_function)(Stream &str, format_flags const &flags, void const *value); + typedef void (*output_function)(stream_type &str, format_flags const &flags, void const *value); typedef bool (*make_integer_function)(void const *value, int &result); typedef void (*store_integer_function)(void const *value, std::streamoff data); - template static void static_output(Stream &str, format_flags const &flags, void const *value) + template static void static_output(stream_type &str, format_flags const &flags, void const *value) { - format_output::apply(str, flags, *reinterpret_cast(value)); + format_output::apply(str, flags, *reinterpret_cast(value)); } template static bool static_make_integer(void const *value, int &result) @@ -1068,11 +1070,12 @@ private: // NON-POLYMORPHIC ARGUMENT PACK WRAPPER BASE //************************************************************************** -template +template > class format_argument_pack { public: - typedef typename Stream::char_type char_type; + using stream_type = std::basic_ostream; + using char_type = Character; typedef char_type const *iterator; iterator format_begin() const { @@ -1086,7 +1089,7 @@ public: { return m_argument_count; } - format_argument const &operator[](std::size_t index) const + format_argument const &operator[](std::size_t index) const { assert(m_argument_count > index); return m_arguments[index]; @@ -1103,7 +1106,7 @@ protected: template format_argument_pack( Format &&fmt, - format_argument const *arguments, + format_argument const *arguments, std::enable_if_t >::value, std::size_t> argument_count) : m_begin(fmt) , m_end(nullptr) @@ -1119,7 +1122,7 @@ protected: template format_argument_pack( Format &&fmt, - format_argument const *arguments, + format_argument const *arguments, std::enable_if_t >::value, std::size_t> argument_count) : m_begin(std::cbegin(fmt)) , m_end(std::cend(fmt)) @@ -1135,7 +1138,7 @@ protected: template format_argument_pack( Format &&fmt, - format_argument const *arguments, + format_argument const *arguments, std::enable_if_t >::value, std::size_t> argument_count) : m_begin(fmt.empty() ? nullptr : &*std::cbegin(fmt)) , m_end(fmt.empty() ? nullptr : (m_begin + std::distance(std::cbegin(fmt), std::cend(fmt)))) @@ -1149,17 +1152,17 @@ protected: assert(m_arguments || !m_argument_count); } - format_argument_pack(format_argument_pack const &) = default; - format_argument_pack(format_argument_pack &&) = default; - format_argument_pack &operator=(format_argument_pack const &) = default; - format_argument_pack &operator=(format_argument_pack &&) = default; + format_argument_pack(format_argument_pack const &) = default; + format_argument_pack(format_argument_pack &&) = default; + format_argument_pack &operator=(format_argument_pack const &) = default; + format_argument_pack &operator=(format_argument_pack &&) = default; private: - iterator m_begin; - iterator m_end; - bool m_check_nul; - format_argument const *m_arguments; - std::size_t m_argument_count; + iterator m_begin; + iterator m_end; + bool m_check_nul; + format_argument const *m_arguments; + std::size_t m_argument_count; }; @@ -1167,27 +1170,27 @@ private: // ARGUMENT PACK WRAPPER IMPLEMENTATION //************************************************************************** -template +template class format_argument_pack_impl - : private std::array, Count> - , public format_argument_pack + : private std::array, Count> + , public format_argument_pack { public: - using typename format_argument_pack::iterator; - using format_argument_pack::operator[]; + using typename format_argument_pack::iterator; + using format_argument_pack::operator[]; template format_argument_pack_impl(Format &&fmt, Params &&... args) - : std::array, Count>({ { format_argument(std::forward(args))... } }) - , format_argument_pack(std::forward(fmt), Count ? &*this->cbegin() : nullptr, Count) + : std::array, Count>({ { format_argument(std::forward(args))... } }) + , format_argument_pack(std::forward(fmt), Count ? &*this->cbegin() : nullptr, Count) { static_assert(sizeof...(Params) == Count, "Wrong number of constructor arguments"); } - format_argument_pack_impl(format_argument_pack_impl const &) = default; - format_argument_pack_impl(format_argument_pack_impl &&) = default; - format_argument_pack_impl &operator=(format_argument_pack_impl const &) = default; - format_argument_pack_impl &operator=(format_argument_pack_impl &&) = default; + format_argument_pack_impl(format_argument_pack_impl const &) = default; + format_argument_pack_impl(format_argument_pack_impl &&) = default; + format_argument_pack_impl &operator=(format_argument_pack_impl const &) = default; + format_argument_pack_impl &operator=(format_argument_pack_impl &&) = default; }; @@ -1196,9 +1199,9 @@ public: //************************************************************************** template -inline format_argument_pack_impl make_format_argument_pack(Format &&fmt, Params &&... args) +inline auto make_format_argument_pack(Format &&fmt, Params &&... args) { - return format_argument_pack_impl(std::forward(fmt), std::forward(args)...); + return format_argument_pack_impl(std::forward(fmt), std::forward(args)...); } @@ -1546,15 +1549,16 @@ private: // CORE FORMATTING FUNCTION //************************************************************************** -template -typename Stream::off_type stream_format(Stream &str, format_argument_pack const &args) +template > +typename std::basic_ostream::off_type stream_format(std::basic_ostream &str, format_argument_pack const &args) { - typedef format_helper > format_helper; - typedef typename format_argument_pack::iterator iterator; + using stream_type = std::basic_ostream; + using format_helper = format_helper >; + using iterator = typename format_argument_pack::iterator; class stream_preserver { public: - stream_preserver(Stream &stream) + stream_preserver(stream_type &stream) : m_stream(stream) , m_fill(stream.fill()) , m_flags(stream.flags()) @@ -1570,14 +1574,14 @@ typename Stream::off_type stream_format(Stream &str, format_argument_pack 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_type &m_stream; + typename stream_type::char_type m_fill; + typename stream_type::fmtflags m_flags; + std::streamsize m_precision; + std::streamsize m_width; }; - typename Stream::pos_type const begin(str.tellp()); + typename stream_type::pos_type const begin(str.tellp()); stream_preserver const preserver(str); int next_pos(1); iterator start = args.format_begin(); @@ -1650,7 +1654,7 @@ typename Stream::off_type stream_format(Stream &str, format_argument_pack } else if (format_flags::conversion::percent == flags.get_conversion()) { - str << typename Stream::char_type(format_chars::percent); + str << Character(format_chars::percent); start = it; } else @@ -1661,10 +1665,10 @@ typename Stream::off_type stream_format(Stream &str, format_argument_pack continue; if (format_flags::conversion::tell == flags.get_conversion()) { - typename Stream::pos_type const current(str.tellp()); + typename stream_type::pos_type const current(str.tellp()); args[arg_pos - 1].store_integer( - ((typename Stream::pos_type(-1) == begin) || (typename Stream::pos_type(-1) == current)) - ? typename Stream::off_type(-1) + ((typename stream_type::pos_type(-1) == begin) || (typename stream_type::pos_type(-1) == current)) + ? typename stream_type::off_type(-1) : (current - begin)); } else @@ -1675,9 +1679,9 @@ typename Stream::off_type stream_format(Stream &str, format_argument_pack } } } - typename Stream::pos_type const end(str.tellp()); - return ((typename Stream::pos_type(-1) == begin) || (typename Stream::pos_type(-1) == end)) - ? typename Stream::off_type(-1) + typename stream_type::pos_type const end(str.tellp()); + return ((typename stream_type::pos_type(-1) == begin) || (typename stream_type::pos_type(-1) == end)) + ? typename stream_type::off_type(-1) : (end - begin); } @@ -1694,14 +1698,14 @@ inline typename Stream::off_type stream_format(Stream &str, Format const &fmt, P return detail::stream_format(str, detail::make_format_argument_pack(fmt, std::forward(args)...)); } -template -inline typename Stream::off_type stream_format(Stream &str, detail::format_argument_pack const &args) +template +inline typename Stream::off_type stream_format(Stream &str, detail::format_argument_pack const &args) { return detail::stream_format(str, args); } -template -inline typename Stream::off_type stream_format(Stream &str, detail::format_argument_pack &&args) +template +inline typename Stream::off_type stream_format(Stream &str, detail::format_argument_pack &&args) { return detail::stream_format(str, args); } @@ -1714,7 +1718,7 @@ inline typename Stream::off_type stream_format(Stream &str, detail::format_argum template inline String string_format(Format &&fmt, Params &&... args) { - typedef std::basic_ostringstream ostream; + using ostream = std::basic_ostringstream; ostream str; stream_format(str, fmt, std::forward(args)...); return str.str(); @@ -1723,45 +1727,45 @@ inline String string_format(Format &&fmt, Params &&... args) template inline String string_format(std::locale const &locale, Format &&fmt, Params &&... args) { - typedef std::basic_ostringstream ostream; + using ostream = std::basic_ostringstream; ostream str; str.imbue(locale); stream_format(str, fmt, std::forward(args)...); return str.str(); }; -template -inline String string_format(detail::format_argument_pack const &args) +template +inline String string_format(detail::format_argument_pack const &args) { - typedef std::basic_ostringstream ostream; + using ostream = std::basic_ostringstream; ostream str; detail::stream_format(str, args); return str.str(); }; -template -inline String string_format(detail::format_argument_pack &&args) +template +inline String string_format(detail::format_argument_pack &&args) { - typedef std::basic_ostringstream ostream; + using ostream = std::basic_ostringstream; ostream str; detail::stream_format(str, std::move(args)); return str.str(); }; -template -inline String string_format(std::locale const &locale, detail::format_argument_pack const &args) +template +inline String string_format(std::locale const &locale, detail::format_argument_pack const &args) { - typedef std::basic_ostringstream ostream; + using ostream = std::basic_ostringstream; ostream str; str.imbue(locale); detail::stream_format(str, args); return str.str(); }; -template -inline String string_format(std::locale const &locale, detail::format_argument_pack &&args) +template +inline String string_format(std::locale const &locale, detail::format_argument_pack &&args) { - typedef std::basic_ostringstream ostream; + using ostream = std::basic_ostringstream; ostream str; str.imbue(locale); detail::stream_format(str, std::move(args)); @@ -1792,641 +1796,128 @@ extern template class format_chars; extern template void format_flags::apply(std::ostream &) const; extern template void format_flags::apply(std::wostream &) const; -extern template void format_flags::apply(std::iostream &) const; -extern template void format_flags::apply(std::wiostream &) const; -extern template void format_flags::apply(std::ostringstream &) const; -extern template void format_flags::apply(std::wostringstream &) const; -extern template void format_flags::apply(std::stringstream &) const; -extern template void format_flags::apply(std::wstringstream &) const; -extern template void format_flags::apply(ovectorstream &) const; -extern template void format_flags::apply(wovectorstream &) const; -extern template void format_flags::apply(vectorstream &) const; -extern template void format_flags::apply(wvectorstream &) const; - -extern template class format_argument; -extern template void format_argument::static_output(std::ostream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::ostream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::ostream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::ostream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::ostream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::ostream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::ostream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::ostream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::ostream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::ostream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::ostream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::ostream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::ostream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::ostream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::ostream &, format_flags const &, void const *); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); - -extern template class format_argument; -extern template void format_argument::static_output(std::wostream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::wostream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::wostream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::wostream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::wostream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::wostream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::wostream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::wostream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::wostream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::wostream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::wostream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::wostream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::wostream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::wostream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::wostream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::wostream &, format_flags const &, void const *); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); - -extern template class format_argument; -extern template void format_argument::static_output(std::iostream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::iostream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::iostream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::iostream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::iostream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::iostream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::iostream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::iostream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::iostream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::iostream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::iostream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::iostream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::iostream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::iostream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::iostream &, format_flags const &, void const *); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); - -extern template class format_argument; -extern template void format_argument::static_output(std::wiostream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::wiostream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::wiostream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::wiostream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::wiostream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::wiostream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::wiostream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::wiostream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::wiostream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::wiostream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::wiostream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::wiostream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::wiostream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::wiostream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::wiostream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::wiostream &, format_flags const &, void const *); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); - -extern template class format_argument; -extern template void format_argument::static_output(std::ostringstream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::ostringstream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::ostringstream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::ostringstream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::ostringstream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::ostringstream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::ostringstream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::ostringstream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::ostringstream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::ostringstream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::ostringstream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::ostringstream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::ostringstream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::ostringstream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::ostringstream &, format_flags const &, void const *); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); - -extern template class format_argument; -extern template void format_argument::static_output(std::wostringstream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::wostringstream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::wostringstream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::wostringstream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::wostringstream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::wostringstream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::wostringstream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::wostringstream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::wostringstream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::wostringstream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::wostringstream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::wostringstream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::wostringstream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::wostringstream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::wostringstream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::wostringstream &, format_flags const &, void const *); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); - -extern template class format_argument; -extern template void format_argument::static_output(std::stringstream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::stringstream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::stringstream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::stringstream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::stringstream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::stringstream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::stringstream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::stringstream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::stringstream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::stringstream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::stringstream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::stringstream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::stringstream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::stringstream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::stringstream &, format_flags const &, void const *); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); - -extern template class format_argument; -extern template void format_argument::static_output(std::wstringstream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::wstringstream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::wstringstream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::wstringstream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::wstringstream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::wstringstream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::wstringstream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::wstringstream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::wstringstream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::wstringstream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::wstringstream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::wstringstream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::wstringstream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::wstringstream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::wstringstream &, format_flags const &, void const *); -extern template void format_argument::static_output(std::wstringstream &, format_flags const &, void const *); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); - -extern template class format_argument; -extern template void format_argument::static_output(ovectorstream &, format_flags const &, void const *); -extern template void format_argument::static_output(ovectorstream &, format_flags const &, void const *); -extern template void format_argument::static_output(ovectorstream &, format_flags const &, void const *); -extern template void format_argument::static_output(ovectorstream &, format_flags const &, void const *); -extern template void format_argument::static_output(ovectorstream &, format_flags const &, void const *); -extern template void format_argument::static_output(ovectorstream &, format_flags const &, void const *); -extern template void format_argument::static_output(ovectorstream &, format_flags const &, void const *); -extern template void format_argument::static_output(ovectorstream &, format_flags const &, void const *); -extern template void format_argument::static_output(ovectorstream &, format_flags const &, void const *); -extern template void format_argument::static_output(ovectorstream &, format_flags const &, void const *); -extern template void format_argument::static_output(ovectorstream &, format_flags const &, void const *); -extern template void format_argument::static_output(ovectorstream &, format_flags const &, void const *); -extern template void format_argument::static_output(ovectorstream &, format_flags const &, void const *); -extern template void format_argument::static_output(ovectorstream &, format_flags const &, void const *); -extern template void format_argument::static_output(ovectorstream &, format_flags const &, void const *); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); - -extern template class format_argument; -extern template void format_argument::static_output(wovectorstream &, format_flags const &, void const *); -extern template void format_argument::static_output(wovectorstream &, format_flags const &, void const *); -extern template void format_argument::static_output(wovectorstream &, format_flags const &, void const *); -extern template void format_argument::static_output(wovectorstream &, format_flags const &, void const *); -extern template void format_argument::static_output(wovectorstream &, format_flags const &, void const *); -extern template void format_argument::static_output(wovectorstream &, format_flags const &, void const *); -extern template void format_argument::static_output(wovectorstream &, format_flags const &, void const *); -extern template void format_argument::static_output(wovectorstream &, format_flags const &, void const *); -extern template void format_argument::static_output(wovectorstream &, format_flags const &, void const *); -extern template void format_argument::static_output(wovectorstream &, format_flags const &, void const *); -extern template void format_argument::static_output(wovectorstream &, format_flags const &, void const *); -extern template void format_argument::static_output(wovectorstream &, format_flags const &, void const *); -extern template void format_argument::static_output(wovectorstream &, format_flags const &, void const *); -extern template void format_argument::static_output(wovectorstream &, format_flags const &, void const *); -extern template void format_argument::static_output(wovectorstream &, format_flags const &, void const *); -extern template void format_argument::static_output(wovectorstream &, format_flags const &, void const *); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); - -extern template class format_argument; -extern template void format_argument::static_output(vectorstream &, format_flags const &, void const *); -extern template void format_argument::static_output(vectorstream &, format_flags const &, void const *); -extern template void format_argument::static_output(vectorstream &, format_flags const &, void const *); -extern template void format_argument::static_output(vectorstream &, format_flags const &, void const *); -extern template void format_argument::static_output(vectorstream &, format_flags const &, void const *); -extern template void format_argument::static_output(vectorstream &, format_flags const &, void const *); -extern template void format_argument::static_output(vectorstream &, format_flags const &, void const *); -extern template void format_argument::static_output(vectorstream &, format_flags const &, void const *); -extern template void format_argument::static_output(vectorstream &, format_flags const &, void const *); -extern template void format_argument::static_output(vectorstream &, format_flags const &, void const *); -extern template void format_argument::static_output(vectorstream &, format_flags const &, void const *); -extern template void format_argument::static_output(vectorstream &, format_flags const &, void const *); -extern template void format_argument::static_output(vectorstream &, format_flags const &, void const *); -extern template void format_argument::static_output(vectorstream &, format_flags const &, void const *); -extern template void format_argument::static_output(vectorstream &, format_flags const &, void const *); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); - -extern template class format_argument; -extern template void format_argument::static_output(wvectorstream &, format_flags const &, void const *); -extern template void format_argument::static_output(wvectorstream &, format_flags const &, void const *); -extern template void format_argument::static_output(wvectorstream &, format_flags const &, void const *); -extern template void format_argument::static_output(wvectorstream &, format_flags const &, void const *); -extern template void format_argument::static_output(wvectorstream &, format_flags const &, void const *); -extern template void format_argument::static_output(wvectorstream &, format_flags const &, void const *); -extern template void format_argument::static_output(wvectorstream &, format_flags const &, void const *); -extern template void format_argument::static_output(wvectorstream &, format_flags const &, void const *); -extern template void format_argument::static_output(wvectorstream &, format_flags const &, void const *); -extern template void format_argument::static_output(wvectorstream &, format_flags const &, void const *); -extern template void format_argument::static_output(wvectorstream &, format_flags const &, void const *); -extern template void format_argument::static_output(wvectorstream &, format_flags const &, void const *); -extern template void format_argument::static_output(wvectorstream &, format_flags const &, void const *); -extern template void format_argument::static_output(wvectorstream &, format_flags const &, void const *); -extern template void format_argument::static_output(wvectorstream &, format_flags const &, void const *); -extern template void format_argument::static_output(wvectorstream &, format_flags const &, void const *); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template bool format_argument::static_make_integer(void const *, int &); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); -extern template void format_argument::static_store_integer(void const *, std::streamoff); - -extern template class format_argument_pack; -extern template class format_argument_pack; -extern template class format_argument_pack; -extern template class format_argument_pack; -extern template class format_argument_pack; -extern template class format_argument_pack; -extern template class format_argument_pack; -extern template class format_argument_pack; -extern template class format_argument_pack; -extern template class format_argument_pack; -extern template class format_argument_pack; -extern template class format_argument_pack; - -extern template std::ostream::off_type stream_format(std::ostream &, format_argument_pack const &); -extern template std::wostream::off_type stream_format(std::wostream &, format_argument_pack const &); -extern template std::iostream::off_type stream_format(std::iostream &, format_argument_pack const &); -extern template std::iostream::off_type stream_format(std::iostream &, format_argument_pack const &); -extern template std::wiostream::off_type stream_format(std::wiostream &, format_argument_pack const &); -extern template std::wiostream::off_type stream_format(std::wiostream &, format_argument_pack const &); -extern template std::ostringstream::off_type stream_format(std::ostringstream &, format_argument_pack const &); -extern template std::ostringstream::off_type stream_format(std::ostringstream &, format_argument_pack const &); -extern template std::wostringstream::off_type stream_format(std::wostringstream &, format_argument_pack const &); -extern template std::wostringstream::off_type stream_format(std::wostringstream &, format_argument_pack const &); -extern template std::stringstream::off_type stream_format(std::stringstream &, format_argument_pack const &); -extern template std::stringstream::off_type stream_format(std::stringstream &, format_argument_pack const &); -extern template std::stringstream::off_type stream_format(std::stringstream &, format_argument_pack const &); -extern template std::wstringstream::off_type stream_format(std::wstringstream &, format_argument_pack const &); -extern template std::wstringstream::off_type stream_format(std::wstringstream &, format_argument_pack const &); -extern template std::wstringstream::off_type stream_format(std::wstringstream &, format_argument_pack const &); -extern template ovectorstream::off_type stream_format(ovectorstream &, format_argument_pack const &); -extern template ovectorstream::off_type stream_format(ovectorstream &, format_argument_pack const &); -extern template wovectorstream::off_type stream_format(wovectorstream &, format_argument_pack const &); -extern template wovectorstream::off_type stream_format(wovectorstream &, format_argument_pack const &); -extern template vectorstream::off_type stream_format(vectorstream &, format_argument_pack const &); -extern template vectorstream::off_type stream_format(vectorstream &, format_argument_pack const &); -extern template vectorstream::off_type stream_format(vectorstream &, format_argument_pack const &); -extern template wvectorstream::off_type stream_format(wvectorstream &, format_argument_pack const &); -extern template wvectorstream::off_type stream_format(wvectorstream &, format_argument_pack const &); -extern template wvectorstream::off_type stream_format(wvectorstream &, format_argument_pack const &); + +extern template class format_argument; +extern template void format_argument::static_output(std::ostream &, format_flags const &, void const *); +extern template void format_argument::static_output(std::ostream &, format_flags const &, void const *); +extern template void format_argument::static_output(std::ostream &, format_flags const &, void const *); +extern template void format_argument::static_output(std::ostream &, format_flags const &, void const *); +extern template void format_argument::static_output(std::ostream &, format_flags const &, void const *); +extern template void format_argument::static_output(std::ostream &, format_flags const &, void const *); +extern template void format_argument::static_output(std::ostream &, format_flags const &, void const *); +extern template void format_argument::static_output(std::ostream &, format_flags const &, void const *); +extern template void format_argument::static_output(std::ostream &, format_flags const &, void const *); +extern template void format_argument::static_output(std::ostream &, format_flags const &, void const *); +extern template void format_argument::static_output(std::ostream &, format_flags const &, void const *); +extern template void format_argument::static_output(std::ostream &, format_flags const &, void const *); +extern template void format_argument::static_output(std::ostream &, format_flags const &, void const *); +extern template void format_argument::static_output(std::ostream &, format_flags const &, void const *); +extern template void format_argument::static_output(std::ostream &, format_flags const &, void const *); +extern template void format_argument::static_output(std::ostream &, format_flags const &, void const *); +extern template bool format_argument::static_make_integer(void const *, int &); +extern template bool format_argument::static_make_integer(void const *, int &); +extern template bool format_argument::static_make_integer(void const *, int &); +extern template bool format_argument::static_make_integer(void const *, int &); +extern template bool format_argument::static_make_integer(void const *, int &); +extern template bool format_argument::static_make_integer(void const *, int &); +extern template bool format_argument::static_make_integer(void const *, int &); +extern template bool format_argument::static_make_integer(void const *, int &); +extern template bool format_argument::static_make_integer(void const *, int &); +extern template bool format_argument::static_make_integer(void const *, int &); +extern template bool format_argument::static_make_integer(void const *, int &); +extern template bool format_argument::static_make_integer(void const *, int &); +extern template bool format_argument::static_make_integer(void const *, int &); +extern template bool format_argument::static_make_integer(void const *, int &); +extern template bool format_argument::static_make_integer(void const *, int &); +extern template bool format_argument::static_make_integer(void const *, int &); +extern template void format_argument::static_store_integer(void const *, std::streamoff); +extern template void format_argument::static_store_integer(void const *, std::streamoff); +extern template void format_argument::static_store_integer(void const *, std::streamoff); +extern template void format_argument::static_store_integer(void const *, std::streamoff); +extern template void format_argument::static_store_integer(void const *, std::streamoff); +extern template void format_argument::static_store_integer(void const *, std::streamoff); +extern template void format_argument::static_store_integer(void const *, std::streamoff); +extern template void format_argument::static_store_integer(void const *, std::streamoff); +extern template void format_argument::static_store_integer(void const *, std::streamoff); +extern template void format_argument::static_store_integer(void const *, std::streamoff); +extern template void format_argument::static_store_integer(void const *, std::streamoff); +extern template void format_argument::static_store_integer(void const *, std::streamoff); +extern template void format_argument::static_store_integer(void const *, std::streamoff); +extern template void format_argument::static_store_integer(void const *, std::streamoff); +extern template void format_argument::static_store_integer(void const *, std::streamoff); +extern template void format_argument::static_store_integer(void const *, std::streamoff); + +extern template class format_argument; +extern template void format_argument::static_output(std::wostream &, format_flags const &, void const *); +extern template void format_argument::static_output(std::wostream &, format_flags const &, void const *); +extern template void format_argument::static_output(std::wostream &, format_flags const &, void const *); +extern template void format_argument::static_output(std::wostream &, format_flags const &, void const *); +extern template void format_argument::static_output(std::wostream &, format_flags const &, void const *); +extern template void format_argument::static_output(std::wostream &, format_flags const &, void const *); +extern template void format_argument::static_output(std::wostream &, format_flags const &, void const *); +extern template void format_argument::static_output(std::wostream &, format_flags const &, void const *); +extern template void format_argument::static_output(std::wostream &, format_flags const &, void const *); +extern template void format_argument::static_output(std::wostream &, format_flags const &, void const *); +extern template void format_argument::static_output(std::wostream &, format_flags const &, void const *); +extern template void format_argument::static_output(std::wostream &, format_flags const &, void const *); +extern template void format_argument::static_output(std::wostream &, format_flags const &, void const *); +extern template void format_argument::static_output(std::wostream &, format_flags const &, void const *); +extern template void format_argument::static_output(std::wostream &, format_flags const &, void const *); +extern template void format_argument::static_output(std::wostream &, format_flags const &, void const *); +extern template void format_argument::static_output(std::wostream &, format_flags const &, void const *); +extern template bool format_argument::static_make_integer(void const *, int &); +extern template bool format_argument::static_make_integer(void const *, int &); +extern template bool format_argument::static_make_integer(void const *, int &); +extern template bool format_argument::static_make_integer(void const *, int &); +extern template bool format_argument::static_make_integer(void const *, int &); +extern template bool format_argument::static_make_integer(void const *, int &); +extern template bool format_argument::static_make_integer(void const *, int &); +extern template bool format_argument::static_make_integer(void const *, int &); +extern template bool format_argument::static_make_integer(void const *, int &); +extern template bool format_argument::static_make_integer(void const *, int &); +extern template bool format_argument::static_make_integer(void const *, int &); +extern template bool format_argument::static_make_integer(void const *, int &); +extern template bool format_argument::static_make_integer(void const *, int &); +extern template bool format_argument::static_make_integer(void const *, int &); +extern template bool format_argument::static_make_integer(void const *, int &); +extern template bool format_argument::static_make_integer(void const *, int &); +extern template bool format_argument::static_make_integer(void const *, int &); +extern template void format_argument::static_store_integer(void const *, std::streamoff); +extern template void format_argument::static_store_integer(void const *, std::streamoff); +extern template void format_argument::static_store_integer(void const *, std::streamoff); +extern template void format_argument::static_store_integer(void const *, std::streamoff); +extern template void format_argument::static_store_integer(void const *, std::streamoff); +extern template void format_argument::static_store_integer(void const *, std::streamoff); +extern template void format_argument::static_store_integer(void const *, std::streamoff); +extern template void format_argument::static_store_integer(void const *, std::streamoff); +extern template void format_argument::static_store_integer(void const *, std::streamoff); +extern template void format_argument::static_store_integer(void const *, std::streamoff); +extern template void format_argument::static_store_integer(void const *, std::streamoff); +extern template void format_argument::static_store_integer(void const *, std::streamoff); +extern template void format_argument::static_store_integer(void const *, std::streamoff); +extern template void format_argument::static_store_integer(void const *, std::streamoff); +extern template void format_argument::static_store_integer(void const *, std::streamoff); +extern template void format_argument::static_store_integer(void const *, std::streamoff); +extern template void format_argument::static_store_integer(void const *, std::streamoff); + +extern template class format_argument_pack; +extern template class format_argument_pack; + +extern template std::ostream::off_type stream_format(std::ostream &, format_argument_pack const &); +extern template std::wostream::off_type stream_format(std::wostream &, format_argument_pack const &); } // namespace detail +extern template std::string string_format(format_argument_pack const &); +extern template std::string string_format(format_argument_pack &&); +extern template std::string string_format(std::locale const &, format_argument_pack const &); +extern template std::string string_format(std::locale const &, format_argument_pack &&); + +extern template std::wstring string_format(format_argument_pack const &); +extern template std::wstring string_format(format_argument_pack &&); +extern template std::wstring string_format(std::locale const &, format_argument_pack const &); +extern template std::wstring string_format(std::locale const &, format_argument_pack &&); + } // namespace util #endif // MAME_UTIL_STRFORMAT_H diff --git a/src/osd/eminline.h b/src/osd/eminline.h index 4d4ccb25237..6d54a21a45f 100644 --- a/src/osd/eminline.h +++ b/src/osd/eminline.h @@ -554,7 +554,7 @@ constexpr uint64_t rotr_64(uint64_t val, int shift) -------------------------------------------------*/ #ifndef get_profile_ticks -inline int64_t get_profile_ticks() +inline int64_t get_profile_ticks() noexcept { return osd_ticks(); } diff --git a/src/osd/modules/lib/osdobj_common.cpp b/src/osd/modules/lib/osdobj_common.cpp index 6a2fef81e86..b4e37f86182 100644 --- a/src/osd/modules/lib/osdobj_common.cpp +++ b/src/osd/modules/lib/osdobj_common.cpp @@ -365,7 +365,7 @@ void osd_common_t::update_option(const std::string &key, std::vector &args) +void osd_common_t::output_callback(osd_output_channel channel, const util::format_argument_pack &args) { switch (channel) { diff --git a/src/osd/modules/lib/osdobj_common.h b/src/osd/modules/lib/osdobj_common.h index 413af9a7f7d..c5cd9b4fc49 100644 --- a/src/osd/modules/lib/osdobj_common.h +++ b/src/osd/modules/lib/osdobj_common.h @@ -262,7 +262,7 @@ public: virtual osd_options &options() { return m_options; } // osd_output interface ... - virtual void output_callback(osd_output_channel channel, const util::format_argument_pack &args) override; + virtual void output_callback(osd_output_channel channel, const util::format_argument_pack &args) override; bool verbose() const { return m_print_verbose; } virtual void set_verbose(bool print_verbose) override { m_print_verbose = print_verbose; } diff --git a/src/osd/modules/render/bgfx/statereader.cpp b/src/osd/modules/render/bgfx/statereader.cpp index 0faef68aa7c..277e6815185 100644 --- a/src/osd/modules/render/bgfx/statereader.cpp +++ b/src/osd/modules/render/bgfx/statereader.cpp @@ -14,7 +14,7 @@ #include -bool state_reader::V_READER_CHECK(bool condition, const util::format_argument_pack &args) +bool state_reader::V_READER_CHECK(bool condition, const util::format_argument_pack &args) { if (!condition) osd_printf_error("Error: %s\n", util::string_format(args)); @@ -22,7 +22,7 @@ bool state_reader::V_READER_CHECK(bool condition, const util::format_argument_pa return condition; } -bool state_reader::V_READER_WARN(bool condition, const util::format_argument_pack &args) +bool state_reader::V_READER_WARN(bool condition, const util::format_argument_pack &args) { if (!condition) osd_printf_warning("Warning: %s\n", util::string_format(args)); diff --git a/src/osd/modules/render/bgfx/statereader.h b/src/osd/modules/render/bgfx/statereader.h index 6af02bbbd66..69a795d9f04 100644 --- a/src/osd/modules/render/bgfx/statereader.h +++ b/src/osd/modules/render/bgfx/statereader.h @@ -60,8 +60,8 @@ protected: } private: - static bool V_READER_CHECK(bool condition, const util::format_argument_pack &args); - static bool V_READER_WARN(bool condition, const util::format_argument_pack &args); + static bool V_READER_CHECK(bool condition, const util::format_argument_pack &args); + static bool V_READER_WARN(bool condition, const util::format_argument_pack &args); static void get_vec_values(const Value& value_array, float* data, const unsigned int count); }; diff --git a/src/osd/osdcore.cpp b/src/osd/osdcore.cpp index 17195394230..84b3dde3b05 100644 --- a/src/osd/osdcore.cpp +++ b/src/osd/osdcore.cpp @@ -63,7 +63,7 @@ void osd_output::pop(osd_output *delegate) appropriate callback -------------------------------------------------*/ -void osd_vprintf_error(util::format_argument_pack const &args) +void osd_vprintf_error(util::format_argument_pack const &args) { #if defined(SDLMAME_ANDROID) __android_log_write(ANDROID_LOG_ERROR, "MAME", util::string_format(args).c_str()); @@ -78,7 +78,7 @@ void osd_vprintf_error(util::format_argument_pack const &args) appropriate callback -------------------------------------------------*/ -void osd_vprintf_warning(util::format_argument_pack const &args) +void osd_vprintf_warning(util::format_argument_pack const &args) { #if defined(SDLMAME_ANDROID) __android_log_write(ANDROID_LOG_WARN, "MAME", util::string_format(args).c_str()); @@ -93,7 +93,7 @@ void osd_vprintf_warning(util::format_argument_pack const &args) appropriate callback -------------------------------------------------*/ -void osd_vprintf_info(util::format_argument_pack const &args) +void osd_vprintf_info(util::format_argument_pack const &args) { #if defined(SDLMAME_ANDROID) __android_log_write(ANDROID_LOG_INFO, "MAME", util::string_format(args).c_str()); @@ -108,7 +108,7 @@ void osd_vprintf_info(util::format_argument_pack const &args) the appropriate callback -------------------------------------------------*/ -void osd_vprintf_verbose(util::format_argument_pack const &args) +void osd_vprintf_verbose(util::format_argument_pack const &args) { #if defined(SDLMAME_ANDROID) __android_log_write( ANDROID_LOG_VERBOSE, "MAME", util::string_format(args).c_str()); @@ -123,7 +123,7 @@ void osd_vprintf_verbose(util::format_argument_pack const &args) appropriate callback -------------------------------------------------*/ -void osd_vprintf_debug(util::format_argument_pack const &args) +void osd_vprintf_debug(util::format_argument_pack const &args) { #if defined(SDLMAME_ANDROID) __android_log_write(ANDROID_LOG_DEBUG, "MAME", util::string_format(args).c_str()); @@ -137,7 +137,7 @@ void osd_vprintf_debug(util::format_argument_pack const &args) // osd_ticks //============================================================ -osd_ticks_t osd_ticks() +osd_ticks_t osd_ticks() noexcept { #ifdef _WIN32 LARGE_INTEGER val; @@ -153,7 +153,7 @@ osd_ticks_t osd_ticks() // osd_ticks_per_second //============================================================ -osd_ticks_t osd_ticks_per_second() +osd_ticks_t osd_ticks_per_second() noexcept { #ifdef _WIN32 LARGE_INTEGER val; @@ -168,7 +168,7 @@ osd_ticks_t osd_ticks_per_second() // osd_sleep //============================================================ -void osd_sleep(osd_ticks_t duration) +void osd_sleep(osd_ticks_t duration) noexcept { #ifdef _WIN32 // sleep_for appears to oversleep on Windows with gcc 8 diff --git a/src/osd/osdcore.h b/src/osd/osdcore.h index 489343f35b4..c714b4b313e 100644 --- a/src/osd/osdcore.h +++ b/src/osd/osdcore.h @@ -86,7 +86,7 @@ typedef uint64_t osd_ticks_t; accurate. It is ok if this call is not ultra-fast, since it is primarily used for once/frame synchronization. -----------------------------------------------------------------------------*/ -osd_ticks_t osd_ticks(); +osd_ticks_t osd_ticks() noexcept; /*----------------------------------------------------------------------------- @@ -101,7 +101,7 @@ osd_ticks_t osd_ticks(); an osd_ticks_t value which represents the number of ticks per second -----------------------------------------------------------------------------*/ -osd_ticks_t osd_ticks_per_second(); +osd_ticks_t osd_ticks_per_second() noexcept; /*----------------------------------------------------------------------------- @@ -126,7 +126,7 @@ osd_ticks_t osd_ticks_per_second(); sleep occurs for, the OSD layer should strive to sleep for less time than specified rather than sleeping too long. -----------------------------------------------------------------------------*/ -void osd_sleep(osd_ticks_t duration); +void osd_sleep(osd_ticks_t duration) noexcept; /*************************************************************************** WORK ITEM INTERFACES @@ -538,14 +538,14 @@ public: osd_output() { } virtual ~osd_output() { } - virtual void output_callback(osd_output_channel channel, util::format_argument_pack const &args) = 0; + virtual void output_callback(osd_output_channel channel, util::format_argument_pack const &args) = 0; static void push(osd_output *delegate); static void pop(osd_output *delegate); protected: - void chain_output(osd_output_channel channel, util::format_argument_pack const &args) const + void chain_output(osd_output_channel channel, util::format_argument_pack const &args) const { if (m_chain) m_chain->output_callback(channel, args); @@ -555,11 +555,11 @@ private: osd_output *m_chain = nullptr; }; -void osd_vprintf_error(util::format_argument_pack const &args); -void osd_vprintf_warning(util::format_argument_pack const &args); -void osd_vprintf_info(util::format_argument_pack const &args); -void osd_vprintf_verbose(util::format_argument_pack const &args); -void osd_vprintf_debug(util::format_argument_pack const &args); +void osd_vprintf_error(util::format_argument_pack const &args); +void osd_vprintf_warning(util::format_argument_pack const &args); +void osd_vprintf_info(util::format_argument_pack const &args); +void osd_vprintf_verbose(util::format_argument_pack const &args); +void osd_vprintf_debug(util::format_argument_pack const &args); /// \brief Print error message /// diff --git a/src/osd/windows/winmain.cpp b/src/osd/windows/winmain.cpp index 6439da96a57..2fd5894a6ab 100644 --- a/src/osd/windows/winmain.cpp +++ b/src/osd/windows/winmain.cpp @@ -84,7 +84,7 @@ private: } public: - virtual void output_callback(osd_output_channel channel, const util::format_argument_pack &args) override + virtual void output_callback(osd_output_channel channel, const util::format_argument_pack &args) override { if (channel == OSD_OUTPUT_CHANNEL_ERROR) { -- cgit v1.2.3