--- nono/host/driver.h 2026/04/29 17:05:11 1.1.1.1 +++ nono/host/driver.h 2026/04/29 17:05:56 1.1.1.6 @@ -22,11 +22,11 @@ class Driver : public Object static const int NODATA = -1; protected: - Driver(HostDevice *hostdev_, const char *drivername_); + Driver(HostDevice *hostdev_, const std::string& drivername_); public: - virtual ~Driver() override; + ~Driver() override; - virtual bool InitDriver(); + virtual bool InitDriver(bool startup = true); // ドライバ固有の Dispatch。 udata を返す。 // 必要に応じて udata を変更しても良い。 @@ -34,17 +34,29 @@ class Driver : public Object virtual int Dispatch(int udata); // モニタのうちドライバ依存部分の情報を書き出す。 - // screen のうち (0から数えて) 1行目と2行目のみがドライバ依存部分なので + // screen のうち y行目から2行のみがドライバ依存部分なので // ここだけ書き出すこと。不要なら書き出さなくてよい。Clear() しないこと。 - virtual void MonitorUpdateMD(TextScreen& screen); + virtual void MonitorUpdateMD(TextScreen& screen, int y); // ドライバ名を取得。 - const char *GetDriverName() const { return drivername; } + const std::string& GetDriverName() const { return drivername; } + + // 親ホストデバイス(基本クラス)を取得。 + HostDevice *GetHostDev() const { return hostdev; } + + // InitDriver() 中の(主に最後の)エラーメッセージ。 + // 各ドライバはエラーが発生しても各自で warnx による表示は基本的にせず、 + // ここにエラーメッセージをセットする。必要になった時点で HostDevice が + // 最後の一つを warnx() で表示する。 + // なお、おそらくそれだけでは大抵何も分からないのでこれとは別に + // ログレベル 1 で putmsg() は充実させておくこと。 + std::string errmsg {}; protected: // 親ホストデバイス HostDevice *hostdev {}; - // ドライバ名 ("None" とか) - const char *drivername {}; + // ドライバ名 ("none" とか)。 + // 設定ファイルに合わせてすべて小文字。 + std::string drivername {}; };