|
|
|
|
|
Fvftos、Fvftos32(3fml)
名前
Fvftos()、Fvftos32() - フィールド化バッファから C 構造体にコピー
形式
#include <stdio.h>
#include "fml.h"
int
Fvftos(FBFR *fbfr, char *cstruct, char *view)
#include "fml32.h"
int
Fvftos32(FBFR32 *fbfr, char *cstruct, char *view)
機能説明
Fvftos() 関数は、フィールド化バッファから C 構造体へデータを転送します。fbfr は、フィールド化バッファを指すポインタです。cstruct は、C 構造体を指すポインタです。view は、コンパイルした VIEW 記述子の名前を指すポインタです。
フィールドは、フィールド化バッファから view のメンバ記述子に基づく構造体に複写されます。フィールド化バッファのフィールドが、一致するバッファを C 構造体に持たない場合は、無視されます。C 構造体で指定されたメンバがフィールド化バッファに一致するフィールドを持たない場合は、メンバにヌルが複写されます。使用したヌルが VIEW 記述子の各メンバに対して定義可能です。
C 構造体で複数のオカレンスを格納するには、構造体のメンバは配列である必要があります (たとえば、int zip[4] は zip の 4 つのオカレンスを格納できます)。バッファに存在するオカレンスの数が、配列にある要素数よりも少ない場合は、余分の要素スロットにはヌルが割り当てられます。一方、バッファの配列にある要素数よりもオカレンスの数のほうが多い場合は、余分なオカレンスは無視されます。
フィールド識別子およびメンバに対してマッピング・エントリが存在する場合でも、マッピングを禁止する、VIEW 記述子のオプションがあります。これらのオプションは、初めは VIEW ファイルで指定されていますが、実行時に Fvopt() を使用して変更できます。
Fvftos32() は 32 ビット FML で使用されます。
マルチスレッドのアプリケーション内のスレッドは、TPINVALIDCONTEXT を含め、どのようなコンテキスト状態で実行している場合でも、Fvftos() または Fvftos32() を呼び出すことができます。
戻り値
この関数は、エラー発生時に -1 を返し、Ferror を設定してエラー条件を示します。
エラー
次の条件の場合、Fvftos() は、異常終了し、Ferror を次の値に設定します。
バッファが適切なバウンダリで開始していません。
バッファがフィールド化されていないか、または Finit() で初期化されていません。
呼び出された関数への引数の 1 つが無効です (たとえば、Fvftos の cstruct パラメタに NULL を指定している)。
関連するカウント・メンバが、構造体からフィールド化バッファへ転送中は負の値であってはなりません。
指定した VIEW 記述子が NULL であるか、あるいは VIEWDIR または VIEWFILES で指定されたファイルにこの記述子がありませんでした。
関連項目
「FML 関数の紹介」、Fvopt、Fvopt32(3fml)、viewfile(5)
|
|
|
|
|
|
Copyright © 2001 BEA Systems, Inc. All rights reserved.
|