Classes of reusable types have private specification documents. Types have a unique name. Types may have a fixed bit-width. Types may have an alias. For each type exist reference types and array types. The reference or the array may have its own alias. If that alias is not used, then the reference depth or the array size of the corresponding asset is used to construct the complete type.
A reference is a pointer to an instance of a class. A reference can be a reference to another reference. The type of a reference is the same as the type of the target, but a reference has a non-zero reference depth. In a given implementation platform, the bit-width of direct references is fixed. Indirect references may have a complex structure and can reach over system bounds. A URI is a general format for a class of indirect references. References exist in two forms. Open references are placeholders for references. These references are atomic attributes. Actual references are the values of open references. These values are always derived characteristics. An actual reference depends on its target.
Arrays of instances of classes have a size. This is an integer number that indicates the number of elements in an array. Multidimensional arrays are arrays of arrays. The type of an array is the same as the type of its elements, but non-empty arrays have a non-zero size.
An asset cannot at the same time have a non zero reference depth and a size that is higher than one.
Plain types are formed by classes of unstructured assets, that are treated and that behave in a similar way. In a given implementation platform, all plain types have a fixed bit-width that varies with the kind of type. The system builder uses the ‘alias’ to translate the plain type into a program language type. It means that a separate alias may be present for each supported program language. If no alias is given, the system configuration tool may choose to use ‘void’ or ‘int’ as the language type. ‘void’ is used for assets that have no alias and a non-zero reference depth.
Structured types are ordered combinations of other types.
Enumeration types specify assets that can have a limited set of integer values. Each of these values is accompanied by a name. If not further specified, the value of the first selection equals zero and the value of any other selection is the increment of the former selection.
The equivalence classes of higher-level design elements coincide with the types of these elements.