Next: , Previous: , Up: C Interface   [Contents][Index]


6.28.9 Automated interface generation using SWIG

SWIG (Simple Wrapper Interface Generator)は、 多くのプログラミング言語でC言語インターフェイスを作成するために使用されています。 Forth モジュールで拡張された SWIG バージョンは、 github にあります。

6.28.9.1 Basic operation

C言語のヘッダーはパースされ、 前述のC言語インターフェイス関数を使用する Forth のソース・コードに変換されます。

6.28.9.2 Detailed operation:

  1. ターゲットを選択します。 この例では example.h を使用しています。
  2. ヘッダー用のインターフェイス・ファイルを作成します。 これは、 オプションと、スイッチと、変数の定義を、 渡すために使用できます。 最も単純なケースでは、example.h のすべてを変換(translate)するよう指示するだけです:
    %module example
    %insert("include")
    {
        #include "example.h"
    }
    %include "example.h"
    
  3. SWIG を使用して .fsi-c ファイルを作成します。
    swig -forth -stackcomments -use-structs -enumcomments -o example-fsi.c example.i
    FSI は「Forth Source Independent」の略で、 C言語コンパイラを備えた任意のホストに転送できることを意味します。 この時点以降、 SWIG は必要ありません。
  4. ターゲット・マシンで .fsi-c ファイルを .fsx にコンパイルします(x は executable(実行可能)の意味です)
    gcc -o example.fsx example-fsi.c
    コンパイルすると、 すべての定数(constant)がターゲット上の値(value)に解決されます。
  5. 最後のステップは、 実行可能ファイルを実行し、 その出力を Forth のソース・ファイルである .fs ファイルにキャプチャすることです。
    ./example.fsx -gforth > example.fs
    これで、 このコードはターゲット・プラットフォームで使用できるようになりました。

6.28.9.3 Examples

いくつかの例: SWIG’s Forth Example section

たくさんのインターフェイス・ファイルがこちらにあります: Forth Posix C-InterfaceForth C-Interface Modules

Forth C-Interface Module repository への貢献はいつでも歓迎です!