パラメータ記述構造

インターフェイスでは、parameter_description という名前の構造に Natural サブプログラムまたはメソッドのパラメータに関する情報が提供されています。この構造は、ヘッダーファイル natuser.h で定義されています。このファイルは、ディレクトリ <install-dir>/natural/samples/sysexnni に含まれています。

parameter_description 構造の配列は、nni_callnat および同様の関数へのコールごとにインターフェイスに渡されます。parameter_description 構造は、関数 nni_get_parm_info を使用して、パラメータセット内のパラメータから作成されます。

この構造の関連要素には、次の情報が含まれています。この表にリストされていない要素は、すべて内部でのみ使用されます。

Format 要素名 内容
void* address パラメータ値のアドレス。再割り当てや解放はできません。address 要素は、ダイナミック変数の配列および X-array に対しては NULL ポインタになります。この場合は、配列データ全体にアクセスすることはできず、パラメータアクセス関数 nni_get_parm を使用して要素ごとにアクセスすることのみが可能です。
int format パラメータの Natural データタイプ。詳細については、「Natural データタイプ」を参照してください。
int 長さ パラメータ値の 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 フラグ パラメータフラグ。「フラグ」を参照してください。
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]