DOM Element Proxy
めも。
VM越しにプログラム構造を使うときにはどう考えてもProxyが必要。ってのは当然として、実はもっと身近な場面でProxyが必要な感じ。
/project1 /project2
IrenkaのDOMはルートパッケージを基とするツリー上の構造で、親子は双方向リンクで接続されている。一方で、project[12]は共に異なるルートパッケージを有する(クラスパスの衝突を防ぐため)ので、project2のルートフォルダからproject1の要素を参照する場合、その要素はディープコピーとしてproject2のツリー上に配置する必要がある。
これはproject1の要素のProxyを作ってproject2に配置しないとひどいことになりそうな予感。参照プロジェクトに触る際には名前参照可能な要素+αくらいしか触れないはずなので、比較的少ない作りこみで何とかなるかもしれぬ。思考実験は死ぬほど必要な感じですが。
Irenkaが動くようになり始めてきたのでたぶんIrenkaを使ってProxy作れるけど、なんかまだ怪しい部分がある感じ。この問題は来週頭くらいまでにインスピレーションが来ればいいなぁ。
個人的なメモ:
- CtXxxSlaveはProxy使わない
- ただし、CtXxxSlave#setMasterにはProxyのまま渡す。
- 意味的にそちらの方が正しい
- Synthesizer -> ProxySynthesizer?
- 5人日じゃ済まない
- getParentはスイッチャ渡しとく?
- 微妙
- Proxyの先がdeactivateしたとき
- activate失敗時は?
- CtMethod@Proxy#getBody()
- これは仕様として明記
- CtField@Proxy#getInitializer()
- たぶんCtMethodより根が深い。定数解決とかはそれなりに