Gauche OLE 0.8

Gauche-OLE を更新しました。

http://saito.s4.xrea.com/software/Gauche-OLE-0.8.tar.gz

以前の記事で取り上げた IEcanvas を操作しようとするときの問題を解消することが主な目的でしたが、そこから派生していくつかの仕様変更があります。 過去の版と非互換になっている箇所もあることに注意が必要です。 主な変更を以下に挙げますが、変更にあたって結果的に生じた小さな違いは同梱のサンプルなどを参考にしてください。

プロパティ参照とメソッド呼出しの区別

従来は曖昧に解決していたプロパティ参照とメソッド呼出しの区別を明確にしました。 今回からはメソッド呼出しの手続きや構文によってプロパティ参照は出来ません。 プロパティ参照をするには ole-ref 手続き、またはそれに展開されるマクロやメソッドを陽に用いてください。

修正中に気付いたのですが、引数を取るプロパティが存在し、他の言語では一見してメソッド呼出しのように見えることがあります。 他の言語から Gauche へ移植する場合などに注意が必要です。

例えばエクセルを VBA で操作するとき

Worksheets(1).Cells(1, 1).Value = 24

というように記述することがありますが、このときの Cells はメソッドではなくプロパティです。

メソッドチェイン構文

従来はプロパティ参照とメソッド呼出しの区別をしないことで、一種類の構文でメソッドチェインが出来ていましたが、プロパティ参照とメソッド呼出しのそれぞれのために構文を用意しました。 プロパティ参照に ? を、メソッド呼出しに ! を使えます。

例えば JavaScript

obj.hoge.fuga(2).piyo();

と書いているものは

(? obj 'hoge ! 'huga 2 ! 'piyo)

と書くことが出来ます。

メソッドチェインが必要なくとも ole-ref や ole-call-method の短縮記法として使うことも出来ます。

イテレーション

コレクションオブジェクトのイテレーションのために IEnumVARIANT インターフェイスを使うように変更しました。 ものすごくおおざっぱに説明すると COM の世界におけるイテレータのようなものです。 今のところライブラリ内部で使っているだけなのでユーザは意識する必要はあまりないでしょう。

ドキュメント

簡単なものですが、説明を書いて同梱しておきました。 あまり詳しい説明ではないですが、細かいことは同梱している利用例の方が参考になるでしょう。

Document ID: 67913945f6d2aa792a44143700e262b3