C++

        拡張 Tcl の中の,tcl++.h を取り出してみると良いでしょう.これ
は,最初に Parag Patel によって開発された版を元にしています.これは,
C++ で Tcl インタプリタをオブジェクトとして生成する為の,Tcl インタプ
リタクラスを定義しています.

また,パッチ ftp://harbor.ecn.purdue.edu/pub/tcl/distrib/tk3.2forC++.patch は,tk 3.2 の main.c や,幾つかのルーチンにパッチを当て,C++ コンパイ ラでのコンパイルを可能にします.このコードに関しては,Ken Yap に感謝します.

Mark Diekhans と Karl Lehenbauer は,これを使って,拡張 Tcl の ハンドル機能と組合せ,C++ クラスまわりの Tcl コマンドを作成しました.

この Tcl ハンドル機能は,Tcl コードからのテキストハンドルで参 照できる,表項目管理の方法を提供します.これは,一つのコマンドでデータ 構造を生成する必要のあるアプリケーションに,特定のデータ構造への参照返 し(例えば,ポインタ) や,他のコマンドからのデータ構造へのアクセスを可 能にします.例としては,ファイルハンドルがあげられます.

ハンドルのテーブルは,Tcl からアクセスされるクラスのインスタン スのポインタを格納しています.例えば,クラスを `foo_cl' として,コマン ド "new" を,このインスタンスを生成し,インスタンスへの Tcl ハンドルを 返すコマンドとして定義します.そうすると,ハンドルをメンバ関数からアク セス可能とすることが出来ます.ハンドルは,実際には `this' ポインタです.

例えば:

     set obj [foo_cl::new]
     foo_cl::baz $obj "Hello world"
     foo_cl::delete $obj

これは,オブジェクト指向の全てではありませんが,非常に便利ではあります.