読者です 読者をやめる 読者になる 読者になる

Gauche OLE 0.6

ここしばらく取り組んでいる Gauche で OLE オートメーションを扱うライブラリについてですが、いくつか機能を追加したものをリリースします。

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

追加内容をまとめます。

コレクション型の分離

インターフェイス IEnumVARIANT を持つ型が Gauche では <ole-collection> に見えるようになりました。 <ole-collection> は <ole> と <collection> を継承した型です。

型についての設計方針は迷いました。 Gauche で都合のよい型階層を設計して OLE の世界での型を対応付けるということになると、私の恣意が強く現れてしまうのではないか、変に偏った構造になってしまわないかという恐れがあります。 かといって、 OLE の世界での型を Gauche 上に全て再現するというのは過剰に思われます。 よって、オートメーションオブジェクトの型は Gauche の世界では一律とすることを原則として、コレクションだけは特に有用なものと認めて例外的に専用の型を与えることにした次第です。

コールバックが可能に

Gauche の手続きをコールバック関数として渡すことが可能になりました。

http 通信を例にあげるとこのような要領になります。

#!/usr/bin/env gosh
(use win.ole)

(define request (make-ole "Microsoft.XMLHTTP"))

(define (checkstatus)
  (when (and (= 4 (~ request 'readystate))
             (= 200 (~ request 'status)))
    (display (~ request 'responseText))))

(set! (~ request 'onreadystatechange) checkstatus)
(request 'open "GET" "http://www.example.com/" #t)
(request 'send '())

JavaScript でよく見られる非同期 I/O の構造ですね。 これで一気に出来ることが増えたと思います。

型変換

いくつかの基本型の変換を追加しました。

Document ID: 64fe227b1396e044e2255bc377f0580d