Pass std::span to msgbox_warning

This commit is contained in:
Kp 2022-09-24 17:47:53 +00:00
parent 6d0a5f5783
commit ea5d0136dc
6 changed files with 23 additions and 21 deletions

View file

@ -33,9 +33,9 @@ void display_cocoa_alert(const char *message, int error)
[pool drain];
}
void msgbox_warning(const char *message)
void msgbox_warning(const std::span<const char> message)
{
display_cocoa_alert(message, 0);
display_cocoa_alert(message.data(), 0);
}
void msgbox_error(const char *message)

View file

@ -46,9 +46,9 @@ static void display_win32_alert(const char *message, int error)
gr_toggle_fullscreen();
}
void msgbox_warning(const char *message)
void msgbox_warning(const std::span<const char> message)
{
display_win32_alert(message, 0);
display_win32_alert(message.data(), 0);
}
void msgbox_error(const char *message)

View file

@ -28,6 +28,7 @@ COPYRIGHT 1993-1998 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
#include <cassert>
#include <cstddef>
#include <cstdio>
#include <span>
#include "dsx-ns.h"
#include "fmtcheck.h"
@ -37,7 +38,7 @@ void Warning_puts(const char *str) __attribute_nonnull();
void Warning(const char *fmt,...) __attribute_format_printf(1, 2); //print out warning message to user
#define Warning(F,...) dxx_call_printf_checked(Warning,Warning_puts,(),(F),##__VA_ARGS__)
#if DXX_USE_EDITOR
void set_warn_func(void (*f)(const char *s));//specifies the function to call with warning messages
void set_warn_func(void (*f)(std::span<const char> s)); //specifies the function to call with warning messages
#if !(defined(WIN32) || defined(__APPLE__) || defined(__MACH__))
void clear_warn_func();//say this function no longer valid
#endif

View file

@ -14,11 +14,13 @@
#pragma once
#include <span>
namespace dcx {
#if defined(WIN32) || defined(__APPLE__) || defined(__MACH__)
// Display a warning in a messagebox
extern void msgbox_warning(const char *message);
void msgbox_warning(std::span<const char> message);
// Display an error in a messagebox
extern void msgbox_error(const char *message);

View file

@ -37,14 +37,14 @@ namespace dcx {
#define MAX_MSG_LEN 2048
#if !DXX_USE_EDITOR || (!(defined(WIN32) || defined(__APPLE__) || defined(__MACH__)))
static void warn_printf(const char *s)
static void warn_printf(const std::span<const char> s)
{
con_puts(CON_URGENT,s);
con_puts(CON_URGENT, s.data());
}
#endif
#if DXX_USE_EDITOR
static void (*warn_func)(const char *s) =
static void (*warn_func)(std::span<const char> s) =
#if defined(WIN32) || defined(__APPLE__) || defined(__MACH__)
msgbox_warning
#else
@ -53,7 +53,7 @@ static void (*warn_func)(const char *s) =
;
//provides a function to call with warning messages
void set_warn_func(void (*f)(const char *s))
void set_warn_func(void (*f)(std::span<const char> s))
{
warn_func = f;
}
@ -136,9 +136,9 @@ void Warning_puts(const char *str)
if (warn == NULL)
return;
#endif
char warn_message[MAX_MSG_LEN];
snprintf(warn_message, sizeof(warn_message), "Warning: %s", str);
(*warn)(warn_message);
std::array<char, MAX_MSG_LEN> warn_message;
const auto written = snprintf(std::data(warn_message), std::size(warn_message), "Warning: %s", str);
(*warn)(std::span<const char>(warn_message.data(), written));
}
//print out warning message to user
@ -152,14 +152,14 @@ void (Warning)(const char *fmt,...)
return;
#endif
char warn_message[MAX_MSG_LEN];
strcpy(warn_message,"Warning: ");
std::array<char, MAX_MSG_LEN> warn_message;
strcpy(warn_message.data(), "Warning: ");
va_start(arglist,fmt);
vsnprintf(warn_message+9,sizeof(warn_message)-9,fmt,arglist);
const auto written = vsnprintf(std::next(warn_message.begin(), 9), std::size(warn_message) - 9, fmt, arglist);
va_end(arglist);
(*warn)(warn_message);
(*warn)(std::span<const char>(warn_message.data(), written + 9));
}
}

View file

@ -102,7 +102,7 @@ COPYRIGHT 1993-1998 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
#define COMPRESS_INTERVAL 5 // seconds
static void med_show_warning(const char *s);
static void med_show_warning(std::span<const char> s);
//char *undo_status[128];
@ -823,14 +823,13 @@ void close_editor_screen()
}
static void med_show_warning(const char *s)
static void med_show_warning(std::span<const char> s)
{
grs_canvas &save_canv = *grd_curcanv;
//gr_pal_fade_in(grd_curscreen->pal); //in case palette is blacked
ui_messagebox(-2,-2,1,s,"OK");
ui_messagebox(-2, -2, 1, s.data(), "OK");
gr_set_current_canvas(save_canv);
}