ポインタ属性
形式
ref ptr
属性の意味
ポインタクラスを指定します。ポインタクラスには参照ポインタ(rtr)と完全ポインタ(ptr)があります。
説明
-
ポインタ属性は,パラメタ,構造体メンバ,および型定義に使います。txidlコマンドがポインタの使用方法から適当なポインタクラスを判断する場合もありますが,ほとんどの場合,次に示す方式のうち一つを使ってポインタクラスを指定する必要があります。
-
ポインタ宣言にref属性かptr属性を使う。
-
IDLインタフェースのヘッダ部にpointer_default属性を使う。省略時仮定値のポインタクラスは,pointer_default属性で決定。
-
-
ポインタ属性は,宣言中のトップレベルポインタにだけ有効です。複数のポインタが一つの宣言の中で宣言されているときは,確立されたpointer_defaultがトップレベルポインタ以外のすべてのポインタに有効となります。
-
ref属性とptr属性は同時に指定できません。
参照ポインタの説明
参照ポインタは,単純な形式のポインタです。このクラスのポインタで一般的な使用方法は,参照によって整数を渡すなどの受け渡しです。
参照ポインタは,完全ポインタよりも高性能ですが,次に示す制限があります。
-
参照ポインタにはNULL値がないため,リンケージを終了できません。
-
参照ポインタを使ってリンケージ済みのリストは作成できません。
参照ポインタには,次に示す特性があります。
-
参照ポインタは,常に有効なストレージをポイントします。NULL値は持てません。参照ポインタにNULL値を入れた場合は,動作は保証しません。
-
参照ポインタの値は,関数の呼び出し中には変更されません。呼び出しから戻ったときも,常に呼び出しの開始時と同じ領域をポイントします。
-
別名化は使えません。同じオペレーションのパラメタが使う,ほかのポインタが指した領域はポイントできません。
完全ポインタの説明
完全ポインタは,複雑な形式のポインタです。完全ポインタは,ポインタに関連するすべての機能を使えます。例えば,完全ポインタを使うとリンケージ済みのリストやツリー,キュー,任意のグラフなどの複雑なデータ構造体を作れます。
- 完全ポインタには,次に示す特性があります。
-
-
完全ポインタの値は,関数の呼び出し中でも変更できます。
-
IDL-only TxRPCでは,別名化は使えません。
-
同じオペレーションのパラメタが使っているほかの完全ポインタを指すストレージ領域もポイントできます。ただし,この場合は,ポインタは構造体の開始をポイントする必要があります。例えば,インタフェース定義コードが次のコードを組み込んでいる場合など,基礎構造体や重複したストレージ領域へのポインタは使えません。
-