OSDN Git Service

[Refactor] #3406 message_str() の戻り値をconcptr からstring に変えた
authorHourier <66951241+Hourier@users.noreply.github.com>
Tue, 13 Jun 2023 13:14:43 +0000 (22:14 +0900)
committerHourier <66951241+Hourier@users.noreply.github.com>
Sat, 24 Jun 2023 03:24:09 +0000 (12:24 +0900)
src/cmd-visual/cmd-draw.cpp
src/io-dump/character-dump.cpp
src/view/display-messages.cpp
src/view/display-messages.h
src/window/display-sub-windows.cpp

index df705c6..74bc39c 100644 (file)
@@ -161,7 +161,7 @@ void do_cmd_player_status(PlayerType *player_ptr)
  */
 void do_cmd_message_one(void)
 {
-    prt(format("> %s", message_str(0)), 0, 0);
+    prt(format("> %s", message_str(0).data()), 0, 0);
 }
 
 /*!
@@ -203,13 +203,14 @@ void do_cmd_messages(int num_now)
         int j;
         int skey;
         for (j = 0; (j < num_lines) && (i + j < n); j++) {
-            concptr msg = message_str(i + j);
+            const auto msg_str = message_str(i + j);
+            const auto *msg = msg_str.data();
             c_prt((i + j < num_now ? TERM_WHITE : TERM_SLATE), msg, num_lines + 1 - j, 0);
             if (!shower || !shower[0]) {
                 continue;
             }
 
-            concptr str = msg;
+            const auto *str = msg;
             while ((str = angband_strstr(str, shower)) != nullptr) {
                 int len = strlen(shower);
                 term_putstr(str - msg, num_lines + 1 - j, len, TERM_YELLOW, shower);
@@ -254,8 +255,9 @@ void do_cmd_messages(int num_now)
 
             shower = finder_str;
             for (int z = i + 1; z < n; z++) {
-                concptr msg = message_str(z);
-                if (angband_strstr(msg, finder_str)) {
+                const auto msg_str = message_str(z);
+                const auto *msg = msg_str.data();
+                if (angband_strstr(msg, finder_str) != nullptr) {
                     i = z;
                     break;
                 }
index 16eacf1..8459e22 100644 (file)
@@ -145,7 +145,7 @@ static void dump_aux_last_message(PlayerType *player_ptr, FILE *fff)
     if (!w_ptr->total_winner) {
         fprintf(fff, _("\n  [死ぬ直前のメッセージ]\n\n", "\n  [Last Messages]\n\n"));
         for (int i = std::min(message_num(), 30); i >= 0; i--) {
-            fprintf(fff, "> %s\n", message_str((int16_t)i));
+            fprintf(fff, "> %s\n", message_str((int16_t)i).data());
         }
 
         fputc('\n', fff);
index b466c63..eaa37f5 100644 (file)
@@ -80,13 +80,13 @@ int32_t message_num(void)
  * @param age メッセージの世代
  * @return メッセージの文字列ポインタ
  */
-concptr message_str(int age)
+std::string message_str(int age)
 {
     if ((age < 0) || (age >= message_num())) {
         return "";
     }
 
-    return message_history[age]->data();
+    return *message_history[age];
 }
 
 static void message_add_aux(std::string str)
index 61c4b5e..4eb5ab2 100644 (file)
@@ -2,6 +2,7 @@
 
 #include "system/angband.h"
 #include <concepts>
+#include <string>
 #include <string_view>
 
 /*
@@ -14,7 +15,7 @@ extern bool msg_flag;
 extern COMMAND_CODE now_message;
 
 int32_t message_num(void);
-concptr message_str(int age);
+std::string message_str(int age);
 void message_add(std::string_view msg);
 void msg_erase(void);
 void msg_print(std::string_view msg);
index cd3c5ff..42adef0 100644 (file)
@@ -431,8 +431,8 @@ void fix_message(void)
         [] {
             TERM_LEN w, h;
             term_get_size(&w, &h);
-            for (int i = 0; i < h; i++) {
-                term_putstr(0, (h - 1) - i, -1, (byte)((i < now_message) ? TERM_WHITE : TERM_SLATE), message_str((int16_t)i));
+            for (short i = 0; i < h; i++) {
+                term_putstr(0, (h - 1) - i, -1, (byte)((i < now_message) ? TERM_WHITE : TERM_SLATE), message_str(i));
                 TERM_LEN x, y;
                 term_locate(&x, &y);
                 term_erase(x, y, 255);