やばいといっても仕事の話なんで、たいしたことないと言えばそうなんですが。
ruby/dlをいじるのはやめて、再実装してみたり。
いや、さすがに標準添付ライブラリに入ってるものをいじってもなんだかな、と思って。 なかなかいじりにくいソースだし、__stdcallに対応するためだけにひっかき回しても相当上手いことやらない限りは標準に取り入れられてもらえそうにないしね。
で、ldl。light dlのつもりだったんだけど、実際は遅い。はず。 ソースがLight。手抜きなだけ。
使い方もかなり特殊でいんちき臭いけど、とりあえず関数呼び出しはできた。Macでしか試してないから__stdcallはまだだけど、コードはほぼ同じなのでいけるはず。
今はコールバック実装が面倒で放置中。いや、放置というよりは忙しくて手が出せない状況。
いや、何が怪しいってさ。
引数は全部文字列。packした物を渡すだけ。
ポインタもpack。pとかPで。いや、こんなpackテンプレート初めて使ったよ。
ldl内部では、渡されたものを全部longにコピーして渡すだけ。longよりでかい物は渡せない気がするけど、まあ、ポインタで渡してくれ。あとは知らん。
戻り値も同じ。常にlongを返されるものとして処理して、文字列にコピー。 unpackして使ってくれと。 voidだったら変な値が入るくらいか。
でも、これちょっとまずいかもなぁ。 WindowsとMacでは戻り値がレジスタに入るのを確認したからいいけど、戻り値をスタックに積むようなプラットフォームでは動かないよな。
そんなプラットフォーム、あるのか知らんし、あったとしてrubyが動くのかどうかもわからないけど、わからないってことはある可能性があるってことだし。
まあ、いいや。そんなプラットフォームで動かすつもりは近々にはないし。 誰かに文句言われてからでも遅くはあるまい。文句言われなきゃ別にいいし。
とりあえず、問題はwx-cがちゃんと動くかどうか。まあ、多分大丈夫でしょう。
もういっこ問題は使うのがすげー面倒なこと。pack/unpackの嵐ですよ。
テンポラリなオブジェクト大量発生なのはいつものことだから良いとして*1、やはり書くのが面倒だ。
これの対処はもう考えてあって、スクリプト側でラップしてやればいいというもの。 どうしてもRubyで書けない部分だけCで書いてあとはRubyで楽して書こうぜ。
Ruby/ldlはさっさと作ってRuby/wx、Ridgeと早く進めたいなぁ。
*1 いいのか、俺?
放置中。
いや、放置してるわけじゃないんですけどね*1。
本家の方もリリースは2.0で止まってるしな。
でも何もしてないわけじゃない。新AutoREALMは結局C++とwxWidgetsで始まったみたいだ。
すでにCVSには断片が見え始めている。断片だけど。
そのうちビルドしてみよう。MakefileにはMac用の記述はないけど、まだ小さいしそれほど難しくはないだろう。
*1 ドキュメント翻訳は放置だが。ごめんなさい!
あー。
wxWidgetsの本家でつい先月から始まったwxPalm実装してみないかコンテスト。PalmOS6のシミュレータでいち早くサンプルのminimalを動かした奴にTungsten T5プレゼント!という物だった。
だった。
つーか、動くまで2週間か。
最初見た時は本気かと思ったが、こんなに早くできるとは。
まあ、中身を見るとなかなか苦労してるようだが、それでも良くできてる。
ところで、このコンテスト自体、PalmOS6になったら今までよりちょっとは楽にプログラム作れるようになるぜ!というわけで始めたみたいだが、そもそもPalmOS6になると楽になるっていう話はどこから出てきたんだろう…。
APIのリファレンスを見ても全然変わっちゃいないし、wxPalmのソースを見てもMenu周りでかなり苦労したあとが見られる。長々とコメント入ってるしな。
はっきり言って、OS5までと何処が違うんだかさっぱりわからん。データベースの64k制限が無いとかなのかな?*1
しかもSimulatorはARMのエミュレータ内蔵じゃないからx86用にコンパイルしないと動きやしねぇ。Eclipseベースの統合開発環境はあるとはいえ、エミュレータすらないんじゃねぇ…。
というか、とにかくPalmOS6な実機が無いのが問題か。 ソニーも変なClie出してないでOS6なマシンが欲しいよ。 TH-55あたりでどんなマシンが売れるのか分かったと思ったのになぁ。
*1 本当に無いんだっけ?