|
|
|
|
|
Fojoin、Fojoin32(3fml)
名前
Fojoin()、Fojoin32() - ソース・バッファを宛先バッファに組み込む
#include <stdio.h>
#include "fml.h"
int
Fojoin(FBFR *dest, FBFR *src)
#include "fml32.h"
int
Fojoin32(FBFR32 *dest, FBFR32 *src)
機能説明
Fojoin() は、Fjoin() に似ていますが、Fjoin() は、宛先バッファ dest のフィールドに、ソース・バッファ src に対応するフィールド識別子/オカレンスがない場合でも、そのフィールドは削除されません。対応するフィールド識別子/オカレンスを宛先バッファに持っていないもとのバッファにあるフィールドは、宛先バッファに追加されません。バッファを組み込むことにより FLD_PTR フィールドが削除されても、ポインタによって参照されるメモリ領域は変更または解放されません。
Fjoin() と同様、この関数は領域不足により異常終了します。Fjoin() は、さらに領域を割り当てた後、操作を完了するために再起動されます。
Fojoin32() は 32 ビット FML で使用されます。
マルチスレッドのアプリケーション内のスレッドは、TPINVALIDCONTEXT を含め、どのようなコンテキスト状態で実行している場合でも、Fojoin() または Fojoin32() を呼び出すことができます。
戻り値
この関数は、エラー発生時に -1 を返し、Ferror を設定してエラー条件を示します。
エラー
次の条件の場合、Fojoin() は異常終了し、Ferror を次の値に設定します。
ソース・バッファまたは宛先バッファのどちらかが適切なバウンダリで開始していません。
ソース・バッファまたは宛先バッファのどちらかがフィールド化バッファでないか、または Finit() によって初期化されていません。
フィールド値は、フィールド化バッファで追加あるいは変更されますが、バッファには、十分な領域が残っていません。
使用例
次に使用例を示します。
if(Fojoin(dest,src) 0)
F_error("pgm_name");
dest が、フィールド A、B および C のオカレンスを 2 個持っており、src が、フィールド A、C および D を持っている場合、結果的に、dest は、ソース・フィールド値 A、宛先フィールド値 B、ソース・フィールド値 C、および 2 番目の宛先フィールド値 C を含んでいます。
関連項目
「FML 関数の紹介」、Fconcat、Fconcat32(3fml)、Fjoin、Fjoin32(3fml)、Fproj、Fproj32(3fml)
|
|
|
|
|
|
Copyright © 2001 BEA Systems, Inc. All rights reserved.
|