--- nono/lib/monitor.h 2026/04/29 17:05:44 1.1.1.9 +++ nono/lib/monitor.h 2026/04/29 17:05:52 1.1.1.11 @@ -66,9 +66,6 @@ class Monitor; using MonitorCallback_t = void (Object::*)(Monitor *, TextScreen&); #define ToMonitorCallback(f) static_cast(f) -// モニタ更新を呼び出すマクロ -#define MONITOR_UPDATE(m, scr) ((((m)->obj)->*((m)->func))((m), (scr))) - // モニタ class Monitor { @@ -99,13 +96,18 @@ class Monitor // このモニターの ID を表示用文字列にして返す。 const char *GetIdText() const { return GetIdText(id); } + // モニタを更新する。 + void Update(TextScreen& screen) { + (obj->*(func))(this, screen); + } + Object *obj {}; // オブジェクト MonitorCallback_t func {}; // コールバック関数 private: // モニター識別子 - uint id; + uint id {}; // モニターサイズ nnSize size {}; @@ -157,19 +159,19 @@ class MonitorManager // 指定された id に対応する機種ケーパビリティを返す。 VMCap GetVMCap(uint id) const { - assert(id < info.size()); + assertmsg(id < info.size(), "id=%u < %zu", id, info.size()); return info[id].vmcap; } // 指定された id に対応する名前のリストを返す。 // id が範囲外だと assert する。 const std::vector& GetAliases(uint id) const { - assert(id < info.size()); + assertmsg(id < info.size(), "id=%u < %zu", id, info.size()); return info[id].aliases; } - // id リストから一覧表示用の文字列を生成して返す - static std::string MakeListString(std::vector list); + // id リストから一覧表示用の文字列リストを生成して返す + std::vector MakeListString(std::vector list) const; // 以降の追加を禁止する (プログラムミスを避けるため) void Fix();