しらたまのコミッタ日記

2007-03-29

[][]DLLなどの型について 17:56

いろいろコミットしました。

その中に、コミットメッセージだけでは理解しづらいものがあるのでここで解説。

DLL関数などの型の内部置換方法を変更。

今回のコミットDLLの型の置換を、完全一致固定から部分一致の繰り返しに変更しました。

これによりポインタが扱いやすくなりました。

例えば「int *a」などは「PLONG a」などに置き換えられて、引数を参照渡しにしておけば、ちゃんと引数を書き換えて返してくれます。

しかし、これには副作用もあります。

置き換えた型を見てもらえばわかるように、先頭の「P」はポインタであることを示し、それをのぞいた文字列で型を表します。

その型の判断は「P」がつかないときと同じ判断方法で行います。

つまり、「PH*」などという型は「PDWORD」に置き換えられます。

これによって、例えばなでしこ変数型である「PHiValue」などは「PDWORD」に置き換えられてしまい、そのまま書いただけでは誤作動を起こしてしまいます。

回避策としては「P」の後ろに「_」とか適当な文字を挟んでおけばよいです。

 

私はこの副作用を含めても、この変更を適用した方が便利だと思ったんですがどうなんでしょうねぇ。

 

もしここ見ておられる方で、この機能が適用されたdnakoを使ってみたいと思われる方は、dnako.dllを置いておきますのでテストをしてみて下さい。

そして、もし不都合がありましたらご報告下さい。リポジトリロールバックなど何らかの対策をとります。

※元のdnako.dllリネームするなどして、決して上書きしないようご注意下さい。

http://white-ball.hp.infoseek.co.jp/dnako_debug.zip

200612
200701020304050708101112
20080103040506070912
200904
20100204
201104