実行環境
開始と終了
iZ-C の各種 API 関数を呼び出す前に cs_init()
を呼び出す必要があります。
また、プログラムの終了時には cs_end()
を呼び出す必要があります。
-
void cs_init(void)
iZ-C が利用するメモリ領域をセットアップします。
エラーの取得
ライブラリ内部には、エラーが発生したことを記録する変数が存在し、 この変数を読み出すことによってエラーの発生を知ることができます。 (以降この変数を err と呼びます)
err はAPIを呼び出すことで、読み出しあるいは設定が可能です。
-
void cs_initErr(void)
cs_initErr()を呼び出すと err が CS_ERR_NONE に初期化されます。 cs_initErr()は
cs_init()
の中で呼び出されています。
-
int cs_getErr(void)
現在の err の値を返します。
CS_ERR_NONE
が返るということは, 前回の cs_getErr() あるいはcs_init()
の呼び出し以降、今回の cs_getErr() の呼び出しまでの間にはエラーは発生していないということを意味します。なお、err の値は以下の整数値をとります。
-
CS_ERR_NONE
エラーは発生していない
-
CS_ERR_GETVALUE
即値化されていない変数に対して
cs_getValue()
を呼び出した
-
CS_ERR_OVERFLOW
計算中にオーバーフローが発生した
-
CS_ERR_NO_MEMORY
メモリ取得に失敗した
-
CS_ERR_NONE
-
void cs_setErr(int code)
err の値を code として設定し直します。
エラー発生時の挙動の設定
エラーが発生した際に実施するアクションを、あらかじめ関数として登録しておくことができます。 登録された関数はエラーが発生したときにエラー内容を err に設定した後で呼び出されます。
-
void cs_setErrHandler(int code, void (*func)(void *data, void *ext), void *ext)
code のエラーが発生したときに呼び出される関数を func として設定します。 func の引数 data は、code によって異なる意味を持ちます。func の引数 ext は、cs_setErrHandler の 呼び出し時に与えられた ext と同じものです。
code の値 |
data の値 |
デフォルトの挙動 |
---|---|---|
CS_ERR_GETVALUE |
CSint へのポインタ |
メッセージを出力して処理を続行 |
CS_ERR_OVERFLOW |
NULL |
何もしないで続行 |
CS_ERR_NO_MEMORY |
NULL |
abort() を呼び出す (プログラムの実行は終了) |
バージョン情報の取得
統計情報の出力
-
void cs_printStats(void)
以下の3種類の情報を出力します。
Nb Fails (解探索の過程で発生したフェイルの数)
Nb Choice Points (バックトラックすることが可能な変数の即値化の回数)
Heap Size (バックトラックができるようにコンテキストを保存しているヒープ領域のサイズ)
Nb Fails および Nb Choice Points はそれぞれ、
cs_getNbFails()
およびcs_getNbChoicePoints()
関数で 直接取得できます。
-
void cs_fprintStats(FILE *f)
この関数は引数として出力先のファイルを示すFILE ポインタをとる以外は
cs_printStats()
と同じです。