--- nono/lib/object.h 2026/04/29 17:04:49 1.1.1.6 +++ nono/lib/object.h 2026/04/29 17:04:54 1.1.1.7 @@ -23,18 +23,59 @@ // // ログ出力機能を持つ。 // -class Object : public IMonitor +class Object { public: - Object(); - virtual ~Object() override; + // 引数はオブジェクト名(ログ表示名)で、これはログに前置される。 + // またコンストラクタ指定の場合はエイリアスにも登録する。 + // これは表示名と指示名が同じことが多いための便宜措置。 + // 指示名に表示名を使いたくない場合は ClearAlias() してから + // AddAlias() すること。 + Object(const std::string& objname_); + + virtual ~Object(); + + // オブジェクト名(ログ表示名)を取得する + const std::string& GetName() const { return objname; } + + // エイリアスリストを返す + const std::vector& GetAliases() const { return log_aliases; } + + protected: + // オブジェクト名を newname に設定(更新)する。 + // 通常、オブジェクト名はコンストラクタで指定するが、コンストラクタ時点 + // ではまだ名前が決まらないような場合にだけ使う。 + // こちらはエイリアスには関与しない。 + void SetName(const std::string& newname) { + objname = newname; + } + + // エイリアスをクリアする。 + // エイリアスは初期値として、コンストラクタで設定したオブジェクト名が + // 1つ入っているが、これを削除したい時に使う。 + void ClearAlias() { + log_aliases.clear(); + } + + // エイリアスを追加する。 + void AddAlias(const std::string& alias) { + log_aliases.emplace_back(alias); + } + + private: + // オブジェクト名。 + // こちらはログの先頭に追加される。 + std::string objname {}; + + // エイリアスのリスト。 + // こちらはログ名を指定する時に使う。 + std::vector log_aliases {}; + public: // // ログ // - // ログ識別名 - std::string logname {}; // ログレベル // 0: 未実装動作などのデバッグログではない情報 // 1: 大雑把なデバッグログ @@ -82,19 +123,6 @@ class Object : public IMonitor putlogn("%s", msgf().c_str()); } } - - // デバイス名(デバッグ表示用) - // XXX オブジェクトなのにデバイス名とは一体... - std::string devname {}; - - // - // モニター - // - - // モニター更新 (派生クラス側で用意) - void MonitorUpdate(TextScreen&) override { } - nnSize GetMonitorSize() override { return monitor_size; } - nnSize monitor_size {}; }; // 全オブジェクトのリスト