2 C++用のCtx APIパッケージ

XMLコンテキスト関連の型とインタフェースはCtxの名前空間で表されます。これには、Ctxのデータ型、MemAllocatorメソッド、TCtxメソッドが含まれます。

Ctxのデータ型

表2-1Ctxパッケージのデータ型の概要を示します。

表2-1 データ型の概要: Ctxパッケージ

データ型 説明

エンコーディング

サポートされる唯一のエンコーディング

エンコーディング

エンコーディングの配列

encoding

サポートされる唯一のエンコーディング

定義

typedef struct encoding {
   oratext *encname;
   oratext *encvalue;
} encoding;

encodings

エンコーディングの配列

定義

typedef struct encodings {
   unsigned num;
   encoding *enc; 
} encodings;

MemAllocatorインタフェース

表2-2MemAllocatorインタフェースで使用できるメソッドの概要を示します。

表2-2 MemAllocatorメソッドの概要: Ctxパッケージ

関数 概要

alloc()

特定のサイズのメモリーを割り当てます。

dealloc()

引数がポイントしているメモリーの割当てを解除します。

~MemAllocator()

仮想デストラクタ。実際のデストラクタに対するインタフェース・レベルのハンドル。

alloc()

これはユーザー定義のアロケータ関数のプロトタイプを定義する、仮想メンバー関数です。

構文

virtual void* alloc(
   ub4 size) = 0;
パラメータ 説明
size

メモリー・サイズ

dealloc()

これはユーザー定義のデアロケータ関数のプロトタイプを定義する、仮想メンバー関数です。このようなデアロケータは、allocメンバー関数で割り当てられたメモリーの割当てを解除するためにサポートされています。

構文

virtual void dealloc(
   void* ptr) = 0;
パラメータ 説明
ptr

それまでに割り当てられたメモリーへのポインタ

~MemAllocator()

名前や実装を把握せずに呼び出すことが可能な、実際のデストラクタに対するインタフェース・レベルのハンドルを提供します。

構文

virtual ~MemAllocator() {}

TCtxインタフェース

表2-3TCtxインタフェースで使用できるメソッドの概要を示します。

表2-3 TCtxメソッドの概要: Ctxパッケージ

関数 概要

TCtx()

クラス・コンストラクタです。

getEncoding()

XMLコンテキストで使用されるデータ・エンコーディングを取得します。

getErrHandler()

ユーザーが提供するエラー・ハンドラを取得します。

getMemAllocator()

メモリー・アロケータを取得します。

isSimple()

データ・エンコーディングがシンプルかどうかを示すフラグを取得します。

isUnicode()

データ・エンコーディングがUnicodeかどうかを示すフラグを取得します。

~TCtx()

デストラクタ。領域をクリアし、実装を破棄します。

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

~TCtx()

デストラクタ。コンテキスト・オブジェクトが不要になった場合に、ユーザーがコールします。

構文

~Tctx();