● StrCalc BASIC の実装

8.代入式のフック

代入式の処理を、直前でアプリケーションに迂回させる事ができます。
フック対象は単体の代入式で、ステートメント内に記述する代入式、計算式は対象となりません。



フックは BASICPARAM構造体のメンバpsubst にコールバック関数のポインタを指定すると行われます。追加情報が必要な場合は、メンバsubst_exparam に値をセットしておきます。

    BASICPARAM      bas;

    bas.psubst = subst_hook;
    bas.subst_exparam = NULL;

代入式の計算処理が開始すると、メンバpsubst で指定したコールバック関数が呼び出されます。アプリケーションは、そのコールバック内で独自の代入式処理を行う事ができます。

コールバックには、代入式全体の文字列を指すポインタが渡されますので、文字列操作により解読し、処理を行います。代入式の書式はその文字列操作により、ある程度決定されますので、その点ではユーザステートメントのコールバックに似ています。

プログラム例1(zip)

プログラム例2(zip)