Contents   Index   Search   Previous   Next
 13.7 The Package System
1
   For each implementation there is a library package
called System which includes the definitions of certain configuration-dependent
characteristics. 
Static Semantics
2
   The following language-defined
library package exists: 
3
package System is
   pragma Preelaborate(System); 
4
   type Name is implementation-defined-enumeration-type;
   System_Name : constant Name := implementation-defined; 
5
   -- System-Dependent Named Numbers:
6
   Min_Int               : constant := root_integer'First;
   Max_Int               : constant := root_integer'Last; 
7
   Max_Binary_Modulus    : constant := implementation-defined;
   Max_Nonbinary_Modulus : constant := implementation-defined; 
8
   Max_Base_Digits       : constant := root_real'Digits;
   Max_Digits            : constant := implementation-defined; 
9
   Max_Mantissa          : constant := implementation-defined;
   Fine_Delta            : constant := implementation-defined; 
10
   Tick                  : constant := implementation-defined; 
11
   -- Storage-related Declarations:
12
   type Address is implementation-defined;
   Null_Address : constant Address; 
13
   Storage_Unit : constant := implementation-defined;
   Word_Size    : constant := implementation-defined * Storage_Unit;
   Memory_Size  : constant := implementation-defined; 
14
   -- 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 
15
   -- Other System-Dependent Declarations:
   type Bit_Order is (High_Order_First, Low_Order_First);
   Default_Bit_Order : constant Bit_Order; 
16
   -- Priority-related declarations (see D.1):
   subtype Any_Priority is Integer range implementation-defined;
   subtype Priority is Any_Priority range Any_Priority'First ..
             implementation-defined;
   subtype Interrupt_Priority is Any_Priority range Priority'Last+1 ..
             Any_Priority'Last; 
17
   Default_Priority : constant Priority :=
             (Priority'First + Priority'Last)/2; 
18
private
   ... -- not specified by the language
end System;
19
    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.
20
    The named numbers Fine_Delta and Tick are of
the type universal_real; the others are of the type universal_integer.
21
    The meanings of
the named numbers are: 
22
-     Min_Int 
 - 
The smallest (most negative) value allowed for the expressions of a signed_integer_type_definition.
 
23
-     Max_Int 
 - 
The largest (most positive) value allowed for the expressions of a signed_integer_type_definition.
 
24
-     Max_Binary_Modulus 
 - 
A power of two such that it, and all lesser positive powers of two, are
allowed as the modulus of a modular_type_definition.
 
25
-     Max_Nonbinary_Modulus 
 - 
A value such that it, and all lesser positive integers, are allowed as
the modulus of a modular_type_definition.
 
26
-     Max_Base_Digits 
 - 
The largest value allowed for the requested decimal precision in a floating_point_definition.
 
27
-     Max_Digits 
 - 
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.
 
28
-     Max_Mantissa 
 - 
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.)
 
29
-     Fine_Delta 
 - 
The smallest delta allowed in an ordinary_fixed_point_definition
that has the real_range_specification
range -1.0 .. 1.0. 
 
30
-     Tick 
 - 
A period in seconds approximating the real time interval during which
the value of Calendar.Clock remains constant. 
 
31
-     Storage_Unit 
 - 
The number of bits per storage element.
 
32
-     Word_Size 
 - 
The number of bits per word.
 
33
-     Memory_Size 
 - 
An implementation-defined value that is intended to reflect the memory
size of the configuration in storage elements. 
 
34
    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. 
 
35
    See 
13.5.3 for an
explanation of Bit_Order and Default_Bit_Order. 
 
Implementation Permissions
36
    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
pure. 
Implementation Advice
37
    Address should be a private type. 
38
14  There are also some
language-defined child packages of System defined elsewhere. 
Contents   Index   Search   Previous   Next   Legal