--- nono/vm/device.h 2026/04/29 17:05:18 1.1.1.13 +++ nono/vm/device.h 2026/04/29 17:05:21 1.1.1.14 @@ -43,13 +43,18 @@ class Device : public Object // メンバ変数の初期値代入などを行う。失敗するケースは考慮していない。 // gConfig の内部変数の追加はここ(か2.の動的コンストラクション)で // 行うこと。この時点ですでに gConfig の設定内容の参照は可能だが、 - // エラーが出るものはここではなく Init() で処理すること。 + // エラーが出るものはここではなく Create() か Init() で処理すること。 // putmsg() は使えない。 // // 2. Create() ... 動的コンストラクション // 必要なら設定ファイルによって可変なオブジェクトのコンストラクトを行う。 - // 例えば SCSI ドライブなどが該当する。ここでも gConfig の参照および - // 内部変数の登録は可能、putmsg() は使えない。 + // 例えば SCSI ドライブなどが該当する。Create() で作成したインスタンスの + // Create() もこのフェーズで呼ばれる。 + // ここでも gConfig の参照および内部変数の登録は可能、エラー終了する + // 可能性のあるものも処理できる。 + // Init() とは異なりこちらは、継承クラスの Create() が Device::Create() + // を呼ぶ必要はない + // putmsg() は使えない。 // // 3. parse_logopt() ... -L オプションの処理 // この時点でログの割り当てを受ける Object 由来のオブジェクトはすべて @@ -68,7 +73,7 @@ class Device : public Object // いるため、派生クラスで Init() を用意した場合は必ず inherited::Init() // を呼ぶこと。 // gConfig の設定項目のうち内容によってエラー終了する可能性があるものは - // ここで処理する。 + // ここまでに処理する。 // Object 同士は完全に相互アクセス可能だが、Init() 自身の依存関係 // (A::Init() で設定した値を B::Init() が参照する必要があるケース) に // ついては vm.cpp (などコンテナデバイス) 内のコンストラクタの順序で