2 XML C用のコールバックAPIパッケージ
このコールバック・パッケージでは、XMLコールバックの関数(または関数ポインタ)を宣言するマクロを定義します。コールバックはエラー・メッセージ処理、メモリーの割当てと解放およびストリーム操作に使用されます。
次の表にコールバック・インタフェースで使用できるメソッドの概要を示します。
表2-1 XML C実装のCallbackメソッドの概要
関数 | 概要 |
---|---|
ユーザー定義のアクセス・メソッド・クローズ・コールバック |
|
ユーザー定義のアクセス・メソッド・オープン・コールバック |
|
ユーザー定義のアクセス・メソッド読込みコールバック |
|
低レベルのメモリー割当て。 |
|
エラー・メッセージ処理。 |
|
低レベルのメモリー解放。 |
|
ユーザー定義のストリーム・クローズ・コールバック |
|
ユーザー定義のストリーム・オープン・コールバック |
|
ユーザー定義のストリーム読込みコールバック |
|
ユーザー定義のストリーム書込みコールバック |
2.4 XML_ALLOC_F()
このマクロはユーザーが指定する低レベル・メモリーalloc
関数のプロトタイプを定義します。アロケータが指定されない場合、malloc
が使用されます。この関数によるメモリーがゼロにならないようにしてください。XML_FREE_F()に対応します。
2.5 XML_ERRMSG_F()
このマクロはエラー・メッセージ処理関数のプロトタイプを定義します。XML初期化の際にエラー・メッセージ・コールバックが割り当てられない場合、エラーはstderr
に出力されます。ハンドラが指定されている場合、stderrへの出力のかわりにハンドラが呼び出されます。
2.6 XML_FREE_F()
このマクロはユーザーが指定する低レベル・メモリー解放関数のプロトタイプを定義します。アロケータが指定されない場合、free()が使用されます。XML_ALLOC_F()に対応します。
2.8 XML_STREAM_OPEN_F()
このマクロは、入力ソースをオープンするために1回コールされる、オープン関数コールバックのプロトタイプを定義します。この関数は、成功するとXMLERR_OK
を戻します。
2.9 XML_STREAM_READ_F()
このマクロは、オープン・ソースのデータをバッファに読み込むためにコールされ、読み込まれるバイト数(エラー時は0
)を戻す、読込み関数コールバックのプロトタイプを定義します。 eoi
フラグは、これがデータの最終ブロックかどうかを判断します。
EOIでは、クローズ関数が自動的にコールされます。
構文
#define XML_STREAM_READ_F(func, xctx, sctx, path, dest, size, nraw, eoi) xmlerr func( xmlctx *xctx, void *sctx, oratext *path, oratext *dest, size_t size, sbig_ora *nraw, boolean *eoi);
パラメータ | In/Out | 説明 |
---|---|---|
xctx |
IN |
XMLコンテキスト |
sctx |
IN |
ユーザー定義のストリーム・コンテキスト |
path |
IN |
(エラー・メッセージの)オープン・ソースのフルURI |
dest |
(OUT) |
データの読込み先の宛先バッファ |
size |
IN |
宛先バッファのサイズ |
nraw |
(OUT) |
読み込まれるバイト数 |
eoi |
(OUT) |
情報の終わりへのシグナル、最後のチャンク |
戻り値
(xmlerr)
数値のエラー・コード、正常に終了した場合は、0
(ゼロ)を戻します。
2.10 XML_STREAM_WRITE_F()
このマクロはユーザー定義のストリームにデータを書き込むためにコールされる、書込み関数コールバックのプロトタイプを定義します。
構文
#define XML_STREAM_WRITE_F(func, xctx, sctx, path, src, size) xmlerr func( xmlctx *xctx, void *sctx, oratext *path, oratext *src, size_t size);
パラメータ | In/Out | 説明 |
---|---|---|
xctx |
IN |
XMLコンテキスト |
sctx |
IN |
ユーザー定義のストリーム・コンテキスト |
path |
IN |
(エラー・メッセージの)オープン・ソースのフルURI |
src |
IN |
データを読み込むソース・バッファ |
size |
IN |
ソースのサイズ(バイト) |
戻り値
(xmlerr)
数値のエラー・コード、正常に終了した場合は、0
(ゼロ)を戻します。