● StrCalc BASIC の実装
8.代入式のフック
代入式の処理を、直前でアプリケーションに迂回させる事ができます。
フック対象は単体の代入式で、ステートメント内に記述する代入式、計算式は対象となりません。
フックは BASICPARAM構造体のメンバpsubst にコールバック関数のポインタを指定すると行われます。追加情報が必要な場合は、メンバsubst_exparam に値をセットしておきます。
BASICPARAM bas;
bas.psubst = subst_hook;
bas.subst_exparam = NULL;
代入式の計算処理が開始すると、メンバpsubst で指定したコールバック関数が呼び出されます。アプリケーションは、そのコールバック内で独自の代入式処理を行う事ができます。
コールバックには、代入式全体の文字列を指すポインタが渡されますので、文字列操作により解読し、処理を行います。代入式の書式はその文字列操作により、ある程度決定されますので、その点ではユーザステートメントのコールバックに似ています。
プログラム例1(zip)
プログラム例2(zip)