--- nono/lib/object.cpp 2026/04/29 17:04:49 1.1.1.6 +++ nono/lib/object.cpp 2026/04/29 17:04:54 1.1.1.7 @@ -12,11 +12,18 @@ // 全オブジェクトのリスト std::vector gObjects; +// +// オブジェクトクラス +// + // コンストラクタ -Object::Object() +Object::Object(const std::string& objname_) { - logname = "?"; - devname = "?"; + // オブジェクト名(ログ表示名)を設定。 + objname = objname_; + + // コンストラクタで指定した場合はエイリアスにも登録しておく。 + AddAlias(objname_); // 自分自身をリストに繋ぐ gObjects.push_back(this); @@ -25,6 +32,14 @@ Object::Object() // デストラクタ Object::~Object() { + // 自分自身をリストから削除する + // XXX マルチスレッドな状況からは呼ばれないはず? + for (auto it = gObjects.begin(); it != gObjects.end(); ++it) { + if (*it == this) { + gObjects.erase(it); + break; + } + } } // メッセージ表示 @@ -36,8 +51,8 @@ Object::putmsgn(const char *fmt, ...) co int len; va_list ap; - // デバイス名だけ生表示されても分かりづらいので括弧でもつけておく - len = snprintf(buf, sizeof(buf), "(%s) ", devname.c_str()); + // 名前だけ生表示されても分かりづらいので括弧でもつけておく + len = snprintf(buf, sizeof(buf), "(%s) ", GetName().c_str()); va_start(ap, fmt); vsnprintf(buf + len, sizeof(buf) - len, fmt, ap); va_end(ap); @@ -63,7 +78,7 @@ Object::putlogn(const char *fmt, ...) co (int)(vt % 1000)); len += snprintf(buf + len, sizeof(buf) - len, "%08x %s ", - gMPU->GetPPC(), devname.c_str()); + gMPU->GetPPC(), GetName().c_str()); va_start(ap, fmt); vsnprintf(buf + len, sizeof(buf) - len, fmt, ap);