--- nono/vm/vm.h 2026/04/29 17:05:13 1.1.1.10 +++ nono/vm/vm.h 2026/04/29 17:05:16 1.1.1.11 @@ -12,16 +12,11 @@ #include "device.h" -// ヘッダの依存関係を減らすための細工。 -// o pNAME はメンバ変数としてヘッダで宣言してあるが、vm*.h で各デバイスヘッダ -// を include したくないので、派生型ではなく Device* の unique_ptr にしたい。 -// o gNAME は各デバイスヘッダが持つ派生型のグローバルポインタ。 -// ベース型ではなく派生型で参照したい。また使いたい人が使いたいヘッダだけを -// include すれば済むよう、vm*.h とは切り離したい。 +// デバイスを作成して代入するマクロ。 +// …だったが今となってはあまり意味がなくなっている。 #define NEWDV(NAME, NEW_CTOR) do { \ __CONCAT(p,NAME).reset(NEW_CTOR); \ - __CONCAT(g,NAME) = \ - (decltype(__CONCAT(g,NAME)))(__CONCAT(p,NAME).get()); \ + assert(__CONCAT(p,NAME)); \ } while (0) class VM @@ -57,18 +52,19 @@ class VM // ブートページを切り替える (内部用) virtual void SwitchBootPage(Device *parent, bool isrom); - std::unique_ptr pBusErr {}; - std::unique_ptr pDebugger {}; - std::unique_ptr pInterrupt {}; - std::unique_ptr pKeyboard {}; - std::unique_ptr pMPU {}; - std::unique_ptr pNMI {}; - std::unique_ptr pPower {}; - std::unique_ptr pRenderer {}; - std::unique_ptr pRAM {}; - std::unique_ptr pScheduler {}; - std::unique_ptr pSignalThread {}; - std::unique_ptr pSync {}; + std::unique_ptr pBusErr {}; + std::unique_ptr pDebugger {}; + std::unique_ptr pInterrupt {}; + std::unique_ptr pKeyboard {}; + std::unique_ptr pMainbus {}; + std::unique_ptr pMainRAM {}; + std::unique_ptr pMPU {}; + std::unique_ptr pNMI {}; + std::unique_ptr pPower {}; + std::unique_ptr pRenderer {}; + std::unique_ptr pScheduler {}; + std::unique_ptr pSignalThread {}; + std::unique_ptr pSyncer {}; }; extern VM *gVM;