バージョン 6.3.3
 —  オペレーション  —

タイプ情報

このドキュメントでは、次のトピックについて説明します。


概要

タイプ情報は、そのインターフェイスのすべてとともに(メソッドの名前とタイプにいたるまで)クラスを完全に記述するための方法です。 それはクラスおよびそれらのインターフェイス、例えば、インターフェイスが存在するクラス、それらのインターフェイスに存在するメンバ関数、およびそれらの関数が必要とする引数についての必要な情報を含みます。

この情報は、例えば、エンドユーザーに有効なオブジェクト、インターフェイス、メソッドおよびプロパティを表示するためのタイプ情報ブラウザで、クラスとそのメソッドについての詳細を見つけ出すためにクライアントによって使用されます。

他にタイプ情報の使用で重要な点は、NaturalX も使用する、広く使われている OLE オートメーションテクニックです。

タイプ情報を保存するには、いくつかの方法があります。 共通の方法は、タイプライブラリ(.TLB)ファイルにタイプ情報を生成することです。

Top of page

NaturalX とタイプ情報

タイプ情報の作成

Natural クラスの登録時に、クラスごとにタイプライブラリファイルが作成されます。

タイプライブラリは、$NATDIR/$NATVERS/etc/<serverid>/<classname>/<version> ディレクトリに生成され、レジストリのエントリ経由でクラスに接続されます。

タイプライブラリファイル名には、既存の名前と競合しない限り、クラスモジュール名が使用され、拡張子 ".tlb" が付きます。 クラスモジュール名には番号が付加されます。

Top of page

タイプ情報の使用

Natural クラスに定義された各インターフェイスは、クライアントではダイナミックインターフェイスとして参照されます("ディスパッチインターフェイス" とも呼ばれます)。 インターフェイスの各メソッドは、クライアントでは METHOD ステートメントに定義された名前で参照されます。

Natural クラスの最初のインターフェイスは、デフォルトのディスパッチインターフェイスとしてマークされます。

タイプ情報のサポートにより、複数のインターフェイスを同じメソッド名またはプロパティ名で定義することもできます。 Natural クライアントは、以下の例のように、インターフェイス名(Natural クラスに定義)をメソッド名の接頭語として使用して、対応するメソッドをアドレスします。

CREATE OBJECT #O3 OF CLASS "DepartmentList"
SEND "Iterate.PositionTo" TO #O3 WITH "C" RETURN #DEPT

Natural クライアントは、タイプ情報を使用して、メソッドまたはプロパティが属しているインターフェイスを検出します。

注意:
Natural クライアントは、構文チェックの実行にカタログ時のタイプ情報を使用しません。

データタイプ変換

以下では次のトピックについて説明します。

Natural データフォーマットから OLE タイプ

クライアントからデータを受け取るため、または他のプログラミング言語で記述されたクラスにデータを渡すために、Natural データフォーマットはいわゆる OLE オートメーション互換タイプに変換されます。 この表は、COM クライアントが Natural クラスのメソッドパラメータまたはプロパティをどのように参照するかを示します。 例えば、Natural クラスにフォーマット A のメソッドパラメータまたはプロパティがある場合は、これは COM クライアントによって VT_BSTR として参照されます。

Natural データフォーマット オートメーション互換タイプ
A VT_BSTR
B1 VT_UI1
B2 VT_UI2
B4 VT_UI4
Bn (n != 1, 2, 4) VT_UI1SAFEARRAY
C サポートされません
D VT_DATE
F4 VT_R4
F8 VT_R8
I1 VT_I2
I2 VT_I2
I4 VT_I4
GUI のハンドル サポートされません
HANDLE OF OBJECT VT_DISPATCH
L VT_BOOL
N15.4 VT_CY
Nn.m (n.m != 15.4) VT_R8
P15.4 VT_CY
Pn.m (n.m != 15.4) VT_R8
T VT_DATE
U VT_BSTR

指定された Natural データフォーマットの配列は、対応する "VT" タイプの SAFEARRAY にマップされます。

ただし、次のような特別な場合があります。

OLE タイプから Natural データフォーマット

この表は、外部クラスのパラメータまたはプロパティを Natural でどのようにアドレスできるかを示します。 例えば、外部クラスにタイプ VT_R4 のメソッドパラメータまたはプロパティがある場合は、このパラメータまたはプロパティは、F4 または F4 への MOVE 互換性のあるフォーマットとして Natural でアドレスできます。

オートメーション互換タイプ Natural データフォーマット
VT_BOOL L
VT_BSTR A または U
VT_CY P15.4
VT_DATE T
VT_DISPATCH HANDLE OF OBJECT
VT_UNKNOWN HANDLE OF OBJECT
VT_I1 I1
VT_I2 I2
VT_I4 I4
VT_INT I4
VT_R4 F4
VT_R8 F8
VT_U1 B1
VT_U2 B2
VT_U4 B4
VT_UINT B4

最大 3 次元の SAFEARRAY は、同じ次元数および対応するフォーマットの Natural 配列に変換されます。 3 次元を超える SAFEARRAY は、Natural 内からは使用できません。

ただし、次のような特別な場合があります。

Top of page