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