Prev | Up | Next | Back | Forward
TOC -- / --.-- / --.--.-- | Index | Search | Syntax | Help


13.7 The Package System -- TOC

(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
(23)
Max_Int
(24)
Max_Binary_Modulus
(25)
Max_Nonbinary_Modulus
(26)
Max_Base_Digits
(27)
Max_Digits
(28)
Max_Mantissa
(29)
Fine_Delta
(30)
Tick
(31)
Storage_Unit
(32)
Word_Size
(33)
Memory_Size
(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 of a private type.

(38)

Subclauses

  1. The Package System.Storage_Elements
  2. The Package System.Address_To_Access_Conversions


Prev | Up | Next | Back | Forward
TOC -- / --.-- / --.--.-- | Index | Search | Syntax | Help

Ada WWW Home -- Email comments, additions, corrections, gripes, kudos, etc. to:

Magnus Kempe -- Magnus.Kempe@di.epfl.ch
Copyright statement
Page last generated: 95-03-12