Parameter Description Structure

#### Search Results

Search

# Parameter Description Structure

The interface provides information about the parameters of a Natural subprogram or method in a structure named `parameter_description`. The structure is defined in the header file natuser.h. This file is contained in the directory <install-dir>/natural/samples/sysexnni.

An array of `parameter_description` structures is passed to the interface with each call to `nni_callnat` and similar functions. A `parameter_description` structure is created from a parameter in a parameter set using the function `nni_get_parm_info`.

The relevant elements of the structure contain the following information. All elements not listed in this table are for internal use only.

Format | Element Name | Content
--- | --- | ---
void* | address | Address of the parameter value. Must not be reallocated or freed. The address element is a null pointer for arrays of dynamic variables and for x-arrays. In these cases, the array data cannot be accessed as a whole, but can only be accessed elementwise through the parameter access function `nni_get_parm`.
int | format | Natural data type of the parameter. Refer to Natural Data Types for further information.
int | length | Natural length of the parameter value. In the case of the data types `NNI_TYPE_ALPHA` and `NNI_TYPE_UNICODE`, the number of characters. In the case of the data types `NNI_TYPE_PACK` and `NNI_TYPE_NUM`, the number of digits before the decimal character. In the case of an array, the length of a single occurrence. In the case of an array of dynamic variables, the length is indicated with 0. The length of an individual occurrence must then be determined with the function `nni_get_parm_array_length`.
int | precision | In the case of the data types `NNI_TYPE_PACK` and `NNI_TYPE_NUM` the number of digits after the decimal character, 0 otherwise.
int | byte_length | Length of the parameter value in bytes. In the case of an array the byte length of a single occurrence. In the case of an array of dynamic variables the byte length is indicated with 0. The length of an individual occurrence must then be determined with the function `nni_get_parm_array_length`.
int | dimensions | Number of dimensions. 0 in the case of a scalar. The maximum number of dimensions is 3.
int | length_all | Total length of the parameter value in bytes. In the case of an array the byte length of the whole array. In the case of an array of dynamic variables the total length is indicated with 0. The length of an individual occurrence must then be determined with the function `nni_get_parm_array_length`.
int | flags | Parameter flags, see Flags.
int | occurrences[10] | Number of occurrences in each dimension. Only the first three occurrences are used.
int | indexfactors[10] | Array index factors for each dimension. Only the first three occurrences are used.

In the case of arrays with fixed bounds of variables with fixed length, the array contents can be accessed directly using the structure element `address`. In these cases the following applies:

- The address of the element (i,j,k) of a three dimensional array is computed as follows:

  elementaddress = address + i * indexfactors[0] + j * indexfactors[1] + k * indexfactors[2]

- The address of the element (i,j) of a two dimensional array is computed as follows:

  elementaddress = address + i * indexfactors[0] + j * indexfactors[1]

- The address of the element (i) of a one dimensional array is computed as follows:

  elementaddress = address + i * indexfactors[0]