Next: , Previous: Types and fields, Up: %typedef and %type


10.3 Escalar types

The rec format supports the declaration of fields of the following escalar types: integer numbers, ranges and reals.

Signed integers are supported by using the integer declaration:

     %typedef: Id_t int

Given that declaration, Fields of type Id_t must contain integers, that may be negative. Hexadecimal values can be written using the 0x prefix, and octal values use an extra 0. Valid examples are:

     %type: Id Id_t
     
     Id: 100
     Id: -23
     Id: -0xFF
     Id: 020

Sometimes it is desirable to reduce the range of integers allowed in a field. That can be achieved by using a range type declaration:

     %typedef: Percentage_t range 0 100

Note that it is possible to omit the minimum index in ranges. In that case it is implicitly zero:

     %typedef: Percentage_t range 100

Hexadecimal and octal numbers can be used to specify the limits in a range. This helps to define scalar types whose natural base is not ten, like for example:

     %typedef: Address_t range 0x0000 0xFFFF
     %typedef: Perms_t range 755

Real fields can be declared with the real type specifier. A wide range of real numbers can be represented this way, only limited by the underlying floating point representation. For example:

     %typedef: Longitude_t real

Examples of fields of type real:

     %rec: Rectangle
     %typedef: Longitude_t real
     %type: Width  Longitude_t
     %type: Height Longitude_t
     
     Width: 25.01
     Height: 10