summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--docs/source/commandline/commandline-all.rst51
-rw-r--r--docs/source/techspecs/luareference.rst12
-rw-r--r--src/emu/emuopts.cpp2
-rw-r--r--src/emu/render.cpp6
-rw-r--r--src/emu/video.cpp6
-rw-r--r--src/emu/video.h1
-rw-r--r--src/frontend/mame/ui/filemngr.cpp21
-rw-r--r--src/frontend/mame/ui/filesel.cpp6
-rw-r--r--src/frontend/mame/ui/mainmenu.cpp2
-rw-r--r--src/frontend/mame/ui/menu.cpp1
-rw-r--r--src/frontend/mame/ui/videoopt.cpp31
-rw-r--r--src/lib/util/strformat.cpp36
-rw-r--r--src/lib/util/strformat.h36
13 files changed, 150 insertions, 61 deletions
diff --git a/docs/source/commandline/commandline-all.rst b/docs/source/commandline/commandline-all.rst
index f05c5b6b479..f83716f5866 100644
--- a/docs/source/commandline/commandline-all.rst
+++ b/docs/source/commandline/commandline-all.rst
@@ -1617,25 +1617,29 @@ Core State/Playback Options
**-snapview** *<viewname>*
- Specifies the view to use when rendering snapshots and movies.
+ Specifies the view to use when rendering snapshots and videos. The
+ *<viewname>* does not need to be the full name of a view, MAME will choose
+ the first view with a name that has the *<viewname>* as a prefix. For
+ example **-snapview "screen 0 pixel"** will match the
+ “\ *Screen 0 Pixel Aspect (10:7)*\ ” view.
- By default, both use a special 'internal' view, which renders a separate
- snapshot per screen or renders movies only of the first screen. By
- specifying this option, you can override this default behavior and select a
- single view that will apply to all snapshots and movies. Note that
- <viewname> does not need to be a perfect match; rather, it will select the
- first view whose name matches all the characters specified by <viewname>.
+ If the *<viewname>* is ``auto`` or an empty string, MAME will select a view
+ based on the number of emulated screens in the system, and the available
+ external and internal artwork. MAME tries to select a view that shows all
+ emulated screens by default.
- For example, **-snapview native** will match the "Native (15:14)" view even
- though it is not a perfect match. <viewname> can also be 'auto', which
- selects the first view with all screens present.
+ If the *<viewname>* is ``native``, MAME uses special internal view to save a
+ separate snapshot for each visible emulated screen, or to record a video for
+ the first visible screen only. The snapshot(s) or video will have the same
+ resolution as the emulated screen(s) with no artwork elements drawn or
+ effects applied.
- The default value is ``internal``.
+ The default value is ``auto``.
Example:
.. code-block:: bash
- mame64 pang -snapview pixel
+ mame64 wrecking -snapview cocktail
.. _mame-commandline-nosnapbilinear:
@@ -1643,7 +1647,7 @@ Core State/Playback Options
**-[no]snapbilinear**
Specify if the snapshot or movie should have bilinear filtering applied.
- Shutting this off can improve performance while recording video to a file.
+ Disabling this off can improve performance while recording video to a file.
The default is ON (**-snapbilinear**).
@@ -2402,18 +2406,23 @@ Core Per-Window Options
**-view3** *<viewname>*
- Specifies the initial view setting for each window. The *<viewname>* does
- not need to be a perfect match; rather, it will select the first view whose
- name matches all the characters specified by *<viewname>*. For example,
- **-view native** will match the "*Native (15:14)*" view even though it is
- not a perfect match. The value ``auto`` is also supported, and requests
- that MAME perform a default selection.
+ Specifies the initial view setting for each window/screen. The *<viewname>*
+ does not need to be the full name of a view, MAME will choose the first view
+ with a name that has the *<viewname>* as a prefix. For example
+ **-view "screen 0 pixel"** will match the
+ “\ *Screen 0 Pixel Aspect (10:7)*\ ” view.
+
+ If the *<viewname>* is ``auto`` or an empty string, MAME will select views
+ based on the number of emulated screens in the system, the number of
+ windows/screens MAME is using, and the available external and internal
+ artwork. MAME tries to select views so that all emulated screens are
+ visible by default.
The default value for these options is ``auto``.
The **-view0**, **-view1**, **-view2**, **-view3** parameters apply to the
- specific window. The **-view** parameter applies to all windows. The
- window-specific options override values from the all window option.
+ specific window. The **-view** parameter applies to all windows. The
+ window-specific options override values from the all windows option.
Example:
.. code-block:: bash
diff --git a/docs/source/techspecs/luareference.rst b/docs/source/techspecs/luareference.rst
index cd3f6af4b73..a1042f38db1 100644
--- a/docs/source/techspecs/luareference.rst
+++ b/docs/source/techspecs/luareference.rst
@@ -77,9 +77,9 @@ of device, to find devices of a particular type, or to find devices that
implement a particular interface. When iterating using ``pairs`` or ``ipairs``,
devices are returned by walking the device tree depth-first in creation order.
-The index get operator looks up a device by tag. It returns ``nil`` no device
-with the specified tag is found, or if the device with the specified tag does
-not meet the type/interface requirements of the device enumerator. The
+The index get operator looks up a device by tag. It returns ``nil`` if no
+device with the specified tag is found, or if the device with the specified tag
+does not meet the type/interface requirements of the device enumerator. The
complexity is O(1) if the result is cached, but an uncached device lookup is
expensive. The ``at`` method has O(n) complexity.
@@ -383,7 +383,7 @@ screen.pixel_period (read-only)
screen.scan_period (read-only)
The interval taken to draw a scan line (including the horizontal blanking
interval), as a floating-point number in units of seconds.
-screen.pixel_period (read-only)
+screen.frame_period (read-only)
The interval taken to draw a complete frame (including blanking intervals),
as a floating-point number in units of seconds.
screen.frame_number (read-only)
@@ -619,8 +619,8 @@ Slot option
~~~~~~~~~~~
Wraps MAME’s ``device_slot_interface::slot_option`` class, which represents a
-child device that a :ref:`slot device <luareference-dev-dislot>` slot device can
-be configured to instantiate.
+child device that a :ref:`slot device <luareference-dev-dislot>` can be
+configured to instantiate.
Instantiation
^^^^^^^^^^^^^
diff --git a/src/emu/emuopts.cpp b/src/emu/emuopts.cpp
index 9885b42b880..690756a7011 100644
--- a/src/emu/emuopts.cpp
+++ b/src/emu/emuopts.cpp
@@ -74,7 +74,7 @@ const options_entry emu_options::s_option_entries[] =
{ OPTION_WAVWRITE, nullptr, OPTION_STRING, "optional filename to write a WAV file of the current session" },
{ OPTION_SNAPNAME, "%g/%i", OPTION_STRING, "override of the default snapshot/movie naming; %g == gamename, %i == index" },
{ OPTION_SNAPSIZE, "auto", OPTION_STRING, "specify snapshot/movie resolution (<width>x<height>) or 'auto' to use minimal size " },
- { OPTION_SNAPVIEW, "", OPTION_STRING, "specify snapshot/movie view or 'native' to use internal pixel-aspect views" },
+ { OPTION_SNAPVIEW, "auto", OPTION_STRING, "snapshot/movie view - 'auto' for default, or 'native' for per-screen pixel-aspect views" },
{ OPTION_SNAPBILINEAR, "1", OPTION_BOOLEAN, "specify if the snapshot/movie should have bilinear filtering applied" },
{ OPTION_STATENAME, "%g", OPTION_STRING, "override of the default state subfolder naming; %g == gamename" },
{ OPTION_BURNIN, "0", OPTION_BOOLEAN, "create burn-in snapshots for each screen" },
diff --git a/src/emu/render.cpp b/src/emu/render.cpp
index 6b9a1e76f18..68c840f89a6 100644
--- a/src/emu/render.cpp
+++ b/src/emu/render.cpp
@@ -1061,8 +1061,8 @@ unsigned render_target::configured_view(const char *viewname, int targetindex, i
{
layout_view *view = nullptr;
- // auto view just selects the nth view
- if (strcmp(viewname, "auto") != 0)
+ // if it isn't "auto" or an empty string, try to match it as a view name prefix
+ if (viewname && *viewname && strcmp(viewname, "auto"))
{
// scan for a matching view name
size_t const viewlen = strlen(viewname);
@@ -3315,7 +3315,7 @@ void render_manager::config_load(config_type cfg_type, util::xml::data_node cons
for (util::xml::data_node const *targetnode = parentnode->get_child("target"); targetnode; targetnode = targetnode->get_next_sibling("target"))
{
render_target *const target = target_by_index(targetnode->get_attribute_int("index", -1));
- if (target)
+ if (target && !target->hidden())
target->config_load(*targetnode);
}
diff --git a/src/emu/video.cpp b/src/emu/video.cpp
index 3d6ffa43dea..a9599fb4964 100644
--- a/src/emu/video.cpp
+++ b/src/emu/video.cpp
@@ -349,10 +349,9 @@ void video_manager::save_snapshot(screen_device *screen, emu_file &file)
void video_manager::save_active_screen_snapshots()
{
- // if we're native, then write one snapshot per visible screen
if (m_snap_native)
{
- // write one snapshot per visible screen
+ // if we're native, then write one snapshot per visible screen
for (screen_device &screen : screen_device_enumerator(machine().root_device()))
if (machine().render().is_live(screen))
{
@@ -362,10 +361,9 @@ void video_manager::save_active_screen_snapshots()
save_snapshot(&screen, file);
}
}
-
- // otherwise, just write a single snapshot
else
{
+ // otherwise, just write a single snapshot
emu_file file(machine().options().snapshot_directory(), OPEN_FLAG_WRITE | OPEN_FLAG_CREATE | OPEN_FLAG_CREATE_PATHS);
osd_file::error filerr = open_next(file, "png");
if (filerr == osd_file::error::NONE)
diff --git a/src/emu/video.h b/src/emu/video.h
index bcd0d4e4394..84654ed01ff 100644
--- a/src/emu/video.h
+++ b/src/emu/video.h
@@ -75,6 +75,7 @@ public:
int effective_frameskip() const;
// snapshots
+ bool snap_native() const { return m_snap_native; }
render_target &snapshot_target() { return *m_snap_target; }
void save_snapshot(screen_device *screen, emu_file &file);
void save_active_screen_snapshots();
diff --git a/src/frontend/mame/ui/filemngr.cpp b/src/frontend/mame/ui/filemngr.cpp
index 69a3b5ca5fa..1ef861e5475 100644
--- a/src/frontend/mame/ui/filemngr.cpp
+++ b/src/frontend/mame/ui/filemngr.cpp
@@ -12,17 +12,19 @@
*********************************************************************/
#include "emu.h"
-#include "ui/ui.h"
-#include "ui/menu.h"
#include "ui/filemngr.h"
+
#include "ui/filesel.h"
-#include "ui/miscmenu.h"
-#include "ui/imgcntrl.h"
#include "ui/floppycntrl.h"
+#include "ui/imgcntrl.h"
+#include "ui/miscmenu.h"
+#include "ui/ui.h"
+
#include "softlist.h"
namespace ui {
+
/***************************************************************************
FILE MANAGER
***************************************************************************/
@@ -168,7 +170,7 @@ void menu_file_manager::handle()
{
// process the menu
const event *event = process(0);
- if (event != nullptr && event->itemref != nullptr && event->iptkey == IPT_UI_SELECT)
+ if (event && event->itemref && (event->iptkey == IPT_UI_SELECT))
{
if ((uintptr_t)event->itemref == 1)
{
@@ -177,18 +179,15 @@ void menu_file_manager::handle()
else
{
selected_device = (device_image_interface *) event->itemref;
- if (selected_device != nullptr)
+ if (selected_device)
{
m_curr_selected = true;
floppy_image_device *floppy_device = dynamic_cast<floppy_image_device *>(selected_device);
- if (floppy_device != nullptr)
- {
+ if (floppy_device)
menu::stack_push<menu_control_floppy_image>(ui(), container(), *floppy_device);
- }
else
- {
menu::stack_push<menu_control_device_image>(ui(), container(), *selected_device);
- }
+
// reset the existing menu
reset(reset_options::REMEMBER_POSITION);
}
diff --git a/src/frontend/mame/ui/filesel.cpp b/src/frontend/mame/ui/filesel.cpp
index 376202cb1c8..0c38129ed9f 100644
--- a/src/frontend/mame/ui/filesel.cpp
+++ b/src/frontend/mame/ui/filesel.cpp
@@ -12,8 +12,8 @@
***************************************************************************/
#include "emu.h"
-
#include "ui/filesel.h"
+
#include "ui/ui.h"
#include "ui/utils.h"
@@ -24,7 +24,9 @@
#include <cstring>
#include <locale>
+
namespace ui {
+
/***************************************************************************
CONSTANTS
***************************************************************************/
@@ -310,8 +312,8 @@ void menu_file_selector::select_item(const file_selector_entry &entry)
case SELECTOR_ENTRY_TYPE_DRIVE:
case SELECTOR_ENTRY_TYPE_DIRECTORY:
- // drive/directory - first check the path
{
+ // drive/directory - first check the path
util::zippath_directory::ptr dir;
osd_file::error const err = util::zippath_directory::open(entry.fullpath, dir);
if (err != osd_file::error::NONE)
diff --git a/src/frontend/mame/ui/mainmenu.cpp b/src/frontend/mame/ui/mainmenu.cpp
index 1051b322d99..9fb66331249 100644
--- a/src/frontend/mame/ui/mainmenu.cpp
+++ b/src/frontend/mame/ui/mainmenu.cpp
@@ -114,7 +114,7 @@ void menu_main::populate(float &customtop, float &custombottom)
item_append(_("Slider Controls"), 0, (void *)SLIDERS);
- item_append(_("Video Options"), 0, (machine().render().target_by_index(1) || machine().video().snapshot_target().view_name(1)) ? (void *)VIDEO_TARGETS : (void *)VIDEO_OPTIONS);
+ item_append(_("Video Options"), 0, (void *)VIDEO_TARGETS);
if (machine().crosshair().get_usage())
item_append(_("Crosshair Options"), 0, (void *)CROSSHAIR);
diff --git a/src/frontend/mame/ui/menu.cpp b/src/frontend/mame/ui/menu.cpp
index 4fb9616c355..76930eda029 100644
--- a/src/frontend/mame/ui/menu.cpp
+++ b/src/frontend/mame/ui/menu.cpp
@@ -9,7 +9,6 @@
*********************************************************************/
#include "emu.h"
-
#include "ui/menu.h"
#include "ui/ui.h"
diff --git a/src/frontend/mame/ui/videoopt.cpp b/src/frontend/mame/ui/videoopt.cpp
index 21ba181ecb7..e49b743fc15 100644
--- a/src/frontend/mame/ui/videoopt.cpp
+++ b/src/frontend/mame/ui/videoopt.cpp
@@ -56,9 +56,8 @@ void menu_video_targets::populate(float &customtop, float &custombottom)
item_append(util::string_format(_("Screen #%d"), targetnum), 0, target);
}
- // add option for snapshot target if it has multiple views
- if (machine().video().snapshot_target().view_name(1))
- item_append("Snapshot", 0, &machine().video().snapshot_target());
+ // add option for snapshot target
+ item_append("Snapshot", 0, &machine().video().snapshot_target());
}
/*-------------------------------------------------
@@ -98,8 +97,11 @@ menu_video_options::menu_video_options(
, m_show_title(false)
, m_snapshot(snapshot)
{
- set_selected_index(target.view());
- reset(reset_options::REMEMBER_POSITION);
+ if (!m_snapshot || !machine().video().snap_native())
+ {
+ set_selected_index(target.view());
+ reset(reset_options::REMEMBER_POSITION);
+ }
}
menu_video_options::menu_video_options(
@@ -114,8 +116,11 @@ menu_video_options::menu_video_options(
, m_show_title(true)
, m_snapshot(snapshot)
{
- set_selected_index(target.view() + 2);
- reset(reset_options::REMEMBER_POSITION);
+ if (!m_snapshot || !machine().video().snap_native())
+ {
+ set_selected_index(target.view() + 2);
+ reset(reset_options::REMEMBER_POSITION);
+ }
}
menu_video_options::~menu_video_options()
@@ -134,9 +139,12 @@ void menu_video_options::populate(float &customtop, float &custombottom)
}
// add items for each view
- for (char const *name = m_target.view_name(ref = 0); name; name = m_target.view_name(++ref))
- item_append(name, 0, reinterpret_cast<void *>(ITEM_VIEW_FIRST + ref));
- item_append(menu_item_type::SEPARATOR);
+ if (!m_snapshot || !machine().video().snap_native())
+ {
+ for (char const *name = m_target.view_name(ref = 0); name; name = m_target.view_name(++ref))
+ item_append(name, 0, reinterpret_cast<void *>(ITEM_VIEW_FIRST + ref));
+ item_append(menu_item_type::SEPARATOR);
+ }
// add items for visibility toggles
auto const &toggles = m_target.visibility_toggles();
@@ -169,7 +177,8 @@ void menu_video_options::populate(float &customtop, float &custombottom)
item_append(_("Rotate"), subtext, FLAG_LEFT_ARROW | FLAG_RIGHT_ARROW, reinterpret_cast<void *>(ITEM_ROTATE));
// cropping
- item_append_on_off(_("Zoom to Screen Area"), m_target.zoom_to_screen(), 0, reinterpret_cast<void *>(ITEM_ZOOM));
+ bool const canzoom(m_target.current_view().has_art() && !m_target.current_view().visible_screens().empty());
+ item_append_on_off(_("Zoom to Screen Area"), m_target.zoom_to_screen(), canzoom ? 0U : (FLAG_INVERT | FLAG_DISABLE), reinterpret_cast<void *>(ITEM_ZOOM));
if (!m_snapshot)
{
diff --git a/src/lib/util/strformat.cpp b/src/lib/util/strformat.cpp
index e72e8b74a83..e173fb6aadf 100644
--- a/src/lib/util/strformat.cpp
+++ b/src/lib/util/strformat.cpp
@@ -50,6 +50,7 @@ template void format_argument<std::ostream>::static_output<unsigned long long>(s
template void format_argument<std::ostream>::static_output<char *>(std::ostream &, format_flags const &, void const *);
template void format_argument<std::ostream>::static_output<char const *>(std::ostream &, format_flags const &, void const *);
template void format_argument<std::ostream>::static_output<std::string>(std::ostream &, format_flags const &, void const *);
+template void format_argument<std::ostream>::static_output<std::string_view>(std::ostream &, format_flags const &, void const *);
template bool format_argument<std::ostream>::static_make_integer<char>(void const *, int &);
template bool format_argument<std::ostream>::static_make_integer<signed char>(void const *, int &);
template bool format_argument<std::ostream>::static_make_integer<unsigned char>(void const *, int &);
@@ -64,6 +65,7 @@ template bool format_argument<std::ostream>::static_make_integer<unsigned long l
template bool format_argument<std::ostream>::static_make_integer<char *>(void const *, int &);
template bool format_argument<std::ostream>::static_make_integer<char const *>(void const *, int &);
template bool format_argument<std::ostream>::static_make_integer<std::string>(void const *, int &);
+template bool format_argument<std::ostream>::static_make_integer<std::string_view>(void const *, int &);
template void format_argument<std::ostream>::static_store_integer<char>(void const *, std::streamoff);
template void format_argument<std::ostream>::static_store_integer<signed char>(void const *, std::streamoff);
template void format_argument<std::ostream>::static_store_integer<unsigned char>(void const *, std::streamoff);
@@ -78,6 +80,7 @@ template void format_argument<std::ostream>::static_store_integer<unsigned long
template void format_argument<std::ostream>::static_store_integer<char *>(void const *, std::streamoff);
template void format_argument<std::ostream>::static_store_integer<char const *>(void const *, std::streamoff);
template void format_argument<std::ostream>::static_store_integer<std::string>(void const *, std::streamoff);
+template void format_argument<std::ostream>::static_store_integer<std::string_view>(void const *, std::streamoff);
template class format_argument<std::wostream>;
template void format_argument<std::wostream>::static_output<char>(std::wostream &, format_flags const &, void const *);
@@ -95,6 +98,7 @@ template void format_argument<std::wostream>::static_output<unsigned long long>(
template void format_argument<std::wostream>::static_output<wchar_t *>(std::wostream &, format_flags const &, void const *);
template void format_argument<std::wostream>::static_output<wchar_t const *>(std::wostream &, format_flags const &, void const *);
template void format_argument<std::wostream>::static_output<std::wstring>(std::wostream &, format_flags const &, void const *);
+template void format_argument<std::wostream>::static_output<std::wstring_view>(std::wostream &, format_flags const &, void const *);
template bool format_argument<std::wostream>::static_make_integer<char>(void const *, int &);
template bool format_argument<std::wostream>::static_make_integer<signed char>(void const *, int &);
template bool format_argument<std::wostream>::static_make_integer<unsigned char>(void const *, int &);
@@ -110,6 +114,7 @@ template bool format_argument<std::wostream>::static_make_integer<unsigned long
template bool format_argument<std::wostream>::static_make_integer<wchar_t *>(void const *, int &);
template bool format_argument<std::wostream>::static_make_integer<wchar_t const *>(void const *, int &);
template bool format_argument<std::wostream>::static_make_integer<std::wstring>(void const *, int &);
+template bool format_argument<std::wostream>::static_make_integer<std::wstring_view>(void const *, int &);
template void format_argument<std::wostream>::static_store_integer<char>(void const *, std::streamoff);
template void format_argument<std::wostream>::static_store_integer<signed char>(void const *, std::streamoff);
template void format_argument<std::wostream>::static_store_integer<unsigned char>(void const *, std::streamoff);
@@ -125,6 +130,7 @@ template void format_argument<std::wostream>::static_store_integer<unsigned long
template void format_argument<std::wostream>::static_store_integer<wchar_t *>(void const *, std::streamoff);
template void format_argument<std::wostream>::static_store_integer<wchar_t const *>(void const *, std::streamoff);
template void format_argument<std::wostream>::static_store_integer<std::wstring>(void const *, std::streamoff);
+template void format_argument<std::wostream>::static_store_integer<std::wstring_view>(void const *, std::streamoff);
template class format_argument<std::iostream>;
template void format_argument<std::iostream>::static_output<char>(std::iostream &, format_flags const &, void const *);
@@ -141,6 +147,7 @@ template void format_argument<std::iostream>::static_output<unsigned long long>(
template void format_argument<std::iostream>::static_output<char *>(std::iostream &, format_flags const &, void const *);
template void format_argument<std::iostream>::static_output<char const *>(std::iostream &, format_flags const &, void const *);
template void format_argument<std::iostream>::static_output<std::string>(std::iostream &, format_flags const &, void const *);
+template void format_argument<std::iostream>::static_output<std::string_view>(std::iostream &, format_flags const &, void const *);
template bool format_argument<std::iostream>::static_make_integer<char>(void const *, int &);
template bool format_argument<std::iostream>::static_make_integer<signed char>(void const *, int &);
template bool format_argument<std::iostream>::static_make_integer<unsigned char>(void const *, int &);
@@ -155,6 +162,7 @@ template bool format_argument<std::iostream>::static_make_integer<unsigned long
template bool format_argument<std::iostream>::static_make_integer<char *>(void const *, int &);
template bool format_argument<std::iostream>::static_make_integer<char const *>(void const *, int &);
template bool format_argument<std::iostream>::static_make_integer<std::string>(void const *, int &);
+template bool format_argument<std::iostream>::static_make_integer<std::string_view>(void const *, int &);
template void format_argument<std::iostream>::static_store_integer<char>(void const *, std::streamoff);
template void format_argument<std::iostream>::static_store_integer<signed char>(void const *, std::streamoff);
template void format_argument<std::iostream>::static_store_integer<unsigned char>(void const *, std::streamoff);
@@ -169,6 +177,7 @@ template void format_argument<std::iostream>::static_store_integer<unsigned long
template void format_argument<std::iostream>::static_store_integer<char *>(void const *, std::streamoff);
template void format_argument<std::iostream>::static_store_integer<char const *>(void const *, std::streamoff);
template void format_argument<std::iostream>::static_store_integer<std::string>(void const *, std::streamoff);
+template void format_argument<std::iostream>::static_store_integer<std::string_view>(void const *, std::streamoff);
template class format_argument<std::wiostream>;
template void format_argument<std::wiostream>::static_output<char>(std::wiostream &, format_flags const &, void const *);
@@ -186,6 +195,7 @@ template void format_argument<std::wiostream>::static_output<unsigned long long>
template void format_argument<std::wiostream>::static_output<wchar_t *>(std::wiostream &, format_flags const &, void const *);
template void format_argument<std::wiostream>::static_output<wchar_t const *>(std::wiostream &, format_flags const &, void const *);
template void format_argument<std::wiostream>::static_output<std::wstring>(std::wiostream &, format_flags const &, void const *);
+template void format_argument<std::wiostream>::static_output<std::wstring_view>(std::wiostream &, format_flags const &, void const *);
template bool format_argument<std::wiostream>::static_make_integer<char>(void const *, int &);
template bool format_argument<std::wiostream>::static_make_integer<signed char>(void const *, int &);
template bool format_argument<std::wiostream>::static_make_integer<unsigned char>(void const *, int &);
@@ -201,6 +211,7 @@ template bool format_argument<std::wiostream>::static_make_integer<unsigned long
template bool format_argument<std::wiostream>::static_make_integer<wchar_t *>(void const *, int &);
template bool format_argument<std::wiostream>::static_make_integer<wchar_t const *>(void const *, int &);
template bool format_argument<std::wiostream>::static_make_integer<std::wstring>(void const *, int &);
+template bool format_argument<std::wiostream>::static_make_integer<std::wstring_view>(void const *, int &);
template void format_argument<std::wiostream>::static_store_integer<char>(void const *, std::streamoff);
template void format_argument<std::wiostream>::static_store_integer<signed char>(void const *, std::streamoff);
template void format_argument<std::wiostream>::static_store_integer<unsigned char>(void const *, std::streamoff);
@@ -216,6 +227,7 @@ template void format_argument<std::wiostream>::static_store_integer<unsigned lon
template void format_argument<std::wiostream>::static_store_integer<wchar_t *>(void const *, std::streamoff);
template void format_argument<std::wiostream>::static_store_integer<wchar_t const *>(void const *, std::streamoff);
template void format_argument<std::wiostream>::static_store_integer<std::wstring>(void const *, std::streamoff);
+template void format_argument<std::wiostream>::static_store_integer<std::wstring_view>(void const *, std::streamoff);
template class format_argument<std::ostringstream>;
template void format_argument<std::ostringstream>::static_output<char>(std::ostringstream &, format_flags const &, void const *);
@@ -232,6 +244,7 @@ template void format_argument<std::ostringstream>::static_output<unsigned long l
template void format_argument<std::ostringstream>::static_output<char *>(std::ostringstream &, format_flags const &, void const *);
template void format_argument<std::ostringstream>::static_output<char const *>(std::ostringstream &, format_flags const &, void const *);
template void format_argument<std::ostringstream>::static_output<std::string>(std::ostringstream &, format_flags const &, void const *);
+template void format_argument<std::ostringstream>::static_output<std::string_view>(std::ostringstream &, format_flags const &, void const *);
template bool format_argument<std::ostringstream>::static_make_integer<char>(void const *, int &);
template bool format_argument<std::ostringstream>::static_make_integer<signed char>(void const *, int &);
template bool format_argument<std::ostringstream>::static_make_integer<unsigned char>(void const *, int &);
@@ -246,6 +259,7 @@ template bool format_argument<std::ostringstream>::static_make_integer<unsigned
template bool format_argument<std::ostringstream>::static_make_integer<char *>(void const *, int &);
template bool format_argument<std::ostringstream>::static_make_integer<char const *>(void const *, int &);
template bool format_argument<std::ostringstream>::static_make_integer<std::string>(void const *, int &);
+template bool format_argument<std::ostringstream>::static_make_integer<std::string_view>(void const *, int &);
template void format_argument<std::ostringstream>::static_store_integer<char>(void const *, std::streamoff);
template void format_argument<std::ostringstream>::static_store_integer<signed char>(void const *, std::streamoff);
template void format_argument<std::ostringstream>::static_store_integer<unsigned char>(void const *, std::streamoff);
@@ -260,6 +274,7 @@ template void format_argument<std::ostringstream>::static_store_integer<unsigned
template void format_argument<std::ostringstream>::static_store_integer<char *>(void const *, std::streamoff);
template void format_argument<std::ostringstream>::static_store_integer<char const *>(void const *, std::streamoff);
template void format_argument<std::ostringstream>::static_store_integer<std::string>(void const *, std::streamoff);
+template void format_argument<std::ostringstream>::static_store_integer<std::string_view>(void const *, std::streamoff);
template class format_argument<std::wostringstream>;
template void format_argument<std::wostringstream>::static_output<char>(std::wostringstream &, format_flags const &, void const *);
@@ -277,6 +292,7 @@ template void format_argument<std::wostringstream>::static_output<unsigned long
template void format_argument<std::wostringstream>::static_output<wchar_t *>(std::wostringstream &, format_flags const &, void const *);
template void format_argument<std::wostringstream>::static_output<wchar_t const *>(std::wostringstream &, format_flags const &, void const *);
template void format_argument<std::wostringstream>::static_output<std::wstring>(std::wostringstream &, format_flags const &, void const *);
+template void format_argument<std::wostringstream>::static_output<std::wstring_view>(std::wostringstream &, format_flags const &, void const *);
template bool format_argument<std::wostringstream>::static_make_integer<char>(void const *, int &);
template bool format_argument<std::wostringstream>::static_make_integer<signed char>(void const *, int &);
template bool format_argument<std::wostringstream>::static_make_integer<unsigned char>(void const *, int &);
@@ -292,6 +308,7 @@ template bool format_argument<std::wostringstream>::static_make_integer<unsigned
template bool format_argument<std::wostringstream>::static_make_integer<wchar_t *>(void const *, int &);
template bool format_argument<std::wostringstream>::static_make_integer<wchar_t const *>(void const *, int &);
template bool format_argument<std::wostringstream>::static_make_integer<std::wstring>(void const *, int &);
+template bool format_argument<std::wostringstream>::static_make_integer<std::wstring_view>(void const *, int &);
template void format_argument<std::wostringstream>::static_store_integer<char>(void const *, std::streamoff);
template void format_argument<std::wostringstream>::static_store_integer<signed char>(void const *, std::streamoff);
template void format_argument<std::wostringstream>::static_store_integer<unsigned char>(void const *, std::streamoff);
@@ -307,6 +324,7 @@ template void format_argument<std::wostringstream>::static_store_integer<unsigne
template void format_argument<std::wostringstream>::static_store_integer<wchar_t *>(void const *, std::streamoff);
template void format_argument<std::wostringstream>::static_store_integer<wchar_t const *>(void const *, std::streamoff);
template void format_argument<std::wostringstream>::static_store_integer<std::wstring>(void const *, std::streamoff);
+template void format_argument<std::wostringstream>::static_store_integer<std::wstring_view>(void const *, std::streamoff);
template class format_argument<std::stringstream>;
template void format_argument<std::stringstream>::static_output<char>(std::stringstream &, format_flags const &, void const *);
@@ -323,6 +341,7 @@ template void format_argument<std::stringstream>::static_output<unsigned long lo
template void format_argument<std::stringstream>::static_output<char *>(std::stringstream &, format_flags const &, void const *);
template void format_argument<std::stringstream>::static_output<char const *>(std::stringstream &, format_flags const &, void const *);
template void format_argument<std::stringstream>::static_output<std::string>(std::stringstream &, format_flags const &, void const *);
+template void format_argument<std::stringstream>::static_output<std::string_view>(std::stringstream &, format_flags const &, void const *);
template bool format_argument<std::stringstream>::static_make_integer<char>(void const *, int &);
template bool format_argument<std::stringstream>::static_make_integer<signed char>(void const *, int &);
template bool format_argument<std::stringstream>::static_make_integer<unsigned char>(void const *, int &);
@@ -337,6 +356,7 @@ template bool format_argument<std::stringstream>::static_make_integer<unsigned l
template bool format_argument<std::stringstream>::static_make_integer<char *>(void const *, int &);
template bool format_argument<std::stringstream>::static_make_integer<char const *>(void const *, int &);
template bool format_argument<std::stringstream>::static_make_integer<std::string>(void const *, int &);
+template bool format_argument<std::stringstream>::static_make_integer<std::string_view>(void const *, int &);
template void format_argument<std::stringstream>::static_store_integer<char>(void const *, std::streamoff);
template void format_argument<std::stringstream>::static_store_integer<signed char>(void const *, std::streamoff);
template void format_argument<std::stringstream>::static_store_integer<unsigned char>(void const *, std::streamoff);
@@ -351,6 +371,7 @@ template void format_argument<std::stringstream>::static_store_integer<unsigned
template void format_argument<std::stringstream>::static_store_integer<char *>(void const *, std::streamoff);
template void format_argument<std::stringstream>::static_store_integer<char const *>(void const *, std::streamoff);
template void format_argument<std::stringstream>::static_store_integer<std::string>(void const *, std::streamoff);
+template void format_argument<std::stringstream>::static_store_integer<std::string_view>(void const *, std::streamoff);
template class format_argument<std::wstringstream>;
template void format_argument<std::wstringstream>::static_output<char>(std::wstringstream &, format_flags const &, void const *);
@@ -368,6 +389,7 @@ template void format_argument<std::wstringstream>::static_output<unsigned long l
template void format_argument<std::wstringstream>::static_output<wchar_t *>(std::wstringstream &, format_flags const &, void const *);
template void format_argument<std::wstringstream>::static_output<wchar_t const *>(std::wstringstream &, format_flags const &, void const *);
template void format_argument<std::wstringstream>::static_output<std::wstring>(std::wstringstream &, format_flags const &, void const *);
+template void format_argument<std::wstringstream>::static_output<std::wstring_view>(std::wstringstream &, format_flags const &, void const *);
template bool format_argument<std::wstringstream>::static_make_integer<char>(void const *, int &);
template bool format_argument<std::wstringstream>::static_make_integer<signed char>(void const *, int &);
template bool format_argument<std::wstringstream>::static_make_integer<unsigned char>(void const *, int &);
@@ -383,6 +405,7 @@ template bool format_argument<std::wstringstream>::static_make_integer<unsigned
template bool format_argument<std::wstringstream>::static_make_integer<wchar_t *>(void const *, int &);
template bool format_argument<std::wstringstream>::static_make_integer<wchar_t const *>(void const *, int &);
template bool format_argument<std::wstringstream>::static_make_integer<std::wstring>(void const *, int &);
+template bool format_argument<std::wstringstream>::static_make_integer<std::wstring_view>(void const *, int &);
template void format_argument<std::wstringstream>::static_store_integer<char>(void const *, std::streamoff);
template void format_argument<std::wstringstream>::static_store_integer<signed char>(void const *, std::streamoff);
template void format_argument<std::wstringstream>::static_store_integer<unsigned char>(void const *, std::streamoff);
@@ -398,6 +421,7 @@ template void format_argument<std::wstringstream>::static_store_integer<unsigned
template void format_argument<std::wstringstream>::static_store_integer<wchar_t *>(void const *, std::streamoff);
template void format_argument<std::wstringstream>::static_store_integer<wchar_t const *>(void const *, std::streamoff);
template void format_argument<std::wstringstream>::static_store_integer<std::wstring>(void const *, std::streamoff);
+template void format_argument<std::wstringstream>::static_store_integer<std::wstring_view>(void const *, std::streamoff);
template class format_argument<ovectorstream>;
template void format_argument<ovectorstream>::static_output<char>(ovectorstream &, format_flags const &, void const *);
@@ -414,6 +438,7 @@ template void format_argument<ovectorstream>::static_output<unsigned long long>(
template void format_argument<ovectorstream>::static_output<char *>(ovectorstream &, format_flags const &, void const *);
template void format_argument<ovectorstream>::static_output<char const *>(ovectorstream &, format_flags const &, void const *);
template void format_argument<ovectorstream>::static_output<std::string>(ovectorstream &, format_flags const &, void const *);
+template void format_argument<ovectorstream>::static_output<std::string_view>(ovectorstream &, format_flags const &, void const *);
template bool format_argument<ovectorstream>::static_make_integer<char>(void const *, int &);
template bool format_argument<ovectorstream>::static_make_integer<signed char>(void const *, int &);
template bool format_argument<ovectorstream>::static_make_integer<unsigned char>(void const *, int &);
@@ -428,6 +453,7 @@ template bool format_argument<ovectorstream>::static_make_integer<unsigned long
template bool format_argument<ovectorstream>::static_make_integer<char *>(void const *, int &);
template bool format_argument<ovectorstream>::static_make_integer<char const *>(void const *, int &);
template bool format_argument<ovectorstream>::static_make_integer<std::string>(void const *, int &);
+template bool format_argument<ovectorstream>::static_make_integer<std::string_view>(void const *, int &);
template void format_argument<ovectorstream>::static_store_integer<char>(void const *, std::streamoff);
template void format_argument<ovectorstream>::static_store_integer<signed char>(void const *, std::streamoff);
template void format_argument<ovectorstream>::static_store_integer<unsigned char>(void const *, std::streamoff);
@@ -442,6 +468,7 @@ template void format_argument<ovectorstream>::static_store_integer<unsigned long
template void format_argument<ovectorstream>::static_store_integer<char *>(void const *, std::streamoff);
template void format_argument<ovectorstream>::static_store_integer<char const *>(void const *, std::streamoff);
template void format_argument<ovectorstream>::static_store_integer<std::string>(void const *, std::streamoff);
+template void format_argument<ovectorstream>::static_store_integer<std::string_view>(void const *, std::streamoff);
template class format_argument<wovectorstream>;
template void format_argument<wovectorstream>::static_output<char>(wovectorstream &, format_flags const &, void const *);
@@ -459,6 +486,7 @@ template void format_argument<wovectorstream>::static_output<unsigned long long>
template void format_argument<wovectorstream>::static_output<wchar_t *>(wovectorstream &, format_flags const &, void const *);
template void format_argument<wovectorstream>::static_output<wchar_t const *>(wovectorstream &, format_flags const &, void const *);
template void format_argument<wovectorstream>::static_output<std::wstring>(wovectorstream &, format_flags const &, void const *);
+template void format_argument<wovectorstream>::static_output<std::wstring_view>(wovectorstream &, format_flags const &, void const *);
template bool format_argument<wovectorstream>::static_make_integer<char>(void const *, int &);
template bool format_argument<wovectorstream>::static_make_integer<signed char>(void const *, int &);
template bool format_argument<wovectorstream>::static_make_integer<unsigned char>(void const *, int &);
@@ -474,6 +502,7 @@ template bool format_argument<wovectorstream>::static_make_integer<unsigned long
template bool format_argument<wovectorstream>::static_make_integer<wchar_t *>(void const *, int &);
template bool format_argument<wovectorstream>::static_make_integer<wchar_t const *>(void const *, int &);
template bool format_argument<wovectorstream>::static_make_integer<std::wstring>(void const *, int &);
+template bool format_argument<wovectorstream>::static_make_integer<std::wstring_view>(void const *, int &);
template void format_argument<wovectorstream>::static_store_integer<char>(void const *, std::streamoff);
template void format_argument<wovectorstream>::static_store_integer<signed char>(void const *, std::streamoff);
template void format_argument<wovectorstream>::static_store_integer<unsigned char>(void const *, std::streamoff);
@@ -489,6 +518,7 @@ template void format_argument<wovectorstream>::static_store_integer<unsigned lon
template void format_argument<wovectorstream>::static_store_integer<wchar_t *>(void const *, std::streamoff);
template void format_argument<wovectorstream>::static_store_integer<wchar_t const *>(void const *, std::streamoff);
template void format_argument<wovectorstream>::static_store_integer<std::wstring>(void const *, std::streamoff);
+template void format_argument<wovectorstream>::static_store_integer<std::wstring_view>(void const *, std::streamoff);
template class format_argument<vectorstream>;
template void format_argument<vectorstream>::static_output<char>(vectorstream &, format_flags const &, void const *);
@@ -505,6 +535,7 @@ template void format_argument<vectorstream>::static_output<unsigned long long>(v
template void format_argument<vectorstream>::static_output<char *>(vectorstream &, format_flags const &, void const *);
template void format_argument<vectorstream>::static_output<char const *>(vectorstream &, format_flags const &, void const *);
template void format_argument<vectorstream>::static_output<std::string>(vectorstream &, format_flags const &, void const *);
+template void format_argument<vectorstream>::static_output<std::string_view>(vectorstream &, format_flags const &, void const *);
template bool format_argument<vectorstream>::static_make_integer<char>(void const *, int &);
template bool format_argument<vectorstream>::static_make_integer<signed char>(void const *, int &);
template bool format_argument<vectorstream>::static_make_integer<unsigned char>(void const *, int &);
@@ -519,6 +550,7 @@ template bool format_argument<vectorstream>::static_make_integer<unsigned long l
template bool format_argument<vectorstream>::static_make_integer<char *>(void const *, int &);
template bool format_argument<vectorstream>::static_make_integer<char const *>(void const *, int &);
template bool format_argument<vectorstream>::static_make_integer<std::string>(void const *, int &);
+template bool format_argument<vectorstream>::static_make_integer<std::string_view>(void const *, int &);
template void format_argument<vectorstream>::static_store_integer<char>(void const *, std::streamoff);
template void format_argument<vectorstream>::static_store_integer<signed char>(void const *, std::streamoff);
template void format_argument<vectorstream>::static_store_integer<unsigned char>(void const *, std::streamoff);
@@ -533,6 +565,7 @@ template void format_argument<vectorstream>::static_store_integer<unsigned long
template void format_argument<vectorstream>::static_store_integer<char *>(void const *, std::streamoff);
template void format_argument<vectorstream>::static_store_integer<char const *>(void const *, std::streamoff);
template void format_argument<vectorstream>::static_store_integer<std::string>(void const *, std::streamoff);
+template void format_argument<vectorstream>::static_store_integer<std::string_view>(void const *, std::streamoff);
template class format_argument<wvectorstream>;
template void format_argument<wvectorstream>::static_output<char>(wvectorstream &, format_flags const &, void const *);
@@ -550,6 +583,7 @@ template void format_argument<wvectorstream>::static_output<unsigned long long>(
template void format_argument<wvectorstream>::static_output<wchar_t *>(wvectorstream &, format_flags const &, void const *);
template void format_argument<wvectorstream>::static_output<wchar_t const *>(wvectorstream &, format_flags const &, void const *);
template void format_argument<wvectorstream>::static_output<std::wstring>(wvectorstream &, format_flags const &, void const *);
+template void format_argument<wvectorstream>::static_output<std::wstring_view>(wvectorstream &, format_flags const &, void const *);
template bool format_argument<wvectorstream>::static_make_integer<char>(void const *, int &);
template bool format_argument<wvectorstream>::static_make_integer<signed char>(void const *, int &);
template bool format_argument<wvectorstream>::static_make_integer<unsigned char>(void const *, int &);
@@ -565,6 +599,7 @@ template bool format_argument<wvectorstream>::static_make_integer<unsigned long
template bool format_argument<wvectorstream>::static_make_integer<wchar_t *>(void const *, int &);
template bool format_argument<wvectorstream>::static_make_integer<wchar_t const *>(void const *, int &);
template bool format_argument<wvectorstream>::static_make_integer<std::wstring>(void const *, int &);
+template bool format_argument<wvectorstream>::static_make_integer<std::wstring_view>(void const *, int &);
template void format_argument<wvectorstream>::static_store_integer<char>(void const *, std::streamoff);
template void format_argument<wvectorstream>::static_store_integer<signed char>(void const *, std::streamoff);
template void format_argument<wvectorstream>::static_store_integer<unsigned char>(void const *, std::streamoff);
@@ -580,6 +615,7 @@ template void format_argument<wvectorstream>::static_store_integer<unsigned long
template void format_argument<wvectorstream>::static_store_integer<wchar_t *>(void const *, std::streamoff);
template void format_argument<wvectorstream>::static_store_integer<wchar_t const *>(void const *, std::streamoff);
template void format_argument<wvectorstream>::static_store_integer<std::wstring>(void const *, std::streamoff);
+template void format_argument<wvectorstream>::static_store_integer<std::wstring_view>(void const *, std::streamoff);
template class format_argument_pack<std::ostream>;
template class format_argument_pack<std::wostream>;
diff --git a/src/lib/util/strformat.h b/src/lib/util/strformat.h
index 0ce57606436..1f9818fa465 100644
--- a/src/lib/util/strformat.h
+++ b/src/lib/util/strformat.h
@@ -1817,6 +1817,7 @@ extern template void format_argument<std::ostream>::static_output<unsigned long
extern template void format_argument<std::ostream>::static_output<char *>(std::ostream &, format_flags const &, void const *);
extern template void format_argument<std::ostream>::static_output<char const *>(std::ostream &, format_flags const &, void const *);
extern template void format_argument<std::ostream>::static_output<std::string>(std::ostream &, format_flags const &, void const *);
+extern template void format_argument<std::ostream>::static_output<std::string_view>(std::ostream &, format_flags const &, void const *);
extern template bool format_argument<std::ostream>::static_make_integer<char>(void const *, int &);
extern template bool format_argument<std::ostream>::static_make_integer<signed char>(void const *, int &);
extern template bool format_argument<std::ostream>::static_make_integer<unsigned char>(void const *, int &);
@@ -1831,6 +1832,7 @@ extern template bool format_argument<std::ostream>::static_make_integer<unsigned
extern template bool format_argument<std::ostream>::static_make_integer<char *>(void const *, int &);
extern template bool format_argument<std::ostream>::static_make_integer<char const *>(void const *, int &);
extern template bool format_argument<std::ostream>::static_make_integer<std::string>(void const *, int &);
+extern template bool format_argument<std::ostream>::static_make_integer<std::string_view>(void const *, int &);
extern template void format_argument<std::ostream>::static_store_integer<char>(void const *, std::streamoff);
extern template void format_argument<std::ostream>::static_store_integer<signed char>(void const *, std::streamoff);
extern template void format_argument<std::ostream>::static_store_integer<unsigned char>(void const *, std::streamoff);
@@ -1845,6 +1847,7 @@ extern template void format_argument<std::ostream>::static_store_integer<unsigne
extern template void format_argument<std::ostream>::static_store_integer<char *>(void const *, std::streamoff);
extern template void format_argument<std::ostream>::static_store_integer<char const *>(void const *, std::streamoff);
extern template void format_argument<std::ostream>::static_store_integer<std::string>(void const *, std::streamoff);
+extern template void format_argument<std::ostream>::static_store_integer<std::string_view>(void const *, std::streamoff);
extern template class format_argument<std::wostream>;
extern template void format_argument<std::wostream>::static_output<char>(std::wostream &, format_flags const &, void const *);
@@ -1862,6 +1865,7 @@ extern template void format_argument<std::wostream>::static_output<unsigned long
extern template void format_argument<std::wostream>::static_output<wchar_t *>(std::wostream &, format_flags const &, void const *);
extern template void format_argument<std::wostream>::static_output<wchar_t const *>(std::wostream &, format_flags const &, void const *);
extern template void format_argument<std::wostream>::static_output<std::wstring>(std::wostream &, format_flags const &, void const *);
+extern template void format_argument<std::wostream>::static_output<std::wstring_view>(std::wostream &, format_flags const &, void const *);
extern template bool format_argument<std::wostream>::static_make_integer<char>(void const *, int &);
extern template bool format_argument<std::wostream>::static_make_integer<signed char>(void const *, int &);
extern template bool format_argument<std::wostream>::static_make_integer<unsigned char>(void const *, int &);
@@ -1877,6 +1881,7 @@ extern template bool format_argument<std::wostream>::static_make_integer<unsigne
extern template bool format_argument<std::wostream>::static_make_integer<wchar_t *>(void const *, int &);
extern template bool format_argument<std::wostream>::static_make_integer<wchar_t const *>(void const *, int &);
extern template bool format_argument<std::wostream>::static_make_integer<std::wstring>(void const *, int &);
+extern template bool format_argument<std::wostream>::static_make_integer<std::wstring_view>(void const *, int &);
extern template void format_argument<std::wostream>::static_store_integer<char>(void const *, std::streamoff);
extern template void format_argument<std::wostream>::static_store_integer<signed char>(void const *, std::streamoff);
extern template void format_argument<std::wostream>::static_store_integer<unsigned char>(void const *, std::streamoff);
@@ -1892,6 +1897,7 @@ extern template void format_argument<std::wostream>::static_store_integer<unsign
extern template void format_argument<std::wostream>::static_store_integer<wchar_t *>(void const *, std::streamoff);
extern template void format_argument<std::wostream>::static_store_integer<wchar_t const *>(void const *, std::streamoff);
extern template void format_argument<std::wostream>::static_store_integer<std::wstring>(void const *, std::streamoff);
+extern template void format_argument<std::wostream>::static_store_integer<std::wstring_view>(void const *, std::streamoff);
extern template class format_argument<std::iostream>;
extern template void format_argument<std::iostream>::static_output<char>(std::iostream &, format_flags const &, void const *);
@@ -1908,6 +1914,7 @@ extern template void format_argument<std::iostream>::static_output<unsigned long
extern template void format_argument<std::iostream>::static_output<char *>(std::iostream &, format_flags const &, void const *);
extern template void format_argument<std::iostream>::static_output<char const *>(std::iostream &, format_flags const &, void const *);
extern template void format_argument<std::iostream>::static_output<std::string>(std::iostream &, format_flags const &, void const *);
+extern template void format_argument<std::iostream>::static_output<std::string_view>(std::iostream &, format_flags const &, void const *);
extern template bool format_argument<std::iostream>::static_make_integer<char>(void const *, int &);
extern template bool format_argument<std::iostream>::static_make_integer<signed char>(void const *, int &);
extern template bool format_argument<std::iostream>::static_make_integer<unsigned char>(void const *, int &);
@@ -1922,6 +1929,7 @@ extern template bool format_argument<std::iostream>::static_make_integer<unsigne
extern template bool format_argument<std::iostream>::static_make_integer<char *>(void const *, int &);
extern template bool format_argument<std::iostream>::static_make_integer<char const *>(void const *, int &);
extern template bool format_argument<std::iostream>::static_make_integer<std::string>(void const *, int &);
+extern template bool format_argument<std::iostream>::static_make_integer<std::string_view>(void const *, int &);
extern template void format_argument<std::iostream>::static_store_integer<char>(void const *, std::streamoff);
extern template void format_argument<std::iostream>::static_store_integer<signed char>(void const *, std::streamoff);
extern template void format_argument<std::iostream>::static_store_integer<unsigned char>(void const *, std::streamoff);
@@ -1936,6 +1944,7 @@ extern template void format_argument<std::iostream>::static_store_integer<unsign
extern template void format_argument<std::iostream>::static_store_integer<char *>(void const *, std::streamoff);
extern template void format_argument<std::iostream>::static_store_integer<char const *>(void const *, std::streamoff);
extern template void format_argument<std::iostream>::static_store_integer<std::string>(void const *, std::streamoff);
+extern template void format_argument<std::iostream>::static_store_integer<std::string_view>(void const *, std::streamoff);
extern template class format_argument<std::wiostream>;
extern template void format_argument<std::wiostream>::static_output<char>(std::wiostream &, format_flags const &, void const *);
@@ -1953,6 +1962,7 @@ extern template void format_argument<std::wiostream>::static_output<unsigned lon
extern template void format_argument<std::wiostream>::static_output<wchar_t *>(std::wiostream &, format_flags const &, void const *);
extern template void format_argument<std::wiostream>::static_output<wchar_t const *>(std::wiostream &, format_flags const &, void const *);
extern template void format_argument<std::wiostream>::static_output<std::wstring>(std::wiostream &, format_flags const &, void const *);
+extern template void format_argument<std::wiostream>::static_output<std::wstring_view>(std::wiostream &, format_flags const &, void const *);
extern template bool format_argument<std::wiostream>::static_make_integer<char>(void const *, int &);
extern template bool format_argument<std::wiostream>::static_make_integer<signed char>(void const *, int &);
extern template bool format_argument<std::wiostream>::static_make_integer<unsigned char>(void const *, int &);
@@ -1968,6 +1978,7 @@ extern template bool format_argument<std::wiostream>::static_make_integer<unsign
extern template bool format_argument<std::wiostream>::static_make_integer<wchar_t *>(void const *, int &);
extern template bool format_argument<std::wiostream>::static_make_integer<wchar_t const *>(void const *, int &);
extern template bool format_argument<std::wiostream>::static_make_integer<std::wstring>(void const *, int &);
+extern template bool format_argument<std::wiostream>::static_make_integer<std::wstring_view>(void const *, int &);
extern template void format_argument<std::wiostream>::static_store_integer<char>(void const *, std::streamoff);
extern template void format_argument<std::wiostream>::static_store_integer<signed char>(void const *, std::streamoff);
extern template void format_argument<std::wiostream>::static_store_integer<unsigned char>(void const *, std::streamoff);
@@ -1983,6 +1994,7 @@ extern template void format_argument<std::wiostream>::static_store_integer<unsig
extern template void format_argument<std::wiostream>::static_store_integer<wchar_t *>(void const *, std::streamoff);
extern template void format_argument<std::wiostream>::static_store_integer<wchar_t const *>(void const *, std::streamoff);
extern template void format_argument<std::wiostream>::static_store_integer<std::wstring>(void const *, std::streamoff);
+extern template void format_argument<std::wiostream>::static_store_integer<std::wstring_view>(void const *, std::streamoff);
extern template class format_argument<std::ostringstream>;
extern template void format_argument<std::ostringstream>::static_output<char>(std::ostringstream &, format_flags const &, void const *);
@@ -1999,6 +2011,7 @@ extern template void format_argument<std::ostringstream>::static_output<unsigned
extern template void format_argument<std::ostringstream>::static_output<char *>(std::ostringstream &, format_flags const &, void const *);
extern template void format_argument<std::ostringstream>::static_output<char const *>(std::ostringstream &, format_flags const &, void const *);
extern template void format_argument<std::ostringstream>::static_output<std::string>(std::ostringstream &, format_flags const &, void const *);
+extern template void format_argument<std::ostringstream>::static_output<std::string_view>(std::ostringstream &, format_flags const &, void const *);
extern template bool format_argument<std::ostringstream>::static_make_integer<char>(void const *, int &);
extern template bool format_argument<std::ostringstream>::static_make_integer<signed char>(void const *, int &);
extern template bool format_argument<std::ostringstream>::static_make_integer<unsigned char>(void const *, int &);
@@ -2013,6 +2026,7 @@ extern template bool format_argument<std::ostringstream>::static_make_integer<un
extern template bool format_argument<std::ostringstream>::static_make_integer<char *>(void const *, int &);
extern template bool format_argument<std::ostringstream>::static_make_integer<char const *>(void const *, int &);
extern template bool format_argument<std::ostringstream>::static_make_integer<std::string>(void const *, int &);
+extern template bool format_argument<std::ostringstream>::static_make_integer<std::string_view>(void const *, int &);
extern template void format_argument<std::ostringstream>::static_store_integer<char>(void const *, std::streamoff);
extern template void format_argument<std::ostringstream>::static_store_integer<signed char>(void const *, std::streamoff);
extern template void format_argument<std::ostringstream>::static_store_integer<unsigned char>(void const *, std::streamoff);
@@ -2027,6 +2041,7 @@ extern template void format_argument<std::ostringstream>::static_store_integer<u
extern template void format_argument<std::ostringstream>::static_store_integer<char *>(void const *, std::streamoff);
extern template void format_argument<std::ostringstream>::static_store_integer<char const *>(void const *, std::streamoff);
extern template void format_argument<std::ostringstream>::static_store_integer<std::string>(void const *, std::streamoff);
+extern template void format_argument<std::ostringstream>::static_store_integer<std::string_view>(void const *, std::streamoff);
extern template class format_argument<std::wostringstream>;
extern template void format_argument<std::wostringstream>::static_output<char>(std::wostringstream &, format_flags const &, void const *);
@@ -2044,6 +2059,7 @@ extern template void format_argument<std::wostringstream>::static_output<unsigne
extern template void format_argument<std::wostringstream>::static_output<wchar_t *>(std::wostringstream &, format_flags const &, void const *);
extern template void format_argument<std::wostringstream>::static_output<wchar_t const *>(std::wostringstream &, format_flags const &, void const *);
extern template void format_argument<std::wostringstream>::static_output<std::wstring>(std::wostringstream &, format_flags const &, void const *);
+extern template void format_argument<std::wostringstream>::static_output<std::wstring_view>(std::wostringstream &, format_flags const &, void const *);
extern template bool format_argument<std::wostringstream>::static_make_integer<char>(void const *, int &);
extern template bool format_argument<std::wostringstream>::static_make_integer<signed char>(void const *, int &);
extern template bool format_argument<std::wostringstream>::static_make_integer<unsigned char>(void const *, int &);
@@ -2059,6 +2075,7 @@ extern template bool format_argument<std::wostringstream>::static_make_integer<u
extern template bool format_argument<std::wostringstream>::static_make_integer<wchar_t *>(void const *, int &);
extern template bool format_argument<std::wostringstream>::static_make_integer<wchar_t const *>(void const *, int &);
extern template bool format_argument<std::wostringstream>::static_make_integer<std::wstring>(void const *, int &);
+extern template bool format_argument<std::wostringstream>::static_make_integer<std::wstring_view>(void const *, int &);
extern template void format_argument<std::wostringstream>::static_store_integer<char>(void const *, std::streamoff);
extern template void format_argument<std::wostringstream>::static_store_integer<signed char>(void const *, std::streamoff);
extern template void format_argument<std::wostringstream>::static_store_integer<unsigned char>(void const *, std::streamoff);
@@ -2074,6 +2091,7 @@ extern template void format_argument<std::wostringstream>::static_store_integer<
extern template void format_argument<std::wostringstream>::static_store_integer<wchar_t *>(void const *, std::streamoff);
extern template void format_argument<std::wostringstream>::static_store_integer<wchar_t const *>(void const *, std::streamoff);
extern template void format_argument<std::wostringstream>::static_store_integer<std::wstring>(void const *, std::streamoff);
+extern template void format_argument<std::wostringstream>::static_store_integer<std::wstring_view>(void const *, std::streamoff);
extern template class format_argument<std::stringstream>;
extern template void format_argument<std::stringstream>::static_output<char>(std::stringstream &, format_flags const &, void const *);
@@ -2090,6 +2108,7 @@ extern template void format_argument<std::stringstream>::static_output<unsigned
extern template void format_argument<std::stringstream>::static_output<char *>(std::stringstream &, format_flags const &, void const *);
extern template void format_argument<std::stringstream>::static_output<char const *>(std::stringstream &, format_flags const &, void const *);
extern template void format_argument<std::stringstream>::static_output<std::string>(std::stringstream &, format_flags const &, void const *);
+extern template void format_argument<std::stringstream>::static_output<std::string_view>(std::stringstream &, format_flags const &, void const *);
extern template bool format_argument<std::stringstream>::static_make_integer<char>(void const *, int &);
extern template bool format_argument<std::stringstream>::static_make_integer<signed char>(void const *, int &);
extern template bool format_argument<std::stringstream>::static_make_integer<unsigned char>(void const *, int &);
@@ -2104,6 +2123,7 @@ extern template bool format_argument<std::stringstream>::static_make_integer<uns
extern template bool format_argument<std::stringstream>::static_make_integer<char *>(void const *, int &);
extern template bool format_argument<std::stringstream>::static_make_integer<char const *>(void const *, int &);
extern template bool format_argument<std::stringstream>::static_make_integer<std::string>(void const *, int &);
+extern template bool format_argument<std::stringstream>::static_make_integer<std::string_view>(void const *, int &);
extern template void format_argument<std::stringstream>::static_store_integer<char>(void const *, std::streamoff);
extern template void format_argument<std::stringstream>::static_store_integer<signed char>(void const *, std::streamoff);
extern template void format_argument<std::stringstream>::static_store_integer<unsigned char>(void const *, std::streamoff);
@@ -2118,6 +2138,7 @@ extern template void format_argument<std::stringstream>::static_store_integer<un
extern template void format_argument<std::stringstream>::static_store_integer<char *>(void const *, std::streamoff);
extern template void format_argument<std::stringstream>::static_store_integer<char const *>(void const *, std::streamoff);
extern template void format_argument<std::stringstream>::static_store_integer<std::string>(void const *, std::streamoff);
+extern template void format_argument<std::stringstream>::static_store_integer<std::string_view>(void const *, std::streamoff);
extern template class format_argument<std::wstringstream>;
extern template void format_argument<std::wstringstream>::static_output<char>(std::wstringstream &, format_flags const &, void const *);
@@ -2135,6 +2156,7 @@ extern template void format_argument<std::wstringstream>::static_output<unsigned
extern template void format_argument<std::wstringstream>::static_output<wchar_t *>(std::wstringstream &, format_flags const &, void const *);
extern template void format_argument<std::wstringstream>::static_output<wchar_t const *>(std::wstringstream &, format_flags const &, void const *);
extern template void format_argument<std::wstringstream>::static_output<std::wstring>(std::wstringstream &, format_flags const &, void const *);
+extern template void format_argument<std::wstringstream>::static_output<std::wstring_view>(std::wstringstream &, format_flags const &, void const *);
extern template bool format_argument<std::wstringstream>::static_make_integer<char>(void const *, int &);
extern template bool format_argument<std::wstringstream>::static_make_integer<signed char>(void const *, int &);
extern template bool format_argument<std::wstringstream>::static_make_integer<unsigned char>(void const *, int &);
@@ -2150,6 +2172,7 @@ extern template bool format_argument<std::wstringstream>::static_make_integer<un
extern template bool format_argument<std::wstringstream>::static_make_integer<wchar_t *>(void const *, int &);
extern template bool format_argument<std::wstringstream>::static_make_integer<wchar_t const *>(void const *, int &);
extern template bool format_argument<std::wstringstream>::static_make_integer<std::wstring>(void const *, int &);
+extern template bool format_argument<std::wstringstream>::static_make_integer<std::wstring_view>(void const *, int &);
extern template void format_argument<std::wstringstream>::static_store_integer<char>(void const *, std::streamoff);
extern template void format_argument<std::wstringstream>::static_store_integer<signed char>(void const *, std::streamoff);
extern template void format_argument<std::wstringstream>::static_store_integer<unsigned char>(void const *, std::streamoff);
@@ -2165,6 +2188,7 @@ extern template void format_argument<std::wstringstream>::static_store_integer<u
extern template void format_argument<std::wstringstream>::static_store_integer<wchar_t *>(void const *, std::streamoff);
extern template void format_argument<std::wstringstream>::static_store_integer<wchar_t const *>(void const *, std::streamoff);
extern template void format_argument<std::wstringstream>::static_store_integer<std::wstring>(void const *, std::streamoff);
+extern template void format_argument<std::wstringstream>::static_store_integer<std::wstring_view>(void const *, std::streamoff);
extern template class format_argument<ovectorstream>;
extern template void format_argument<ovectorstream>::static_output<char>(ovectorstream &, format_flags const &, void const *);
@@ -2181,6 +2205,7 @@ extern template void format_argument<ovectorstream>::static_output<unsigned long
extern template void format_argument<ovectorstream>::static_output<char *>(ovectorstream &, format_flags const &, void const *);
extern template void format_argument<ovectorstream>::static_output<char const *>(ovectorstream &, format_flags const &, void const *);
extern template void format_argument<ovectorstream>::static_output<std::string>(ovectorstream &, format_flags const &, void const *);
+extern template void format_argument<ovectorstream>::static_output<std::string_view>(ovectorstream &, format_flags const &, void const *);
extern template bool format_argument<ovectorstream>::static_make_integer<char>(void const *, int &);
extern template bool format_argument<ovectorstream>::static_make_integer<signed char>(void const *, int &);
extern template bool format_argument<ovectorstream>::static_make_integer<unsigned char>(void const *, int &);
@@ -2195,6 +2220,7 @@ extern template bool format_argument<ovectorstream>::static_make_integer<unsigne
extern template bool format_argument<ovectorstream>::static_make_integer<char *>(void const *, int &);
extern template bool format_argument<ovectorstream>::static_make_integer<char const *>(void const *, int &);
extern template bool format_argument<ovectorstream>::static_make_integer<std::string>(void const *, int &);
+extern template bool format_argument<ovectorstream>::static_make_integer<std::string_view>(void const *, int &);
extern template void format_argument<ovectorstream>::static_store_integer<char>(void const *, std::streamoff);
extern template void format_argument<ovectorstream>::static_store_integer<signed char>(void const *, std::streamoff);
extern template void format_argument<ovectorstream>::static_store_integer<unsigned char>(void const *, std::streamoff);
@@ -2209,6 +2235,7 @@ extern template void format_argument<ovectorstream>::static_store_integer<unsign
extern template void format_argument<ovectorstream>::static_store_integer<char *>(void const *, std::streamoff);
extern template void format_argument<ovectorstream>::static_store_integer<char const *>(void const *, std::streamoff);
extern template void format_argument<ovectorstream>::static_store_integer<std::string>(void const *, std::streamoff);
+extern template void format_argument<ovectorstream>::static_store_integer<std::string_view>(void const *, std::streamoff);
extern template class format_argument<wovectorstream>;
extern template void format_argument<wovectorstream>::static_output<char>(wovectorstream &, format_flags const &, void const *);
@@ -2226,6 +2253,7 @@ extern template void format_argument<wovectorstream>::static_output<unsigned lon
extern template void format_argument<wovectorstream>::static_output<wchar_t *>(wovectorstream &, format_flags const &, void const *);
extern template void format_argument<wovectorstream>::static_output<wchar_t const *>(wovectorstream &, format_flags const &, void const *);
extern template void format_argument<wovectorstream>::static_output<std::wstring>(wovectorstream &, format_flags const &, void const *);
+extern template void format_argument<wovectorstream>::static_output<std::wstring_view>(wovectorstream &, format_flags const &, void const *);
extern template bool format_argument<wovectorstream>::static_make_integer<char>(void const *, int &);
extern template bool format_argument<wovectorstream>::static_make_integer<signed char>(void const *, int &);
extern template bool format_argument<wovectorstream>::static_make_integer<unsigned char>(void const *, int &);
@@ -2241,6 +2269,7 @@ extern template bool format_argument<wovectorstream>::static_make_integer<unsign
extern template bool format_argument<wovectorstream>::static_make_integer<wchar_t *>(void const *, int &);
extern template bool format_argument<wovectorstream>::static_make_integer<wchar_t const *>(void const *, int &);
extern template bool format_argument<wovectorstream>::static_make_integer<std::wstring>(void const *, int &);
+extern template bool format_argument<wovectorstream>::static_make_integer<std::wstring_view>(void const *, int &);
extern template void format_argument<wovectorstream>::static_store_integer<char>(void const *, std::streamoff);
extern template void format_argument<wovectorstream>::static_store_integer<signed char>(void const *, std::streamoff);
extern template void format_argument<wovectorstream>::static_store_integer<unsigned char>(void const *, std::streamoff);
@@ -2256,6 +2285,7 @@ extern template void format_argument<wovectorstream>::static_store_integer<unsig
extern template void format_argument<wovectorstream>::static_store_integer<wchar_t *>(void const *, std::streamoff);
extern template void format_argument<wovectorstream>::static_store_integer<wchar_t const *>(void const *, std::streamoff);
extern template void format_argument<wovectorstream>::static_store_integer<std::wstring>(void const *, std::streamoff);
+extern template void format_argument<wovectorstream>::static_store_integer<std::wstring_view>(void const *, std::streamoff);
extern template class format_argument<vectorstream>;
extern template void format_argument<vectorstream>::static_output<char>(vectorstream &, format_flags const &, void const *);
@@ -2272,6 +2302,7 @@ extern template void format_argument<vectorstream>::static_output<unsigned long
extern template void format_argument<vectorstream>::static_output<char *>(vectorstream &, format_flags const &, void const *);
extern template void format_argument<vectorstream>::static_output<char const *>(vectorstream &, format_flags const &, void const *);
extern template void format_argument<vectorstream>::static_output<std::string>(vectorstream &, format_flags const &, void const *);
+extern template void format_argument<vectorstream>::static_output<std::string_view>(vectorstream &, format_flags const &, void const *);
extern template bool format_argument<vectorstream>::static_make_integer<char>(void const *, int &);
extern template bool format_argument<vectorstream>::static_make_integer<signed char>(void const *, int &);
extern template bool format_argument<vectorstream>::static_make_integer<unsigned char>(void const *, int &);
@@ -2286,6 +2317,7 @@ extern template bool format_argument<vectorstream>::static_make_integer<unsigned
extern template bool format_argument<vectorstream>::static_make_integer<char *>(void const *, int &);
extern template bool format_argument<vectorstream>::static_make_integer<char const *>(void const *, int &);
extern template bool format_argument<vectorstream>::static_make_integer<std::string>(void const *, int &);
+extern template bool format_argument<vectorstream>::static_make_integer<std::string_view>(void const *, int &);
extern template void format_argument<vectorstream>::static_store_integer<char>(void const *, std::streamoff);
extern template void format_argument<vectorstream>::static_store_integer<signed char>(void const *, std::streamoff);
extern template void format_argument<vectorstream>::static_store_integer<unsigned char>(void const *, std::streamoff);
@@ -2300,6 +2332,7 @@ extern template void format_argument<vectorstream>::static_store_integer<unsigne
extern template void format_argument<vectorstream>::static_store_integer<char *>(void const *, std::streamoff);
extern template void format_argument<vectorstream>::static_store_integer<char const *>(void const *, std::streamoff);
extern template void format_argument<vectorstream>::static_store_integer<std::string>(void const *, std::streamoff);
+extern template void format_argument<vectorstream>::static_store_integer<std::string_view>(void const *, std::streamoff);
extern template class format_argument<wvectorstream>;
extern template void format_argument<wvectorstream>::static_output<char>(wvectorstream &, format_flags const &, void const *);
@@ -2317,6 +2350,7 @@ extern template void format_argument<wvectorstream>::static_output<unsigned long
extern template void format_argument<wvectorstream>::static_output<wchar_t *>(wvectorstream &, format_flags const &, void const *);
extern template void format_argument<wvectorstream>::static_output<wchar_t const *>(wvectorstream &, format_flags const &, void const *);
extern template void format_argument<wvectorstream>::static_output<std::wstring>(wvectorstream &, format_flags const &, void const *);
+extern template void format_argument<wvectorstream>::static_output<std::wstring_view>(wvectorstream &, format_flags const &, void const *);
extern template bool format_argument<wvectorstream>::static_make_integer<char>(void const *, int &);
extern template bool format_argument<wvectorstream>::static_make_integer<signed char>(void const *, int &);
extern template bool format_argument<wvectorstream>::static_make_integer<unsigned char>(void const *, int &);
@@ -2332,6 +2366,7 @@ extern template bool format_argument<wvectorstream>::static_make_integer<unsigne
extern template bool format_argument<wvectorstream>::static_make_integer<wchar_t *>(void const *, int &);
extern template bool format_argument<wvectorstream>::static_make_integer<wchar_t const *>(void const *, int &);
extern template bool format_argument<wvectorstream>::static_make_integer<std::wstring>(void const *, int &);
+extern template bool format_argument<wvectorstream>::static_make_integer<std::wstring_view>(void const *, int &);
extern template void format_argument<wvectorstream>::static_store_integer<char>(void const *, std::streamoff);
extern template void format_argument<wvectorstream>::static_store_integer<signed char>(void const *, std::streamoff);
extern template void format_argument<wvectorstream>::static_store_integer<unsigned char>(void const *, std::streamoff);
@@ -2347,6 +2382,7 @@ extern template void format_argument<wvectorstream>::static_store_integer<unsign
extern template void format_argument<wvectorstream>::static_store_integer<wchar_t *>(void const *, std::streamoff);
extern template void format_argument<wvectorstream>::static_store_integer<wchar_t const *>(void const *, std::streamoff);
extern template void format_argument<wvectorstream>::static_store_integer<std::wstring>(void const *, std::streamoff);
+extern template void format_argument<wvectorstream>::static_store_integer<std::wstring_view>(void const *, std::streamoff);
extern template class format_argument_pack<std::ostream>;
extern template class format_argument_pack<std::wostream>;