sakura
sakura copied to clipboard
PPAのコンテキストをクラス外から設定できる仕組みを作りたい
やりたいこと
PPAのコンテキストをクラス外から設定できる仕組みを作りたい
経緯
CPPA::stdError
はプライベートなグローバル変数CPPA::m_CurInstance
に依存します。https://github.com/sakura-editor/sakura/blob/e67c8ce03f808ae940689373a82e01d6bc066043/sakura_core/macro/CPPA.cpp#L333-L338
CPPA::m_CurInstance
はCPPAの実行コンテキストを保持する構造体です。 プライベートなグローバル変数ですので、クラス外から値を変更することはできません。CPPA::m_CurInstance
の初期値はnullptr
なので、上記コードをテストコードから呼び出すとAV例外が発生します。テストしたいコードは339行目以降なので、
CPPA::stdError
をテストするにはCPPA::m_CurInstance
に有効なPPAコンテキストを設定するために仕組みが必須になります。
Originally posted by @berryzplus in https://github.com/sakura-editor/sakura/issues/1811#issuecomment-1072959266
PPAの実行コンテキストを外から指定できる仕組みを作ったとして、
仕組みを活用するには CEditView
を生成できる仕組みが必要。
https://github.com/sakura-editor/sakura/blob/b5d590011f05e93ec423f5d3fe03dcbae1849eef/sakura_core/macro/CPPA.h#L275-L278
現状、CEditView
をインスタンス化するにはCEditDoc
をインスタンス化していることが必要で、
CEditDoc
をインスタンス化するには共有メモリの初期化化が完了している必要がある。