● 関数リファレンス

変数情報テーブルのコピー

    void __stdcall   StrCalc_copy_paraminfo(PSTRCALC_PARAM pdest,PSTRCALC_PARAM psrc);

引数

引数名意味
pdestコピー先 STRCALC_PARAM 構造体の実体アドレス
psrcコピー元 STRCALC_PARAM 構造体の実体アドレス

戻り値

無し

説明

psrc の変数情報テーブルを pdest にコピーします(「変数構造概要」の図にある B だけをコピーする)。
この関数は変数自体を複製しないので、psrcpdest で同一変数名にアクセスすると同じ変数を指します。

変数の完全な複製を行いたい場合は、プログラム例 ex_cpprm(zip) を参考にしてください。


ユーザ定義関数テスト. 

/*
  関数名は任意です。引数は無し。
  登録時に、呼び出し元の STRCALC_PARAM 情報を追加情報として渡します。

  変数test_param を登録し、12345 をセットして終了します。戻り値は 0
*/
double __stdcall    user_test(
                        double              *arg,
                        int                 argcnt,
                        int                 *pret,
                        PSTRCALC_PARAM      p_prm1)
{
    /**********************************************************************************
      何故、STRCALC_PARAM構造体の情報をコピーして使用しなければならないのかは、
      「リファレンス」→「コールバック関数」→「MFUNC」のページにある注意点を参照して
      ください。
    **********************************************************************************/
    STRCALC_PARAM       prm2 = *p_prm1;

    *pret = StrCalc_substitution(&prm2,"test_param = 12345",0,NULL,NULL,NULL);

    /**********************************************************************************
      関数StrCalc_copy_paraminfo を使って、ローカル環境 prm2 の変数情報を、呼び出し元
      環境 *p_prm1 に反映させます。

      ・このコピーには、必ず関数StrCalc_copy_paraminfo を使用する必要があります。単純な
       構造体コピー(構造体全体のコピー)は、呼び出し元が保持しなければならない情報を
       潰してしまうので、行ってはなりません。

      ・この時のコピーは、*pret がエラーであっても行う必要があります。エラーが発生するま
       でに、変数が登録される可能性があるためです。
    **********************************************************************************/
    StrCalc_copy_paraminfo(p_prm1,&prm2);

    return 0.0;
}