2 XML C用のコールバックAPIパッケージ

このコールバック・パッケージでは、XMLコールバックの関数(または関数ポインタ)を宣言するマクロを定義します。コールバックはエラー・メッセージ処理、メモリーの割当てと解放およびストリーム操作に使用されます。

次の表にコールバック・インタフェースで使用できるメソッドの概要を示します。

表2-1 XML C実装のCallbackメソッドの概要

関数 概要

XML_ACCESS_CLOSE_F()

ユーザー定義のアクセス・メソッド・クローズ・コールバック

XML_ACCESS_OPEN_F()

ユーザー定義のアクセス・メソッド・オープン・コールバック

XML_ACCESS_READ_F()

ユーザー定義のアクセス・メソッド読込みコールバック

XML_ALLOC_F()

低レベルのメモリー割当て。

XML_ERRMSG_F()

エラー・メッセージ処理。

XML_FREE_F()

低レベルのメモリー解放。

XML_STREAM_CLOSE_F()

ユーザー定義のストリーム・クローズ・コールバック

XML_STREAM_OPEN_F()

ユーザー定義のストリーム・オープン・コールバック

XML_STREAM_READ_F()

ユーザー定義のストリーム読込みコールバック

XML_STREAM_WRITE_F()

ユーザー定義のストリーム書込みコールバック

2.1 XML_ACCESS_CLOSE_F()

このマクロはURLへのアクセスに使用する、クローズ関数コールバックのプロトタイプを定義します。

2.2 XML_ACCESS_OPEN_F()

このマクロはURLへのアクセスに使用する、オープン関数コールバックのプロトタイプを定義します。

2.3 XML_ACCESS_READ_F()

このマクロはURLへのアクセスに使用する、読込み関数コールバックのプロトタイプを定義します。

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.7 XML_STREAM_CLOSE_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(ゼロ)を戻します。