2.3. Section 3: Declarations and Types

The information in this section relates to Annex M paragraphs 12 to 20.

Q: M.(12)
Q: M.(13)
Q: M.(14)
Q: M.(15)
Q: M.(16)
Q: M.(17)
Q: M.(18)
Q: M.(19)
Q: M.(20)

Q: M.(12)

The sequence of characters of the value returned by S'Image when some of the graphic characters of S'Wide_Image are not defined in Character. See 3.5(37).

A: The attribute Image is not supported (value is unconstrained).

Q: M.(13)

The predefined integer types declared in Standard. See 3.5.4(25).

A: ERC32 Ada provides five predefined Integer types:

Short_Short_Integer
Short_Integer
Integer
Long_Integer
Long_Long_Integer

Table 2-1 gives the values of the attributes Size, First and Last for these types.

Table 2-1. Attributes of the Predefined Integer Types

Type Size First Last
Short_Short_Integer 8 -27 27-1
Short_Integer 16 -215 215-1
Integer 32 -231 231-1
Long_Integer 32 -231 231-1
Long_Long_Integer 64 -263 263-1

Q: M.(14)

Any non-standard integer types and the operators defined for them. See 3.5.4(26).

A: There are no non-standard integer types.

Q: M.(15)

Any non-standard real types and the operators defined for them. See 3.5.6(8).

A: There are no non-standard real types.

Q: M.(16)

What combinations of requested decimal precision and range are supported for floating point types. See 3.5.7(7).

A: The precision and range is as defined by the IEEE standard.

Q: M.(17)

The predefined floating point types declared in Standard. See 3.5.7(16).

A: ERC32 Ada provides four predefined floating point types:

Short_Float
Float
Long_Float
Long_Long_Float

The types Short_Float and Float are represented by the 32-bit single precision IEEE format; the types Long_Float and Long_Long_Float are represented by the 64-bit IEEE format.

Table 2-2 gives the values of the attributes Size and Digits for the predefined floating-point types.

Table 2-2. Basic Attributes of Floating Point Types

Attribute Short_Float Float Long_Float Long_Long_Float
Size 32 32 64 64
Digits 6 6 15 15
Machine_Radix 2 2 2 2
Machine_Mantissa 23 23 52 52
Machine_Emax 128 128 1024 1024
Machine_Emin -125 -125 -1021 -1021
Machine_Rounds False False False False
Machine_Overflows False False False False

Q: M.(18)

The small of an ordinary fixed point type. See 3.5.9(8).

A: Fine_Delta is 2.0**(-63).

Q: M.(19)

What combinations of small, range, and digits are supported for fixed point types. See 3.5.9(10).

A: Any combinations are permitted that do not result in a small less than Fine_Delta and do not result in a mantissa larger than 63 bits.

Q: M.(20)

The result of Tags.Expanded_Name for types declared within an unnamed block_statement. See 3.9(10).

A: The function Ada.Tags.Expanded_Name is prohibited by the restriction No_Implicit_Heap_Allocations.