Contents Index Search Previous Next
13.7 The Package System
For each implementation there is a library package
called System which includes the definitions of certain configuration-dependent
The following language-defined
library package exists:
package System is
type Name is implementation-defined-enumeration-type;
System_Name : constant Name := implementation-defined;
-- System-Dependent Named Numbers:
Min_Int : constant := root_integer'First;
Max_Int : constant := root_integer'Last;
Max_Binary_Modulus : constant := implementation-defined;
Max_Nonbinary_Modulus : constant := implementation-defined;
Max_Base_Digits : constant := root_real'Digits;
Max_Digits : constant := implementation-defined;
Max_Mantissa : constant := implementation-defined;
Fine_Delta : constant := implementation-defined;
Tick : constant := implementation-defined;
-- Storage-related Declarations:
type Address is implementation-defined;
Null_Address : constant Address;
Storage_Unit : constant := implementation-defined;
Word_Size : constant := implementation-defined * Storage_Unit;
Memory_Size : constant := implementation-defined;
-- Address Comparison:
function "<" (Left, Right : Address) return Boolean;
function "<="(Left, Right : Address) return Boolean;
function ">" (Left, Right : Address) return Boolean;
function ">="(Left, Right : Address) return Boolean;
function "=" (Left, Right : Address) return Boolean;
-- function "/=" (Left, Right : Address) return Boolean;
-- "/=" is implicitly defined
pragma Convention(Intrinsic, "<");
... -- and so on for all language-defined subprograms in this package
-- Other System-Dependent Declarations:
type Bit_Order is (High_Order_First, Low_Order_First);
Default_Bit_Order : constant Bit_Order;
-- Priority-related declarations (see D.1):
subtype Any_Priority is Integer range implementation-defined;
subtype Priority is Any_Priority range Any_Priority'First ..
subtype Interrupt_Priority is Any_Priority range Priority'Last+1 ..
Default_Priority : constant Priority :=
(Priority'First + Priority'Last)/2;
... -- not specified by the language
Name is an enumeration subtype. Values of type
Name are the names of alternative machine configurations handled by the
implementation. System_Name represents the current machine configuration.
The named numbers Fine_Delta and Tick are of
the type universal_real; the others are of the type universal_integer.
The meanings of
the named numbers are:
The smallest (most negative) value allowed for the expressions of a signed_integer_type_definition.
The largest (most positive) value allowed for the expressions of a signed_integer_type_definition.
A power of two such that it, and all lesser positive powers of two, are
allowed as the modulus of a modular_type_definition.
A value such that it, and all lesser positive integers, are allowed as
the modulus of a modular_type_definition.
The largest value allowed for the requested decimal precision in a floating_point_definition.
The largest value allowed for the requested decimal precision in a floating_point_definition
that has no real_range_specification.
Max_Digits is less than or equal to Max_Base_Digits.
The largest possible number of binary digits in the mantissa of machine
numbers of a user-defined ordinary fixed point type. (The mantissa is
defined in Annex G.)
The smallest delta allowed in an ordinary_fixed_point_definition
that has the real_range_specification
range -1.0 .. 1.0.
A period in seconds approximating the real time interval during which
the value of Calendar.Clock remains constant.
The number of bits per storage element.
The number of bits per word.
An implementation-defined value that is intended to reflect the memory
size of the configuration in storage elements.
Address is of a definite, nonlimited type. Address
represents machine addresses capable of addressing individual storage
elements. Null_Address is an address that is distinct from the address
of any object or program unit.
explanation of Bit_Order and Default_Bit_Order.
An implementation may add additional implementation-defined
declarations to package System and its children. However, it is usually
better for the implementation to provide additional functionality via
implementation-defined children of System. Package System may be declared
Address should be a private type.
14 There are also some
language-defined child packages of System defined elsewhere.
Contents Index Search Previous Next Legal