インターフェイスでは、parameter_description
という名前の構造に Natural サブプログラムまたはメソッドのパラメータに関する情報が提供されています。 この構造は、ヘッダーファイル natuser.h で定義されています。 このファイルは、ディレクトリ %NATDIR%\%NATVERS%\samples\sysexnni にあります。
parameter_description
構造の配列は、nni_callnat
および同様の関数へのコールごとにインターフェイスに渡されます。 parameter_description
構造は、関数 nni_get_parm_info
を使用して、パラメータセット内のパラメータから作成されます。
この構造の関連要素には、次の情報が含まれています。 この表にリストされていない要素は、すべて内部でのみ使用されます。
フォーマット | 要素名 | 内容 |
---|---|---|
void* | address | パラメータ値のアドレス。 再割り当てや解放はできません。 address 要素は、ダイナミック変数の配列および X-array に対しては NULL ポインタになります。 この場合は、配列データ全体にアクセスすることはできず、パラメータアクセス関数
nni_get_parm を使用して要素ごとにアクセスすることのみが可能です。
|
int | format | パラメータの Natural データタイプ。 詳細については、「Natural データタイプ」を参照してください。 |
int | length | パラメータ値の Natural の長さ。 データタイプ NNI_TYPE_ALPHA および NNI_TYPE_UNICODE の場合は文字数。 データタイプ NNI_TYPE_PACK および NNI_TYPE_NUM の場合は小数点文字の前にある桁数。 配列の場合は 1 つのオカレンスの長さ。 ダイナミック変数の配列の場合は長さが 0 で示されます。 次に、関数 nni_get_parm_array_length を使用して、個別のオカレンスの長さを決定する必要があります。
|
int | precision | データタイプ NNI_TYPE_PACK および NNI_TYPE_NUM の場合は、小数点文字の後にある桁数。これ以外では 0。
|
int | byte_length | パラメータ値の長さ(バイト単位)。 配列の場合は 1 つのオカレンスの長さ(バイト単位)。 ダイナミック変数の配列の場合は長さが 0 バイトで示されます。 次に、関数 nni_get_parm_array_length を使用して、個別のオカレンスの長さを決定する必要があります。
|
int | dimensions | 次元の数。 スカラーの場合は 0。 次元の最大数は 3 です。 |
int | length_all | パラメータ値の合計長(バイト単位)。 配列の場合は配列全体の長さ(バイト単位)。 ダイナミック変数の配列の場合は合計長が 0 で示されます。 次に、関数 nni_get_parm_array_length を使用して、個別のオカレンスの長さを決定する必要があります。
|
int | flags | パラメータフラグ。「フラグ」を参照してください。 |
int | occurrences[10] | 各次元におけるオカレンス数。 最初の 3 つのオカレンスだけが使用されます。 |
int | indexfactors[10] | 各次元の配列インデックスファクタ。 最初の 3 つのオカレンスだけが使用されます。 |
変数の範囲が固定された固定長の配列の場合、配列の内容には構造要素 address
を使ってダイレクトにアクセスできます。 この場合は、次のことが適用されます。
3 次元配列の要素(i、j、k)のアドレスは次のように計算されます。
elementaddress = address + i * indexfactors[0] + j * indexfactors[1] + k * indexfactors[2]
2 次元配列の要素(i、j)のアドレスは、次のように計算されます。
elementaddress = address + i * indexfactors[0] + j * indexfactors[1]
1 次元配列の要素(i)のアドレスは次のように計算されます。
elementaddress = address + i * indexfactors[0]