--- nono/lib/object.cpp 2026/04/29 17:05:08 1.1.1.8 +++ nono/lib/object.cpp 2026/04/29 17:05:15 1.1.1.9 @@ -7,7 +7,6 @@ // // 基本オブジェクト // - // オブジェクトはログ出力機能 (とそのための自身のオブジェクト名) を持つ。 #include "object.h" @@ -15,23 +14,31 @@ #include "mainapp.h" // コンストラクタ -Object::Object(const std::string& objname_) +Object::Object(int objid_) { - // オブジェクト名(ログ表示名)を設定。 - objname = objname_; + objid = objid_; + assertmsg(OBJ_NONE <= objid && objid < idname.size(), + "objid=%d, size=%zd", objid, idname.size()); + + // オブジェクト名(ログ表示名)は ID から引く。 + objname = idname[objid]; // コンストラクタで指定した場合はエイリアスにも登録しておく。 - AddAlias(objname_); + // ただし OBJ_NONE ならログを出すことも想定していないはずなので + // エイリアスも追加しない。 + if (objid != OBJ_NONE) { + AddAlias(objname); + } // 自分自身をリストに繋ぐ - gMainApp.AddObject(this); + gMainApp.RegistObject(this); } // デストラクタ Object::~Object() { // 自分自身をリストから削除する - gMainApp.DeleteObject(this); + gMainApp.UnregistObject(this); } // ログレベルを設定する。 @@ -73,3 +80,27 @@ Object::WriteLog(const char *buf) const { logger->Write(buf); } + +// このオブジェクトの ID を文字列にして返す +const char * +Object::GetIdStr() const +{ + return GetIdStr(GetId()); +} + +// 指定のオブジェクト ID を文字列にして返す +/*static*/ const char * +Object::GetIdStr(int target_id) +{ + if (OBJ_NONE < target_id && target_id < idname.size()) { + return idname[target_id]; + } + return "unknownID?"; +} + +// 指定のオブジェクト ID を持つオブジェクトを返す。 +/*static*/ Object * +Object::GetObject(int target_id) +{ + return gMainApp.GetObject(target_id); +}