sakura icon indicating copy to clipboard operation
sakura copied to clipboard

PPAのコンテキストをクラス外から設定できる仕組みを作りたい

Open berryzplus opened this issue 2 years ago • 1 comments

やりたいこと

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

berryzplus avatar Mar 19 '22 07:03 berryzplus

PPAの実行コンテキストを外から指定できる仕組みを作ったとして、 仕組みを活用するには CEditView を生成できる仕組みが必要。 https://github.com/sakura-editor/sakura/blob/b5d590011f05e93ec423f5d3fe03dcbae1849eef/sakura_core/macro/CPPA.h#L275-L278

現状、CEditViewをインスタンス化するにはCEditDoc をインスタンス化していることが必要で、 CEditDoc をインスタンス化するには共有メモリの初期化化が完了している必要がある。

berryzplus avatar Mar 27 '22 13:03 berryzplus