# Built-in data types¶

CertSAFE has several primitive numeric data types that are automatically available in every project:

• IntN: A signed two’s-complement integer type using N bits, where N is in the range 1 to 64 inclusive. For example, the type Int16 supports values from -32,768 to 32,767.
• UIntN: An unsigned integer type using N bits, where N is in the range 1 to 64 inclusive. For example, the type UInt16 supports values from 0 to 65,535.
• Float32: 32 bit floating point numbers conforming to IEEE 754.
• Float64: 64 bit floating point numbers conforming to IEEE 754.

In addition, CertSAFE’s standard library includes an enumeration data type Boolean which has the values False and True. The CertSAFE user interface offers special support for the Boolean data type in certain places, but this type otherwise behaves like an ordinary enumeration data type except for being automatically available in every project. The resource path of the Boolean type is CertSAFE/Boolean/Boolean.

Integer interval types are similar to the primitive integer data types, but they span user-defined ranges instead of fixed powers of 2. See the article on integer interval types for more details.

## Type classes¶

A type class is a collection of data types with particular properties. A data type can be in multiple type classes. Often, a component will restrict its inputs and outputs to types in a particular type class instead of a single data type. The following type classes are built into CertSAFE:

Type class Description Included data types
Contains real values Any data type whose values include a subset of the real numbers. all primitive types and all integer interval types
Equatable Any data type that can have its values compared for equality. all data types
Fixed-size integer Any binary integer data type whose bit size is fixed. At the moment, there are no non-fixed size binary integer data types. Note that integer interval types are not considered to be binary integer types and are therefore excluded from this type class. IntN and UIntN for all N
Floating point Any data type that represents floating point numbers. Float32 and Float64
Has default

Any data type that has a default value. Default values are used for the initial values of One Frame Delay components that have no explicit initial value specified.

For primitive data types the default value is 0. For the built-in enumeration data type Boolean, the default value is False. Integer interval types and user-defined enumation types do not have default values.

all primitive types and the built-in Boolean type
Integer Any binary integer data type. Note that integer interval types are not considered to be binary integer types and are therefore excluded from this type class. IntN and UIntN for all N
Numeric Any data type that supports arithmetic and other numeric computations. Note that integer interval types do not support arithmetic and are therefore excluded from this type class. all primitive types
Ordered Any data type where an ordering is defined. Note that enumeration types do not implement this type class, so that any order-dependent operations on them have to be explicit in a model (perhaps using a case table). all primitive types and all integer interval types
Real-valued Any data type whose values are a subset of the real numbers. Floating point data types are included, although the values Infinity, -Infinity, and NaN do not represent real numbers. all primitive types and all integer interval types