OSDN Git Service

[Refactor] #2645 strip_name() の戻り値をvoid からstd::string に変更し、引数からchar* を消した
authorHourier <66951241+Hourier@users.noreply.github.com>
Fri, 16 Sep 2022 13:25:11 +0000 (22:25 +0900)
committerHourier <66951241+Hourier@users.noreply.github.com>
Fri, 16 Sep 2022 14:39:00 +0000 (23:39 +0900)
src/cmd-visual/cmd-visuals.cpp
src/flavor/object-flavor.cpp
src/flavor/object-flavor.h
src/knowledge/knowledge-experiences.cpp
src/knowledge/knowledge-items.cpp
src/wizard/wizard-special-process.cpp

index 3d47995..e13cad6 100644 (file)
@@ -155,20 +155,25 @@ void do_cmd_visuals(PlayerType *player_ptr)
 
             auto_dump_printf(auto_dump_stream, _("\n# アイテムの[色/文字]の設定\n\n", "\n# Object attr/char definitions\n\n"));
             for (const auto &k_ref : k_info) {
-                GAME_TEXT o_name[MAX_NLEN];
                 if (k_ref.name.empty()) {
                     continue;
                 }
 
+                std::string o_name("");
+                GAME_TEXT char_o_name[MAX_NLEN]{};
                 if (!k_ref.flavor) {
-                    strip_name(o_name, k_ref.idx);
+                    o_name = strip_name(k_ref.idx);
                 } else {
                     ObjectType dummy;
                     dummy.prep(k_ref.idx);
-                    describe_flavor(player_ptr, o_name, &dummy, OD_FORCE_FLAVOR);
+                    describe_flavor(player_ptr, char_o_name, &dummy, OD_FORCE_FLAVOR);
                 }
 
-                auto_dump_printf(auto_dump_stream, "# %s\n", o_name);
+                if (o_name == "") {
+                    o_name = char_o_name;
+                }
+
+                auto_dump_printf(auto_dump_stream, "# %s\n", o_name.data());
                 auto_dump_printf(auto_dump_stream, "K:%d:0x%02X/0x%02X\n\n", (int)k_ref.idx, (byte)(k_ref.x_attr), (byte)(k_ref.x_char));
             }
 
index 55dffd5..ebf9ad9 100644 (file)
@@ -42,6 +42,7 @@
 #include "util/string-processor.h"
 #include "world/world.h"
 #include <functional>
+#include <sstream>
 #include <utility>
 
 /*!
@@ -252,12 +253,12 @@ void flavor_init(void)
  * @param buf ベースアイテム格納先の参照ポインタ
  * @param k_idx ベースアイテムID
  */
-void strip_name(char *buf, KIND_OBJECT_IDX k_idx)
+std::string strip_name(KIND_OBJECT_IDX k_idx)
 {
     auto k_ptr = &k_info[k_idx];
     auto tok = str_split(k_ptr->name, ' ');
-    std::string name = "";
-    for (auto s : tok) {
+    std::stringstream name;
+    for (const auto &s : tok) {
         if (s == "" || s == "~" || s == "&" || s == "#") {
             continue;
         }
@@ -279,9 +280,9 @@ void strip_name(char *buf, KIND_OBJECT_IDX k_idx)
             endpos--;
         }
 
-        name += s.substr(offset, endpos);
+        name << s.substr(offset, endpos);
     }
 
-    name += " ";
-    strcpy(buf, name.c_str());
+    name << " ";
+    return name.str();
 }
index 14a0861..ed57a12 100644 (file)
@@ -1,10 +1,11 @@
 #pragma once
 
 #include "system/angband.h"
+#include <string>
 
 void get_table_name_aux(char *out_string);
 void get_table_name(char *out_string);
 void get_table_sindarin_aux(char *out_string);
 void get_table_sindarin(char *out_string);
 void flavor_init(void);
-void strip_name(char *buf, KIND_OBJECT_IDX k_idx);
+std::string strip_name(KIND_OBJECT_IDX k_idx);
index eb8d627..5044414 100644 (file)
@@ -34,7 +34,6 @@ void do_cmd_knowledge_weapon_exp(PlayerType *player_ptr)
 
     for (auto tval : { ItemKindType::SWORD, ItemKindType::POLEARM, ItemKindType::HAFTED, ItemKindType::DIGGING, ItemKindType::BOW }) {
         for (int num = 0; num < 64; num++) {
-            char tmp[30];
             for (const auto &k_ref : k_info) {
                 if ((k_ref.tval != tval) || (k_ref.sval != num)) {
                     continue;
@@ -45,8 +44,8 @@ void do_cmd_knowledge_weapon_exp(PlayerType *player_ptr)
 
                 SUB_EXP weapon_exp = player_ptr->weapon_exp[tval][num];
                 SUB_EXP weapon_max = player_ptr->weapon_exp_max[tval][num];
-                strip_name(tmp, k_ref.idx);
-                fprintf(fff, "%-25s ", tmp);
+                const auto tmp = strip_name(k_ref.idx);
+                fprintf(fff, "%-25s ", tmp.data());
                 if (show_actual_value) {
                     fprintf(fff, "%4d/%4d ", weapon_exp, weapon_max);
                 }
index dd2496e..c88707c 100644 (file)
@@ -179,7 +179,6 @@ static void display_object_list(int col, int row, int per_page, IDX object_idx[]
 {
     int i;
     for (i = 0; i < per_page && (object_idx[object_top + i] >= 0); i++) {
-        GAME_TEXT o_name[MAX_NLEN];
         TERM_COLOR a;
         object_kind *flavor_k_ptr;
         KIND_OBJECT_IDX k_idx = object_idx[object_top + i];
@@ -193,13 +192,14 @@ static void display_object_list(int col, int row, int per_page, IDX object_idx[]
         }
 
         attr = ((i + object_top == object_cur) ? cursor : attr);
+        std::string o_name;
         if (!k_ptr->flavor || (!visual_only && k_ptr->aware)) {
-            strip_name(o_name, k_idx);
+            o_name = strip_name(k_idx);
         } else {
-            strcpy(o_name, flavor_k_ptr->flavor_name.c_str());
+            o_name = flavor_k_ptr->flavor_name;
         }
 
-        c_prt(attr, o_name, row + i, col);
+        c_prt(attr, o_name.data(), row + i, col);
         if (per_page == 1) {
             c_prt(attr, format("%02x/%02x", flavor_k_ptr->x_attr, flavor_k_ptr->x_char), row + i, (w_ptr->wizard || visual_only) ? 64 : 68);
         }
index ffe0413..cad63cf 100644 (file)
@@ -153,7 +153,6 @@ static KIND_OBJECT_IDX wiz_select_sval(const ItemKindType tval, concptr tval_des
 {
     auto num = 0;
     KIND_OBJECT_IDX choice[80]{};
-    char buf[160]{};
     char ch;
     for (const auto &k_ref : k_info) {
         if (num >= 80) {
@@ -167,9 +166,8 @@ static KIND_OBJECT_IDX wiz_select_sval(const ItemKindType tval, concptr tval_des
         auto row = 2 + (num % 20);
         auto col = _(30, 32) * (num / 20);
         ch = listsym[num];
-        strcpy(buf, "                    ");
-        strip_name(buf, k_ref.idx);
-        prt(format("[%c] %s", ch, buf), row, col);
+        const auto buf = strip_name(k_ref.idx);
+        prt(format("[%c] %s", ch, buf.c_str()), row, col);
         choice[num++] = k_ref.idx;
     }