2 C++用のCtx APIパッケージ
XMLコンテキスト関連の型とインタフェースはCtxの名前空間で表されます。これには、Ctxのデータ型、MemAllocatorメソッド、TCtxメソッドが含まれます。
Ctxのデータ型
表2-1にCtxパッケージのデータ型の概要を示します。
encoding
サポートされる唯一のエンコーディング
定義
typedef struct encoding {
oratext *encname;
oratext *encvalue;
} encoding;
MemAllocatorインタフェース
表2-2にMemAllocatorインタフェースで使用できるメソッドの概要を示します。
表2-2 MemAllocatorメソッドの概要: Ctxパッケージ
| 関数 | 概要 |
|---|---|
|
特定のサイズのメモリーを割り当てます。 |
|
|
引数がポイントしているメモリーの割当てを解除します。 |
|
|
仮想デストラクタ。実際のデストラクタに対するインタフェース・レベルのハンドル。 |
alloc()
これはユーザー定義のアロケータ関数のプロトタイプを定義する、仮想メンバー関数です。
構文
virtual void* alloc( ub4 size) = 0;
| パラメータ | 説明 |
|---|---|
size |
メモリー・サイズ |
dealloc()
これはユーザー定義のデアロケータ関数のプロトタイプを定義する、仮想メンバー関数です。このようなデアロケータは、allocメンバー関数で割り当てられたメモリーの割当てを解除するためにサポートされています。
構文
virtual void dealloc( void* ptr) = 0;
| パラメータ | 説明 |
|---|---|
ptr |
それまでに割り当てられたメモリーへのポインタ |
TCtxインタフェース
表2-3にTCtxインタフェースで使用できるメソッドの概要を示します。
表2-3 TCtxメソッドの概要: Ctxパッケージ
| 関数 | 概要 |
|---|---|
|
クラス・コンストラクタです。 |
|
|
XMLコンテキストで使用されるデータ・エンコーディングを取得します。 |
|
|
ユーザーが提供するエラー・ハンドラを取得します。 |
|
|
メモリー・アロケータを取得します。 |
|
|
データ・エンコーディングがシンプルかどうかを示すフラグを取得します。 |
|
|
データ・エンコーディングがUnicodeかどうかを示すフラグを取得します。 |
|
|
デストラクタ。領域をクリアし、実装を破棄します。 |
TCtx()
TCtxコンストラクタ。コンテキスト・オブジェクトの作成に失敗した場合、XmlExceptionをスローします。
| 構文 | 説明 |
|---|---|
TCtx() throw (XMLException) |
このコンストラクタはコンテキスト・オブジェクトを作成し、デフォルト値のパラメータを使用してコンテキスト・オブジェクトを初期化します。 |
TCtx( oratext* name, ErrorHandler* errh = NULL, MemAllocator* memalloc = NULL, encodings* encs = NULL) throw (XMLException) |
このコンストラクタはコンテキスト・オブジェクトを作成し、ユーザーが指定したパラメータ値を使用してコンテキスト・オブジェクトを初期化します。 |
TCtx( oratext* name, up4 inpblksize, ErrorIfs* errh = NULL, MemAllocator* memalloc = NULL, encodings* encs = NULL) throw (XMLException) |
このコンストラクタはコンテキスト・オブジェクトを作成し、ユーザーが指定したパラメータ値を使用してコンテキスト・オブジェクトを初期化します。入力ソースからのメモリー・ブロック・サイズに関する追加パラメータをとります。 |
| パラメータ | 説明 |
|---|---|
name |
ユーザー定義のコンテキスト名 |
errh |
ユーザー定義のエラー・ハンドラ |
memalloc |
ユーザー定義のメモリー・アロケータ |
encs |
ユーザー指定のエンコーディング |
inpblksize |
入力ソースのメモリー・ブロック・サイズ |
戻り値
(TCtx)コンテキスト・オブジェクト
getEncoding()
XMLコンテキストで使用されているデータ・エンコーディングを戻します。通常、データ・エンコーディングはユーザーが選択するため、この関数は必要ありません。ただし、データ・エンコーディングが指定されておらず、デフォルトが使用されている場合、この関数を使用して、デフォルトのエンコーディング名を戻すことができます。
構文
oratext* getEncoding() const;
戻り値
(oratext *) データ・エンコーディングの名前。
getErrHandler()
このメンバー関数は、コンテキストが作成されたときにユーザーが指定したエラー・ハンドラを戻し、ユーザーが何も指定していない場合はNULLを戻します。
構文
ErrorHandler* getErrHandler() const;
戻り値
(ErrorHandler *) エラー・ハンドラ・オブジェクトへのポインタ、またはNULL。
getMemAllocator()
このメンバー関数は、コンテキストが作成されたときにユーザーが指定したメモリー・アロケータ、またはデフォルトのメモリー・アロケータを戻します。Cレベルのすべてのメモリー割当てについて、このメモリー・アロケータが使用される必要があります。
構文
MemAllocator* getMemAllocator() const;
戻り値
(MemAllocator*) メモリー・アロケータ・オブジェクトへのポインタ。
isSimple()
コンテキストのデータ・エンコーディングが「シンプル」かどうか、すなわちASCIIやEBCDICのように各文字がシングルバイトであるかどうかを示すフラグを戻します。
構文
boolean isSimple() const;
戻り値
(boolean) データ・エンコーディングが「シンプル」の場合はTRUE、それ以外はFALSE。
isUnicode()
コンテキストのデータ・エンコーディングが、1文字に2バイトを使用するUnicode、UTF-16かどうかを示すフラグを戻します。
構文
boolean isUnicode() const;
戻り値
(boolean) データ・エンコーディングがUnicodeの場合はTRUE、それ以外はFALSE。