● fixed X ユーティリティー - 関数リファレンス
StrCalc 初期化
int __stdcall fixedutil_strcalc_init(PFIXED_STRCALC_PARAM pinf ,int width ,PMEMTABLEINFO pmem,PMEMFUNC pfunc );
引数
戻り値
正常終了した場合は STATUS_NORMAL を返します。
設定値が異常な場合は STATUS_PARAMERROR 、メモリの確保に失敗した場合は STATUS_NOTENOUGHMEM を返します。
説明
StrCalc の初期化処理を行います。関数fixedutil_strcalc を使用する前に、必ず実行する必要があります。
引数 pinf の指す FIXED_STRCALC_PARAM構造体の領域は、ゼロクリアする必要はありません(関数側で行います)。関数fixedutil_strcalc_init は width 、pfunc を使用して、計算に必要な環境を pinf の指す領域に構築します。
FIXED_STRCALC_PARAM構造体.
typedef struct {
char *str;
PMEMTABLEINFO pmem;
PFIXEDVAL pans;
unsigned long work[18];
} FIXED_STRCALC_PARAM,*PFIXED_STRCALC_PARAM;
メンバ名 | 意味 |
str | 計算させる文字列を格納した領域の先頭アドレス |
pmem | StrCalc 文法上のメモリを格納した領域の先頭アドレス |
pans | 計算結果が格納される領域の先頭アドレス |
work | StrCalc 用ワークエリア この領域の内容は変更しないでください |
関数の引数 pmem は StrCalc 文法上のメモリを意味し、使用しない場合は NULL を指定する事ができます。
引数pmem は FIXED_STRCALC_PARAM構造体内のメンバ pmem にコピーされますが、関数fixedutil_strcalc_init を通して設定しなければならない訳ではなく、構造体へ自由に設定する事ができます。
関数fixedutil_strcalc_init は、与えるパラメータが次のような状態の場合、STATUS_PARAMERROR を返し終了します。
- 引数 pinf または pfunc が NULL の場合
- pfunc ->pfmemalloc または pfunc ->pfmemfree が NULL の場合
- 引数 width が 4 の倍数ではなかった場合
- 引数 pmem が NULL でなく、且つ次の条件に一つでも該当した場合
- pmem ->ppmem = NULL の場合
- pmem ->cnt ≦ ゼロの場合
- pmem ->width ≠ 引数 width の場合
fixedutil_strcalc_init は引数width を使用して、内部処理で使用するワークエリアを確保します。このワークエリアは、関数fixedutil_strcalc_term が実行されるまで存在し続けます。
このため、fixedutil_strcalc_init 実行後は数値幅を変更する事ができません。変更したい場合は、一度 fixedutil_strcalc_term で終了して、再び fixedutil_strcalc_init で環境を再構築するか、新たに FIXED_STRCALC_PARAM構造体の領域を確保して別の環境を構築してください。
計算が済んだら関数fixedutil_strcalc_term で環境を破棄してください。