![]() |
![]() |
|
|
Fgetalloc、Fgetalloc32(3fml)
名前
Fgetalloc()、Fgetalloc32() - 領域の割り当て、およびフィールド・オカレンスのコピーの取得
形式
#include <stdio.h>
#include "fml.h"
char *
Fgetalloc(FBFR *fbfr, FLDID fieldid, FLDOCC oc, FLDLEN *extralen)
#include "fml32.h"
char *
Fgetalloc32(FBFR32 *fbfr, FLDID32 fieldid, FLDOCC32 oc, FLDLEN32
*extralen)
機能説明
Fget() 同様、Fgetalloc() は、バッファ・フィールドのコピーの検索および作成を行いますが、malloc() (UNIX System V『プログラマ・リファレンス・マニュアル』) を介してフィールド用の領域を取得します。fbfr は、フィールド化バッファを指すポインタです。fieldid は、フィールド識別子です。oc はフィールドのオカレンス番号です。Fgetalloc() の最後の引数 extralen は、フィールド値の大きさに加えて獲得される予備の領域の大きさを提供します。extralen は、検索される値が、フィールド化バッファに再挿入される前に拡張される場合に使用されます。extralen が NULL の場合、割り当てる追加領域はなく、実際の長さは返されません。Fgetalloc() で取得した領域を free() で解放するのは呼び出し側の責任です。バッファは、あらゆるフィールドの型に対して正しく並べられます。
Fgetalloc32() は 32 ビット FML で使用されます。
マルチスレッドのアプリケーション内のスレッドは、TPINVALIDCONTEXT を含め、どのようなコンテキスト状態で実行している場合でも、Fgetalloc() または Fgetalloc32() を呼び出すことができます。
戻り値
上記の「形式」の項では、Fgetalloc() の戻り値のデータ型は、char のポインタ (C の char *) として記述されています。実際、返されるポインタは、格納済みのフィールドの型と同じ型を持つオブジェクトを指しています。Fgetalloc32() が FLD_VIEW32 フィールド・タイプで使用されると、FVIEWFLD 構造体を指すポインタが返されます。この関数は、エラー発生時に NULL を返し、Ferror を設定してエラー条件を示します。
エラー
次の条件の場合、Fgetalloc() 異常終了し、Ferror を次の値に設定します。
バッファが適切なバウンダリで開始していません。
バッファがフィールド化されていないか、または Finit() で初期化されていません。
フィールド・オカレンスが要求されましたが、指定されたフィールドとオカレンスの両方、あるいはどちらかは、フィールド化バッファにありませんでした。
指定されたフィールド識別子は無効です。
malloc() を使用しての領域の動的な割り当てが失敗しました。
関連項目
「FML 関数の紹介」、CFget、CFget32(3fml)、Fget、Fget32(3fml)、Fgetlast、Fgetlast32(3fml)、Fgets、Fgets32(3fml)、Fgetsa、Fgetsa32(3fml)
UNIX システムのリファレンス・ページの free(3)、malloc(3)
![]() |
![]() |
![]() |
|
Copyright © 2001 BEA Systems, Inc. All rights reserved.
|