はじめてのHSP3プラグイン

今日のこんぱいらはNFAと文字列の照合を作って終わり。自分で入力した正規表現がちゃんとマッチして結果表示された時はちょっと感動しました。

で、そのあとはHSP3のα版をいじってました。HSP3からはプラグインの仕様が大幅に変わるということで、その感じをつかむ為にとりあえずhspsockAを移植してみることに。

おにたまさんは移植の手間がかからないようにプラグイン向けマクロをいろいろ定義したファイルを提供してくれているのですが、グローバル変数のオンパレードで気持ちが悪いので、結局自分ですべて移植することにしました。といっても完全に3.0Nativeにするとコードが長ったらしくなってしまうので、2.x系のコードを生かしつつ3.0の処理を行えるようなラッパークラスを作成。それを使ってhspsockAのソースをちょこちょこっと書き換えれば3.0仕様プラグインの完成!

…とは言っても、その「ちょこちょこっと」がちょこちょこっとでは済みませんでした。HSP3ではすべての命令呼び出しに対して同じコールバック関数が呼び出され、パラメータによって各命令に分岐するのですが、この分岐をswitch~case文で書いたのでコピペの単調作業になってしまいました。本当は関数ポインタを使えばもう少しエレガント書けるのだけど、それだと今度は各命令にパラメータの解釈ルーチンを書かなければならないのでむしろこちらのほうが面倒。HSPEXINFOを使っていないプラグインは移植に手間がかかりそうです。

そんなことがあったけど、とりあえずhspsockA for HSP3、できました。refstrがまだ実装されていなかったので一部命令は動作確認できなかったけど、とりあえず付属サンプルのCLIENT2.asは動いたので大丈夫じゃないでしょうか。次のバージョンアップではrefstrをぜひぜひ。