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