![]() |
![]() |
|
|
Fget、Fget32(3fml)
名前
Fget()、Fget32() - フィールド・オカレンスのコピーおよび長さの取得
形式
#include <stdio.h>
#include "fml.h"
int
Fget(FBFR *fbfr, FLDID fieldid, FLDOCC oc, char *loc, FLDLEN
*maxlen)
#include "fml32.h"
int
Fget32(FBFR32 *fbfr, FLDID32 fieldid, FLDOCC32 oc, char *loc,
FLDLEN32 *maxlen)
機能説明
Fget() は、値が変更されたときに、フィールド化バッファのフィールドを検索するために使用されます。fbfr は、フィールド化バッファを指すポインタです。fieldid は、フィールド識別子です。oc はフィールドのオカレンス番号です。呼び出し側は、プライベート・データ領域を指すポインタ (loc)、データ領域の長さ (*maxlen) を Fget() に渡します。フィールドの長さは、*maxlen に返されます。関数が呼び出された時に、maxlen が NULL の場合は、そのフィールドの値 (loc) のデータ領域がフィールド値を入れるのに十分大きいために、値が返されないと想定されます。loc が NULL の場合は、値は検索されません。このように、この関数を呼び出すことにより、フィールドが存在するかどうかを確かめることができます。
上記の「形式」の項では、Fget() の引数 value のデータ型は、char のポインタ (C の char *) として記述されています。技術的には、これは、Fget() に渡すことのできるある特定の値のみを記述しています。実際、value 引数の型は、検索されるフィールドのフィールド化バッファ表現の型と同じ型のオブジェクトのポインタである必要があります。たとえば、フィールドが、FLD_LONG 型でバッファに格納されている場合は、value の型は、long のポインタ (C の long *) である必要があります。同様に、FLD_SHORT 型でバッファに格納される場合、value は、short 型のポインタ (C の short *) である必要があります。大事なことは、Fget() は value で指されるオブジェクトが、検索される格納済みのフィールドの型と同じ型を持っていることを想定していることです。
Fget32() は 32 ビット FML で使用されます。
マルチスレッドのアプリケーション内のスレッドは、TPINVALIDCONTEXT を含め、どのようなコンテキスト状態で実行している場合でも、Fget() または Fget32() を呼び出すことができます。
戻り値
Fget32() が FLD_VIEW32 フィールド・タイプで使用されると、FVIEWFLD 構造体を指すポインタが返されます。この関数は、エラー発生時に -1 を返し、Ferror を設定してエラー条件を示します。
エラー
次の条件の場合、Fget() は異常終了し、Ferror を次の値に設定します。
バッファが適切なバウンダリで開始していません。
バッファがフィールド化されていないか、または Finit() で初期化されていません。
maxlen に指定されているデータ領域の大きさは、フィールド値を保持するのに十分な大きさではありません。
フィールド・オカレンスが要求されましたが、指定されたフィールドおよびオカレンスは、フィールド化バッファにありませんでした。
指定されたフィールド識別子は無効です。
関連項目
「FML 関数の紹介」、CFget、CFget32(3fml)、Fgetalloc、Fgetalloc32(3fml)、Fgetlast、Fgetlast32(3fml)、Fgets、Fgets32(3fml)、Fgetsa、Fgetsa32(3fml)
![]() |
![]() |
![]() |
|
Copyright © 2001 BEA Systems, Inc. All rights reserved.
|