[Top] | [Contents] | [Index] | [ ? ] |
本ドキュメントはc-wrapperのリファレンスマニュアルです。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
c-wrapper
とは、CのライブラリをGaucheから使えるようにするためのモジュールです。
1.1 Load a shared library | ||
1.2 Load a header file | ||
1.3 Classes and functions about C types |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
共有ライブラリを読み込みます。 file-or-list でリストを渡すと複数のライブラリが読み込まれます。 また拡張子を省略した場合、環境に応じた拡張子 (.so や .dylib など ) が付加されます。
キーワード引数には以下のものを与えることができます。
:option option-string
ldに与えるオプションのような形式で共有ライブラリや読み込みパスの指定を行います。現状使えるのは以下のオプションです。
-llibrary
共有ライブラリ library を読み込みます。例えば、-lc のように指定すると libc が読み込まれます。
-Ldir
共有ライブラリのサーチリストにディレクトリ dir を追加します。
(c-load-library '() :option option-string) と同じです。この関数は pkg-config などのようなリンカのフラグを返すコマンドと組み合わせて使うことを想定しています。
(c-ld (process-output->string "pkg-config Wand --libs")) |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
指定されたヘッダファイルを読み込み、関数・グローバル変数・定数・型定義・マクロをカレントモジュールに定義します。
keyword 引数には以下のものを指定することができます。
:include-dirs
インクルードパスを指定します。文字列もしくは文字列のリストが指定可能です。
:option
Cプリプロセッサに渡すオプションを指定します。文字列が指定可能です。
:import
ヘッダファイルから読み込むシンボルを指定します。
引数として、シンボル、文字列、正規表現、手続きと、それらのリストが指定可能です。
手続きが渡された場合は、シンボルが見つかるたびにヘッダファイルのパス名とシンボル名を引数として、その手続きが呼び出されます。
手続きが#f
を返した場合そのシンボルは無視され、それ以外の値の場合にシンボルが定義されます。
:export?
定義したシンボルをexport
するかどうかを指定します。
#t
の場合は定義したシンボルに対し自動的にexport
が実行されます。#f
の場合は何もしません。
:compiled-lib
cwcompileコマンドにより作成されるパーズ済みの共有ライブラリの名前を指定します。 ここで指定された共有ライブラリが存在する場合、ヘッダファイルをパーズする代わりにその共有ライブラリを読み込みます。共有ライブラリが存在しない場合は、ヘッダファイルのパーズが行われます。
ヘッダファイル読み込み時に、以下の情報を収集し関数や変数などを定義していきます。
関数名と同名のシンボルで関数が定義されます。なおこの関数は引数に対してcast
を戻り値に対してscm-cast
を適用します。
変数名と同名のシンボルで外部変数を参照するオブジェクトが定義されます。
enum
定数名と同名のシンボルで定数が定義されます。
struct
構造体のクラスを定義します。このクラスは(c-struct tagname)
で参照することができます。
union
共用体のクラスを定義します。このクラスは(c-union tagname)
で参照することができます。
typedef
<typename>
というシンボルでCの型に対応するクラスを定義します。
マクロの内容が式であり、使用されている識別子がすべて宣言済みであり、かつ副作用を及ぼす式でない場合に、マクロ名と同名のシンボルで値が定義されます。なお、C言語でのマクロとは意味が異なり、この値はヘッダファイル読み込み時点での値であり、マクロ使用時点での値ではありません。
マクロの内容が式もしくは文であり使用されている識別子がすべて宣言済みの場合にのみ、マクロ名と同名のシンボルでマクロが定義されます。
指定されたヘッダファイルとライブラリを読み込み、関数・グローバル変数・定数・型定義・マクロをカレントモジュールに定義します。
c-load-library
とc-include
を一度に行うものです。
keyword 引数には以下のものを指定することができます。
:cflags
:cppflags
:ldflags
:libs
ヘッダファイルのパーズとライブラリのロードで使うための各種フラグを指定します。:cppflags
はプリプロセッサに渡され、:ldflags
, :libs
はライブラリのロードで使用されます。これらのフラグはcwcompileでも使われます。
:cflags-cmd
:cppflags-cmd
:ldflags-cmd
:libs-cmd
各種フラグを取得するためのコマンドを指定します。例えば、gtkのヘッダファイルをパーズするときにpkg-configを使って以下のようにオプションを指定することができます。
(c-load "gtk/gtk/h" :cppflags-cmd "pkg-config gtk+-2.0 --cflags-only-I" :cflags-cmd "pkg-config gtk+-2.0 --cflags-only-other" :libs-cmd "pkg-config gtk+-2.0 --libs" :compiled-lib "gtklib") |
:import
ヘッダファイルから読み込むシンボルを指定します。
引数として、シンボル、文字列、正規表現、手続きと、それらのリストが指定可能です。
手続きが渡された場合は、シンボルが見つかるたびにヘッダファイルのパス名とシンボル名を引数として、その手続きが呼び出されます。
手続きが#f
を返した場合そのシンボルは無視され、それ以外の値の場合にシンボルが定義されます。
:export?
定義したシンボルをexport
するかどうかを指定します。
#t
の場合は定義したシンボルに対し自動的にexport
が実行されます。#f
の場合は何もしません。
:compiled-lib
cwcompileコマンドにより作成されるパーズ済みの共有ライブラリの名前を指定します。 ここで指定された共有ライブラリが存在する場合、ヘッダファイルをパーズする代わりにその共有ライブラリを読み込みます。共有ライブラリが存在しない場合は、ヘッダファイルのパーズが行われます。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Cの型に対応したクラスの基底クラスです。
Cの型に対応したクラスのメタクラスです。Cの型のクラスはすべて <c-type-meta>
のインスタンスとなります。
C言語の算術型 (Arithmetic types) に対応するクラスです。 make
を使ってインスタンスを作成することができます。
C言語の算術型 (Arithmetic types) に対応するクラスのメタクラスです。
obj の値を返します。
obj に値 value を設定します。
C言語の void 型に対応するクラスです。
C言語のポインタ型に対応する抽象クラスです。実際にポインタ型を使用する場合は、後述する ptr
を使用して <c-ptr>
の具象クラスを作成する必要があります。
class で指定された型のポインタ型に対応するクラスを生成します。このクラスは <c-ptr>
のサブクラスとなります。make
を使って作成したクラスのインスタンスを作成することができます。
obj のポインタオブジェクトを返します。
C言語の配列に対応する抽象クラスです。実際に配列を使用する場合は、後述する c-array
を使用して、<c-array>
の具象クラスを作成する必要があります。
また <c-array>
は <sequence>
を継承しており、シーケンスフレームワーク (gauche.sequence
モジュール) で定義されている操作を使用することができます。
class 型で大きさ size の配列クラスを生成します。このクラスは <c-array>
のサブクラスとなります。make
を使って作成したクラスのインスタンスを作成することができます。
C言語の構造体に対応する抽象クラスです。
C言語の共用体に対応する抽象クラスです。
tagnameという名前の構造体クラスを返します。
tagnameという名前の共用体クラスを返します。
構造体もしくは共用体のメンバ member の値を返します。メンバが算術型 (Arithmetic types) の場合は <real>
もしくは <integer>
へ変換された値が返ります。
構造体もしくは共用体のメンバ member へ値をセットします。
C言語の関数ポインタに対応する抽象クラスです。
ポインタオブジェクト ptrobj の参照を返します。
classもしくはobjのサイズを返します。
obj から class 型のインスタンスを生成します。生成のルールは以下の通りです。
class | objの型 | 説明 |
| | obj と同じ値を持つ class のインスタンスを生成します |
| | obj が |
| | obj のアドレスを持つポインタを生成します |
| | obj と同じアドレスを持つポインタを生成します |
| | obj の先頭アドレスを持つポインタを生成します。 |
| | Cの文字列を生成し、その先頭アドレスを持つポインタを生成します。 |
| | obj の先頭アドレスを持つポインタを生成します。 |
| | obj と同じ内容の配列を生成し、その先頭アドレスを持つポインタを生成します。 |
| | obj と同じ内容の配列を生成します。 |
| | ポインタが指すメモリ領域を配列と見なして class のインスタンスを生成します。 |
| | obj を実行する関数のポインタを生成します。 |
| | obj と同じ値の数値を返します。 |
| | 値が 0 のとき |
| | ポインタのアドレスが返ります。 |
| | 配列の先頭アドレスが返ります。 |
| | ポインタが指し示す領域が0終端された文字列と見なし、文字列を生成します。 |
| | 配列の内容が0終端された文字列と見なし、文字列を生成します。 |
| | 配列の内容を持つ class のインスタンスを生成します。各要素の値は |
obj が <c-value>
型である時は数値を返します。そうでなければ obj をそのまま返します。
NULLポインタを返します。
obj がNULLポインタであれば #t
が、そうでなければ #f
が返されます。
ptrobj にファイナライザ proc を登録します。ptrobj がGCされるときに proc が呼ばれます。
ptrobj のファイナライザを削除します。
ptrobj のファイナライザを実行します。これにより ptrobj のファイナライザは削除されます。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
objc-wrapper
とは Objective-C のライブラリを Gauche から使えるようにするためのモジュールです。
2.1 Load a framework library | ||
2.2 Load an Objective-C header file | ||
2.3 Functions about Objective-C objects |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
フレームワークライブラリ framework を読み込みます。
(c-load-framework "Foundation") |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
objc-wrapper
モジュールの c-include
では Objective-C のクラス定義やメソッド定義の拡張が行われています。
Objective-C のクラス Foo
がヘッダファイルで定義されていた場合、 Foo
と <Foo>
の2つのシンボルが定義されます。Foo
は <c-struct:objc_objcect>
型のオブジェクトでクラス Foo
そのものを指しています。<Foo>
は <id>
のエイリアスとなります。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
super-class-nameを継承したObjective-Cのクラスclass-nameを定義します。
メッセージキーワードがmessage-keywordであり戻り値の型がret-typeであるようなobjc-classのメソッドを定義します。varspecは(変数名 変数型)のリストを指定します。
bodyではselfとsuperの2つの変数が使えます。それぞれ、レシーバオブジェクト、レシーバをスーパクラスにキャストしたオブジェクトを指しています。
(define-objc-method MyFooClass <id> [:doSomething (v <c-int>)] [super :doSomething v] [self :foo v] (bar v) ;; The result of (bar v) is the return value of this method. ) |
obj のメソッドを呼び出します。
[[NSString :alloc] :init] [[NSString :startWithCString ( "Hello, world") :encoding NSASCIIStringEncoding]] |
Objective-C文字列を返します。
メソッド名 method-name のセレクタを返します。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Jump to: | (
@
C D F M N O P R S U |
---|
Jump to: | (
@
C D F M N O P R S U |
---|
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
For readability, the surrounding <
and >
are stripped off.
Jump to: | C |
---|
Jump to: | C |
---|
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
[Top] | [Contents] | [Index] | [ ? ] |
[Top] | [Contents] | [Index] | [ ? ] |
This document was generated by KOGURO, Naoki on December, 26 2006 using texi2html 1.76.
The buttons in the navigation panels have the following meaning:
Button | Name | Go to | From 1.2.3 go to |
---|---|---|---|
[ < ] | Back | previous section in reading order | 1.2.2 |
[ > ] | Forward | next section in reading order | 1.2.4 |
[ << ] | FastBack | beginning of this chapter or previous chapter | 1 |
[ Up ] | Up | up section | 1.2 |
[ >> ] | FastForward | next chapter | 2 |
[Top] | Top | cover (top) of document | |
[Contents] | Contents | table of contents | |
[Index] | Index | index | |
[ ? ] | About | about (help) |
where the Example assumes that the current position is at Subsubsection One-Two-Three of a document of the following structure:
This document was generated by KOGURO, Naoki on December, 26 2006 using texi2html 1.76.