mips64-elf-ldの続き

本家MLでNick曰く(超訳),

PHDRSがないからだねハハン.

納得できねーよ*1
…でも仕様なら仕方あるまい.言われたとおりldscriptを修正しました.
…500KBだったはずのバイナリが3GBになりました.納得できねーよ
試しに3GBバイナリをreadelf に与えたら,コレ変だとか言って音を上げているし.ちっとも納得できねー.
バグ連鎖の荒波に沈みそうな予感がしますよこれは.
まあMIPS64クロスチェインに,300行のldscriptを食わした奴なんてのは他にはいないだろうからなぁ.仕方がないのか?(反語)

*1:さすがにDanielも,それでいいのか? と言ってくれているらしい

MBSCustomPageでprojectTypeを知りたい

前のページで選択したプロジェクトタイプに応じて,ウイザードの挙動を変えたいということは,よくある(よね?)
ページそのものの有効/無効は,ここに書くまでもない.特定のプロジェクトタイプの時だけ,コンボボックスを変えたい.
つまり,後のページで,CProjectPlatformPage の設定内容を知りたい,ということ.

ここで,CProjectPlatformPageと書いてしまったから,優秀な人ははもう解決できるかもしれない.私は優秀ではないので,
ここにメモをしておく.

最も無難そうな(後でコンパイルエラー無しのバグに悩まされなさそうな)解は,以下の通り.

IWizardPage page = MBSCustomPageManager.getPageData(CProjectPlatformPage.PAGE_ID).getWizardPage();
IProjectType type = ((CProjectPlatformPage)page).getSelectedProjectType();

もちろん,pageがCProjectPlatformPageのインヘリタンスかどうか,きっちり調べておくべき.

もうちょっとMBSCustomPageManagerの中身探ると,以下のような解も見えてくる.

MBSCustomPageManager.getPageProperty(CProjectPlatformPage.PAGE_ID, CProjectPlatformPage.PROJECT_TYPE);

こちらのほうが見た目がシンプルで個人的には好き.しかし,将来に渡って安全性が確保されるだろうか.CDTは前回のアップデートでプラグイン開発者を悶絶させるような非互換修正を山盛りでやってくれた前科があるので,一抹の不安は残る.

変更を知るには?

で,変更されたことを知るためのlistenerクラスはあるか? …私が調べた範囲では,残念ながら,ないらしい.PaintListenerをフックするなどad hocな手段で逃げるのが解として考えられる.変更を知りたい要求はあると思うので,そのうちaddPropertyChangeListener()とかが,どこかに付くのかもしれない.もしくは私が無知なだけで,既にどこかに美しい解を提供する仕組みがあるのかもしれない.